Fixposition SDK 0.0.0-heads/main-0-g4d935a0
Collection of c++ libraries and apps for use with Fixposition products on Linux
Loading...
Searching...
No Matches
ubx.hpp
Go to the documentation of this file.
1// clang-format off
2/**
3 * \verbatim
4 * ___ ___
5 * \ \ / /
6 * \ \/ / Copyright (c) Fixposition AG (www.fixposition.com) and contributors
7 * / /\ \ License: see the LICENSE file
8 * /__/ \__\
9 *
10 * Based on work by flipflip (https://github.com/phkehl)
11 * The information on message structures, IDs, descriptions etc. in this file are from publicly available data, such as:
12 * - u-blox ZED-F9P Interface Description (HPG 1.50) (https://www.u-blox.com/en/docs/UBXDOC-963802114-12815), copyright (c) 2024 u-blox AG
13 * - u-blox ZED-F9T Interface Description (R02) (https://www.u-blox.com/en/docs/UBX-19003606), copyright (c) 2020 u-blox AG
14 * - u-blox NEO-M9N Interface description (SPG 4.04) (https://www.u-blox.com/en/docs/UBX-19035940), copyright (c) 2020 u-blox AG
15 * - u-blox ZED-F9R Interface description (HPS 1.20) (https://www.u-blox.com/en/docs/UBX-19056845), copyright (c) 2020 u-blox AG
16 * - u-blox F9 HPS 1.21 Interface Description (ZEF-F9R) (https://www.u-blox.com/en/docs/UBX-21019746), copyright (c) 2021 u-blox AG
17 * - u-center 20.01, copyright (c) 2020 u-blox AG
18 * \endverbatim
19 *
20 * @file
21 * @brief Fixposition SDK: Parser UBX routines and types
22 *
23 * @page FPSDK_COMMON_PARSER_UBX Parser UBX routines and types
24 *
25 * **API**: fpsdk_common/parser/ubx.hpp and fpsdk::common::parser::ubx
26 *
27 */
28// clang-format on
29#ifndef __FPSDK_COMMON_PARSER_UBX_HPP__
30#define __FPSDK_COMMON_PARSER_UBX_HPP__
31
32/* LIBC/STL */
33#include <array>
34#include <cmath>
35#include <cstdint>
36#include <cstring>
37#include <string>
38#include <vector>
39
40/* EXTERNAL */
41
42/* PACKAGE */
43#include "../types.hpp"
44
45namespace fpsdk {
46namespace common {
47namespace parser {
48/**
49 * @brief Parser UBX routines and types
50 */
51namespace ubx {
52/* ****************************************************************************************************************** */
53
54// Doxygen is easily confused.. :-/
55//! Message struct that must be packed
56#ifndef _DOXYGEN_
57# define UBX_PACKED __attribute__((packed))
58#else
59# define UBX_PACKED /* packed */
60#endif
61
62static constexpr std::size_t UBX_FRAME_SIZE = 8; //!< Size (in bytes) of UBX frame
63static constexpr std::size_t UBX_HEAD_SIZE = 6; //!< Size of UBX frame header
64static constexpr uint8_t UBX_SYNC_1 = 0xb5; //!< UBX frame sync char 1
65static constexpr uint8_t UBX_SYNC_2 = 0x62; //!< UBX frame sync char 2
66
67/**
68 * @brief Get class ID from message
69 *
70 * @param[in] msg Pointer to the start of the message
71 *
72 * @note No check on the data provided is done. This is meant for use as a helper in other functions. Checks on the
73 * \c msg and its data should be carried out there.
74 *
75 * @returns the UBX class ID
76 */
77constexpr uint8_t UbxClsId(const uint8_t* msg)
78{
79 return (((uint8_t*)(msg))[2]);
80}
81
82/**
83 * @brief Get message ID from message
84 *
85 * @param[in] msg Pointer to the start of the message
86 *
87 * @note No check on the data provided is done. This is meant for use as a helper in other functions. Checks on the
88 * \c msg and its data should be carried out there.
89 *
90 * @returns the UBX message ID
91 */
92constexpr uint8_t UbxMsgId(const uint8_t* msg)
93{
94 return (((uint8_t*)(msg))[3]);
95}
96
97/**
98 * @brief Get UBX message name
99 *
100 * Generates a name (string) in the form "UBX-CLSID-MSGID", where CLSID and MSGID are suitable stringifications of the
101 * class ID and message ID if known (for example, "UBX-NAV-PVT", respectively %02X formatted IDs if unknown (for
102 * example, "UBX-NAV-F4" or "UBX-A0-B1").
103 *
104 * @param[out] name String to write the name to
105 * @param[in] size Size of \c name (incl. nul termination)
106 * @param[in] msg Pointer to the UBX message
107 * @param[in] msg_size Size of the \c msg
108 *
109 * @note No check on the data provided is done. The caller must ensure that the data is a valid UBX message.
110 *
111 * @returns true if message name was generated, false if \c name buffer was too small
112 */
113bool UbxGetMessageName(char* name, const std::size_t size, const uint8_t* msg, const std::size_t msg_size);
114
115/**
116 * @brief Get UBX message info
117 *
118 * This stringifies the content of some UBX messages, for debugging.
119 *
120 * @param[out] info String to write the info to
121 * @param[in] size Size of \c name (incl. nul termination)
122 * @param[in] msg Pointer to the UBX message
123 * @param[in] msg_size Size of the \c msg
124 *
125 * @note No check on the data provided is done. The caller must ensure that the data is a valid UBX message.
126 *
127 * @returns true if message info was generated (even if info is empty), false if \c name buffer was too small
128 */
129bool UbxGetMessageInfo(char* info, const std::size_t size, const uint8_t* msg, const std::size_t msg_size);
130
131/**
132 * @brief Make a UBX message
133 *
134 * @param[out] msg The message frame
135 * @param[in] cls_id Class ID
136 * @param[in] msg_id Message ID
137 * @param[in] payload The message payload (up to MAX_UBX_SIZE - UBX_FRAME_SIZE bytes, can be empty)
138 *
139 * @returns true if the message was successfully constructed (\c msg now contains the message),
140 * false if failed contructing the message (payload too large)
141 */
143 std::vector<uint8_t>& msg, const uint8_t cls_id, const uint8_t msg_id, const std::vector<uint8_t>& payload);
144
145/**
146 * @brief Make a UBX message
147 *
148 * @param[out] msg The message frame
149 * @param[in] cls_id Class ID
150 * @param[in] msg_id Message ID
151 * @param[in] payload The message payload (up to MAX_UBX_SIZE - UBX_FRAME_SIZE bytes, can be NULL)
152 * @param[in] payload_size Size of the payload (up to MAX_UBX_SIZE - UBX_FRAME_SIZE, can be 0, even if payload is not
153 * NULL)
154 *
155 * @returns true if the message was successfully constructed (\c msg now contains the message),
156 * false if failed contructing the message (payload too large, bad arguments)
157 */
158bool UbxMakeMessage(std::vector<uint8_t>& msg, const uint8_t cls_id, const uint8_t msg_id, const uint8_t* payload,
159 const std::size_t payload_size);
160
161/**
162 * @brief Stringify UBX-RXM-SFRBX, for debugging
163 *
164 * @param[out] info String to format
165 * @param[in] size Maximum size of string (incl. nul termination)
166 * @param[in] msg The UBX-RXM-SFRBX message
167 * @param[in] msg_size Size of the UBX-RXM-SFRBX message
168 *
169 * @returns the length of the string generated (excl. nul termination)
170 */
171std::size_t UbxRxmSfrbxInfo(char* info, const std::size_t size, const uint8_t* msg, const std::size_t msg_size);
172
173/**
174 * @brief Stringify UBX-MON-VER message (software version and module name)
175 *
176 * @param[out] str String to format
177 * @param[in] size Maximum size of string (incl. nul termination)
178 * @param[in] msg The UBX-MON-VER message
179 * @param[in] msg_size Size of the UBX-MON-VER message
180 *
181 * @returns the length of the string generated (excl. nul termination)
182 */
183std::size_t UbxMonVerToVerStr(char* str, const std::size_t size, const uint8_t* msg, const std::size_t msg_size);
184
185/**
186 * @name UBX classes and messages (names and IDs)
187 *
188 * @{
189 */
190// clang-format off
191// @fp_codegen_begin{FPSDK_COMMON_PARSER_UBX_CLASSES}
192static constexpr uint8_t UBX_ACK_CLSID = 0x05; //!< UBX-ACK class ID
193static constexpr const char* UBX_ACK_STRID = "UBX-ACK"; //!< UBX-ACK class name
194static constexpr uint8_t UBX_CFG_CLSID = 0x06; //!< UBX-CFG class ID
195static constexpr const char* UBX_CFG_STRID = "UBX-CFG"; //!< UBX-CFG class name
196static constexpr uint8_t UBX_ESF_CLSID = 0x10; //!< UBX-ESF class ID
197static constexpr const char* UBX_ESF_STRID = "UBX-ESF"; //!< UBX-ESF class name
198static constexpr uint8_t UBX_INF_CLSID = 0x04; //!< UBX-INF class ID
199static constexpr const char* UBX_INF_STRID = "UBX-INF"; //!< UBX-INF class name
200static constexpr uint8_t UBX_LOG_CLSID = 0x21; //!< UBX-LOG class ID
201static constexpr const char* UBX_LOG_STRID = "UBX-LOG"; //!< UBX-LOG class name
202static constexpr uint8_t UBX_MGA_CLSID = 0x13; //!< UBX-MGA class ID
203static constexpr const char* UBX_MGA_STRID = "UBX-MGA"; //!< UBX-MGA class name
204static constexpr uint8_t UBX_MON_CLSID = 0x0a; //!< UBX-MON class ID
205static constexpr const char* UBX_MON_STRID = "UBX-MON"; //!< UBX-MON class name
206static constexpr uint8_t UBX_NAV_CLSID = 0x01; //!< UBX-NAV class ID
207static constexpr const char* UBX_NAV_STRID = "UBX-NAV"; //!< UBX-NAV class name
208static constexpr uint8_t UBX_NAV2_CLSID = 0x29; //!< UBX-NAV2 class ID
209static constexpr const char* UBX_NAV2_STRID = "UBX-NAV2"; //!< UBX-NAV2 class name
210static constexpr uint8_t UBX_RXM_CLSID = 0x02; //!< UBX-RXM class ID
211static constexpr const char* UBX_RXM_STRID = "UBX-RXM"; //!< UBX-RXM class name
212static constexpr uint8_t UBX_SEC_CLSID = 0x27; //!< UBX-SEC class ID
213static constexpr const char* UBX_SEC_STRID = "UBX-SEC"; //!< UBX-SEC class name
214static constexpr uint8_t UBX_TIM_CLSID = 0x0d; //!< UBX-TIM class ID
215static constexpr const char* UBX_TIM_STRID = "UBX-TIM"; //!< UBX-TIM class name
216static constexpr uint8_t UBX_UPD_CLSID = 0x09; //!< UBX-UPD class ID
217static constexpr const char* UBX_UPD_STRID = "UBX-UPD"; //!< UBX-UPD class name
218static constexpr uint8_t UBX_NMEA_CLSID = 0xf0; //!< UBX-NMEA class ID
219static constexpr const char* UBX_NMEA_STRID = "UBX-NMEA"; //!< UBX-NMEA class name
220static constexpr uint8_t UBX_RTCM3_CLSID = 0xf5; //!< UBX-RTCM3 class ID
221static constexpr const char* UBX_RTCM3_STRID = "UBX-RTCM3"; //!< UBX-RTCM3 class name
222// @fp_codegen_end{FPSDK_COMMON_PARSER_UBX_CLASSES}
223// clang-format on
224
225// clang-format off
226// @fp_codegen_begin{FPSDK_COMMON_PARSER_UBX_MESSAGES}
227static constexpr uint8_t UBX_ACK_ACK_MSGID = 0x01; //!< UBX-ACK-ACK message ID
228static constexpr const char* UBX_ACK_ACK_STRID = "UBX-ACK-ACK"; //!< UBX-ACK-ACK message name
229static constexpr uint8_t UBX_ACK_NAK_MSGID = 0x00; //!< UBX-ACK-NAK message ID
230static constexpr const char* UBX_ACK_NAK_STRID = "UBX-ACK-NAK"; //!< UBX-ACK-NAK message name
231static constexpr uint8_t UBX_CFG_CFG_MSGID = 0x09; //!< UBX-CFG-CFG message ID
232static constexpr const char* UBX_CFG_CFG_STRID = "UBX-CFG-CFG"; //!< UBX-CFG-CFG message name
233static constexpr uint8_t UBX_CFG_PWR_MSGID = 0x57; //!< UBX-CFG-PWR message ID
234static constexpr const char* UBX_CFG_PWR_STRID = "UBX-CFG-PWR"; //!< UBX-CFG-PWR message name
235static constexpr uint8_t UBX_CFG_RST_MSGID = 0x04; //!< UBX-CFG-RST message ID
236static constexpr const char* UBX_CFG_RST_STRID = "UBX-CFG-RST"; //!< UBX-CFG-RST message name
237static constexpr uint8_t UBX_CFG_VALDEL_MSGID = 0x8c; //!< UBX-CFG-VALDEL message ID
238static constexpr const char* UBX_CFG_VALDEL_STRID = "UBX-CFG-VALDEL"; //!< UBX-CFG-VALDEL message name
239static constexpr uint8_t UBX_CFG_VALGET_MSGID = 0x8b; //!< UBX-CFG-VALGET message ID
240static constexpr const char* UBX_CFG_VALGET_STRID = "UBX-CFG-VALGET"; //!< UBX-CFG-VALGET message name
241static constexpr uint8_t UBX_CFG_VALSET_MSGID = 0x8a; //!< UBX-CFG-VALSET message ID
242static constexpr const char* UBX_CFG_VALSET_STRID = "UBX-CFG-VALSET"; //!< UBX-CFG-VALSET message name
243static constexpr uint8_t UBX_ESF_ALG_MSGID = 0x14; //!< UBX-ESF-ALG message ID
244static constexpr const char* UBX_ESF_ALG_STRID = "UBX-ESF-ALG"; //!< UBX-ESF-ALG message name
245static constexpr uint8_t UBX_ESF_INS_MSGID = 0x15; //!< UBX-ESF-INS message ID
246static constexpr const char* UBX_ESF_INS_STRID = "UBX-ESF-INS"; //!< UBX-ESF-INS message name
247static constexpr uint8_t UBX_ESF_MEAS_MSGID = 0x02; //!< UBX-ESF-MEAS message ID
248static constexpr const char* UBX_ESF_MEAS_STRID = "UBX-ESF-MEAS"; //!< UBX-ESF-MEAS message name
249static constexpr uint8_t UBX_ESF_RAW_MSGID = 0x03; //!< UBX-ESF-RAW message ID
250static constexpr const char* UBX_ESF_RAW_STRID = "UBX-ESF-RAW"; //!< UBX-ESF-RAW message name
251static constexpr uint8_t UBX_ESF_STATUS_MSGID = 0x10; //!< UBX-ESF-STATUS message ID
252static constexpr const char* UBX_ESF_STATUS_STRID = "UBX-ESF-STATUS"; //!< UBX-ESF-STATUS message name
253static constexpr uint8_t UBX_INF_DEBUG_MSGID = 0x04; //!< UBX-INF-DEBUG message ID
254static constexpr const char* UBX_INF_DEBUG_STRID = "UBX-INF-DEBUG"; //!< UBX-INF-DEBUG message name
255static constexpr uint8_t UBX_INF_ERROR_MSGID = 0x00; //!< UBX-INF-ERROR message ID
256static constexpr const char* UBX_INF_ERROR_STRID = "UBX-INF-ERROR"; //!< UBX-INF-ERROR message name
257static constexpr uint8_t UBX_INF_NOTICE_MSGID = 0x02; //!< UBX-INF-NOTICE message ID
258static constexpr const char* UBX_INF_NOTICE_STRID = "UBX-INF-NOTICE"; //!< UBX-INF-NOTICE message name
259static constexpr uint8_t UBX_INF_TEST_MSGID = 0x03; //!< UBX-INF-TEST message ID
260static constexpr const char* UBX_INF_TEST_STRID = "UBX-INF-TEST"; //!< UBX-INF-TEST message name
261static constexpr uint8_t UBX_INF_WARNING_MSGID = 0x01; //!< UBX-INF-WARNING message ID
262static constexpr const char* UBX_INF_WARNING_STRID = "UBX-INF-WARNING"; //!< UBX-INF-WARNING message name
263static constexpr uint8_t UBX_LOG_CREATE_MSGID = 0x07; //!< UBX-LOG-CREATE message ID
264static constexpr const char* UBX_LOG_CREATE_STRID = "UBX-LOG-CREATE"; //!< UBX-LOG-CREATE message name
265static constexpr uint8_t UBX_LOG_ERASE_MSGID = 0x03; //!< UBX-LOG-ERASE message ID
266static constexpr const char* UBX_LOG_ERASE_STRID = "UBX-LOG-ERASE"; //!< UBX-LOG-ERASE message name
267static constexpr uint8_t UBX_LOG_FINDTIME_MSGID = 0x0e; //!< UBX-LOG-FINDTIME message ID
268static constexpr const char* UBX_LOG_FINDTIME_STRID = "UBX-LOG-FINDTIME"; //!< UBX-LOG-FINDTIME message name
269static constexpr uint8_t UBX_LOG_INFO_MSGID = 0x08; //!< UBX-LOG-INFO message ID
270static constexpr const char* UBX_LOG_INFO_STRID = "UBX-LOG-INFO"; //!< UBX-LOG-INFO message name
271static constexpr uint8_t UBX_LOG_RETR_MSGID = 0x09; //!< UBX-LOG-RETR message ID
272static constexpr const char* UBX_LOG_RETR_STRID = "UBX-LOG-RETR"; //!< UBX-LOG-RETR message name
273static constexpr uint8_t UBX_LOG_RETRPOS_MSGID = 0x0b; //!< UBX-LOG-RETRPOS message ID
274static constexpr const char* UBX_LOG_RETRPOS_STRID = "UBX-LOG-RETRPOS"; //!< UBX-LOG-RETRPOS message name
275static constexpr uint8_t UBX_LOG_RETRPOSX_MSGID = 0x0f; //!< UBX-LOG-RETRPOSX message ID
276static constexpr const char* UBX_LOG_RETRPOSX_STRID = "UBX-LOG-RETRPOSX"; //!< UBX-LOG-RETRPOSX message name
277static constexpr uint8_t UBX_LOG_RETRSTR_MSGID = 0x0d; //!< UBX-LOG-RETRSTR message ID
278static constexpr const char* UBX_LOG_RETRSTR_STRID = "UBX-LOG-RETRSTR"; //!< UBX-LOG-RETRSTR message name
279static constexpr uint8_t UBX_LOG_STR_MSGID = 0x04; //!< UBX-LOG-STR message ID
280static constexpr const char* UBX_LOG_STR_STRID = "UBX-LOG-STR"; //!< UBX-LOG-STR message name
281static constexpr uint8_t UBX_MGA_ACK_MSGID = 0x60; //!< UBX-MGA-ACK message ID
282static constexpr const char* UBX_MGA_ACK_STRID = "UBX-MGA-ACK"; //!< UBX-MGA-ACK message name
283static constexpr uint8_t UBX_MGA_BDS_MSGID = 0x03; //!< UBX-MGA-BDS message ID
284static constexpr const char* UBX_MGA_BDS_STRID = "UBX-MGA-BDS"; //!< UBX-MGA-BDS message name
285static constexpr uint8_t UBX_MGA_DBD_MSGID = 0x80; //!< UBX-MGA-DBD message ID
286static constexpr const char* UBX_MGA_DBD_STRID = "UBX-MGA-DBD"; //!< UBX-MGA-DBD message name
287static constexpr uint8_t UBX_MGA_GAL_MSGID = 0x02; //!< UBX-MGA-GAL message ID
288static constexpr const char* UBX_MGA_GAL_STRID = "UBX-MGA-GAL"; //!< UBX-MGA-GAL message name
289static constexpr uint8_t UBX_MGA_GLO_MSGID = 0x06; //!< UBX-MGA-GLO message ID
290static constexpr const char* UBX_MGA_GLO_STRID = "UBX-MGA-GLO"; //!< UBX-MGA-GLO message name
291static constexpr uint8_t UBX_MGA_GPS_MSGID = 0x00; //!< UBX-MGA-GPS message ID
292static constexpr const char* UBX_MGA_GPS_STRID = "UBX-MGA-GPS"; //!< UBX-MGA-GPS message name
293static constexpr uint8_t UBX_MGA_INI_MSGID = 0x40; //!< UBX-MGA-INI message ID
294static constexpr const char* UBX_MGA_INI_STRID = "UBX-MGA-INI"; //!< UBX-MGA-INI message name
295static constexpr uint8_t UBX_MGA_QZSS_MSGID = 0x05; //!< UBX-MGA-QZSS message ID
296static constexpr const char* UBX_MGA_QZSS_STRID = "UBX-MGA-QZSS"; //!< UBX-MGA-QZSS message name
297static constexpr uint8_t UBX_MON_COMMS_MSGID = 0x36; //!< UBX-MON-COMMS message ID
298static constexpr const char* UBX_MON_COMMS_STRID = "UBX-MON-COMMS"; //!< UBX-MON-COMMS message name
299static constexpr uint8_t UBX_MON_GNSS_MSGID = 0x28; //!< UBX-MON-GNSS message ID
300static constexpr const char* UBX_MON_GNSS_STRID = "UBX-MON-GNSS"; //!< UBX-MON-GNSS message name
301static constexpr uint8_t UBX_MON_HW_MSGID = 0x09; //!< UBX-MON-HW message ID
302static constexpr const char* UBX_MON_HW_STRID = "UBX-MON-HW"; //!< UBX-MON-HW message name
303static constexpr uint8_t UBX_MON_HW2_MSGID = 0x0b; //!< UBX-MON-HW2 message ID
304static constexpr const char* UBX_MON_HW2_STRID = "UBX-MON-HW2"; //!< UBX-MON-HW2 message name
305static constexpr uint8_t UBX_MON_HW3_MSGID = 0x37; //!< UBX-MON-HW3 message ID
306static constexpr const char* UBX_MON_HW3_STRID = "UBX-MON-HW3"; //!< UBX-MON-HW3 message name
307static constexpr uint8_t UBX_MON_IO_MSGID = 0x02; //!< UBX-MON-IO message ID
308static constexpr const char* UBX_MON_IO_STRID = "UBX-MON-IO"; //!< UBX-MON-IO message name
309static constexpr uint8_t UBX_MON_MSGPP_MSGID = 0x06; //!< UBX-MON-MSGPP message ID
310static constexpr const char* UBX_MON_MSGPP_STRID = "UBX-MON-MSGPP"; //!< UBX-MON-MSGPP message name
311static constexpr uint8_t UBX_MON_PATCH_MSGID = 0x27; //!< UBX-MON-PATCH message ID
312static constexpr const char* UBX_MON_PATCH_STRID = "UBX-MON-PATCH"; //!< UBX-MON-PATCH message name
313static constexpr uint8_t UBX_MON_RF_MSGID = 0x38; //!< UBX-MON-RF message ID
314static constexpr const char* UBX_MON_RF_STRID = "UBX-MON-RF"; //!< UBX-MON-RF message name
315static constexpr uint8_t UBX_MON_RXBUF_MSGID = 0x07; //!< UBX-MON-RXBUF message ID
316static constexpr const char* UBX_MON_RXBUF_STRID = "UBX-MON-RXBUF"; //!< UBX-MON-RXBUF message name
317static constexpr uint8_t UBX_MON_RXR_MSGID = 0x21; //!< UBX-MON-RXR message ID
318static constexpr const char* UBX_MON_RXR_STRID = "UBX-MON-RXR"; //!< UBX-MON-RXR message name
319static constexpr uint8_t UBX_MON_SPAN_MSGID = 0x31; //!< UBX-MON-SPAN message ID
320static constexpr const char* UBX_MON_SPAN_STRID = "UBX-MON-SPAN"; //!< UBX-MON-SPAN message name
321static constexpr uint8_t UBX_MON_SYS_MSGID = 0x39; //!< UBX-MON-SYS message ID
322static constexpr const char* UBX_MON_SYS_STRID = "UBX-MON-SYS"; //!< UBX-MON-SYS message name
323static constexpr uint8_t UBX_MON_TEMP_MSGID = 0x0e; //!< UBX-MON-TEMP message ID
324static constexpr const char* UBX_MON_TEMP_STRID = "UBX-MON-TEMP"; //!< UBX-MON-TEMP message name
325static constexpr uint8_t UBX_MON_TXBUF_MSGID = 0x08; //!< UBX-MON-TXBUF message ID
326static constexpr const char* UBX_MON_TXBUF_STRID = "UBX-MON-TXBUF"; //!< UBX-MON-TXBUF message name
327static constexpr uint8_t UBX_MON_VER_MSGID = 0x04; //!< UBX-MON-VER message ID
328static constexpr const char* UBX_MON_VER_STRID = "UBX-MON-VER"; //!< UBX-MON-VER message name
329static constexpr uint8_t UBX_NAV_ATT_MSGID = 0x05; //!< UBX-NAV-ATT message ID
330static constexpr const char* UBX_NAV_ATT_STRID = "UBX-NAV-ATT"; //!< UBX-NAV-ATT message name
331static constexpr uint8_t UBX_NAV_CLOCK_MSGID = 0x22; //!< UBX-NAV-CLOCK message ID
332static constexpr const char* UBX_NAV_CLOCK_STRID = "UBX-NAV-CLOCK"; //!< UBX-NAV-CLOCK message name
333static constexpr uint8_t UBX_NAV_COV_MSGID = 0x36; //!< UBX-NAV-COV message ID
334static constexpr const char* UBX_NAV_COV_STRID = "UBX-NAV-COV"; //!< UBX-NAV-COV message name
335static constexpr uint8_t UBX_NAV_DOP_MSGID = 0x04; //!< UBX-NAV-DOP message ID
336static constexpr const char* UBX_NAV_DOP_STRID = "UBX-NAV-DOP"; //!< UBX-NAV-DOP message name
337static constexpr uint8_t UBX_NAV_EELL_MSGID = 0x3d; //!< UBX-NAV-EELL message ID
338static constexpr const char* UBX_NAV_EELL_STRID = "UBX-NAV-EELL"; //!< UBX-NAV-EELL message name
339static constexpr uint8_t UBX_NAV_EOE_MSGID = 0x61; //!< UBX-NAV-EOE message ID
340static constexpr const char* UBX_NAV_EOE_STRID = "UBX-NAV-EOE"; //!< UBX-NAV-EOE message name
341static constexpr uint8_t UBX_NAV_GEOFENCE_MSGID = 0x39; //!< UBX-NAV-GEOFENCE message ID
342static constexpr const char* UBX_NAV_GEOFENCE_STRID = "UBX-NAV-GEOFENCE"; //!< UBX-NAV-GEOFENCE message name
343static constexpr uint8_t UBX_NAV_HPPOSECEF_MSGID = 0x13; //!< UBX-NAV-HPPOSECEF message ID
344static constexpr const char* UBX_NAV_HPPOSECEF_STRID = "UBX-NAV-HPPOSECEF"; //!< UBX-NAV-HPPOSECEF message name
345static constexpr uint8_t UBX_NAV_HPPOSLLH_MSGID = 0x14; //!< UBX-NAV-HPPOSLLH message ID
346static constexpr const char* UBX_NAV_HPPOSLLH_STRID = "UBX-NAV-HPPOSLLH"; //!< UBX-NAV-HPPOSLLH message name
347static constexpr uint8_t UBX_NAV_ODO_MSGID = 0x09; //!< UBX-NAV-ODO message ID
348static constexpr const char* UBX_NAV_ODO_STRID = "UBX-NAV-ODO"; //!< UBX-NAV-ODO message name
349static constexpr uint8_t UBX_NAV_ORB_MSGID = 0x34; //!< UBX-NAV-ORB message ID
350static constexpr const char* UBX_NAV_ORB_STRID = "UBX-NAV-ORB"; //!< UBX-NAV-ORB message name
351static constexpr uint8_t UBX_NAV_PL_MSGID = 0x62; //!< UBX-NAV-PL message ID
352static constexpr const char* UBX_NAV_PL_STRID = "UBX-NAV-PL"; //!< UBX-NAV-PL message name
353static constexpr uint8_t UBX_NAV_POSECEF_MSGID = 0x01; //!< UBX-NAV-POSECEF message ID
354static constexpr const char* UBX_NAV_POSECEF_STRID = "UBX-NAV-POSECEF"; //!< UBX-NAV-POSECEF message name
355static constexpr uint8_t UBX_NAV_POSLLH_MSGID = 0x02; //!< UBX-NAV-POSLLH message ID
356static constexpr const char* UBX_NAV_POSLLH_STRID = "UBX-NAV-POSLLH"; //!< UBX-NAV-POSLLH message name
357static constexpr uint8_t UBX_NAV_PVAT_MSGID = 0x17; //!< UBX-NAV-PVAT message ID
358static constexpr const char* UBX_NAV_PVAT_STRID = "UBX-NAV-PVAT"; //!< UBX-NAV-PVAT message name
359static constexpr uint8_t UBX_NAV_PVT_MSGID = 0x07; //!< UBX-NAV-PVT message ID
360static constexpr const char* UBX_NAV_PVT_STRID = "UBX-NAV-PVT"; //!< UBX-NAV-PVT message name
361static constexpr uint8_t UBX_NAV_RELPOSNED_MSGID = 0x3c; //!< UBX-NAV-RELPOSNED message ID
362static constexpr const char* UBX_NAV_RELPOSNED_STRID = "UBX-NAV-RELPOSNED"; //!< UBX-NAV-RELPOSNED message name
363static constexpr uint8_t UBX_NAV_RESETODO_MSGID = 0x10; //!< UBX-NAV-RESETODO message ID
364static constexpr const char* UBX_NAV_RESETODO_STRID = "UBX-NAV-RESETODO"; //!< UBX-NAV-RESETODO message name
365static constexpr uint8_t UBX_NAV_SAT_MSGID = 0x35; //!< UBX-NAV-SAT message ID
366static constexpr const char* UBX_NAV_SAT_STRID = "UBX-NAV-SAT"; //!< UBX-NAV-SAT message name
367static constexpr uint8_t UBX_NAV_SBAS_MSGID = 0x32; //!< UBX-NAV-SBAS message ID
368static constexpr const char* UBX_NAV_SBAS_STRID = "UBX-NAV-SBAS"; //!< UBX-NAV-SBAS message name
369static constexpr uint8_t UBX_NAV_SIG_MSGID = 0x43; //!< UBX-NAV-SIG message ID
370static constexpr const char* UBX_NAV_SIG_STRID = "UBX-NAV-SIG"; //!< UBX-NAV-SIG message name
371static constexpr uint8_t UBX_NAV_SLAS_MSGID = 0x42; //!< UBX-NAV-SLAS message ID
372static constexpr const char* UBX_NAV_SLAS_STRID = "UBX-NAV-SLAS"; //!< UBX-NAV-SLAS message name
373static constexpr uint8_t UBX_NAV_SOL_MSGID = 0x01; //!< UBX-NAV-SOL message ID
374static constexpr const char* UBX_NAV_SOL_STRID = "UBX-NAV-SOL"; //!< UBX-NAV-SOL message name
375static constexpr uint8_t UBX_NAV_STATUS_MSGID = 0x03; //!< UBX-NAV-STATUS message ID
376static constexpr const char* UBX_NAV_STATUS_STRID = "UBX-NAV-STATUS"; //!< UBX-NAV-STATUS message name
377static constexpr uint8_t UBX_NAV_SVIN_MSGID = 0x3b; //!< UBX-NAV-SVIN message ID
378static constexpr const char* UBX_NAV_SVIN_STRID = "UBX-NAV-SVIN"; //!< UBX-NAV-SVIN message name
379static constexpr uint8_t UBX_NAV_TIMEBDS_MSGID = 0x24; //!< UBX-NAV-TIMEBDS message ID
380static constexpr const char* UBX_NAV_TIMEBDS_STRID = "UBX-NAV-TIMEBDS"; //!< UBX-NAV-TIMEBDS message name
381static constexpr uint8_t UBX_NAV_TIMEGAL_MSGID = 0x25; //!< UBX-NAV-TIMEGAL message ID
382static constexpr const char* UBX_NAV_TIMEGAL_STRID = "UBX-NAV-TIMEGAL"; //!< UBX-NAV-TIMEGAL message name
383static constexpr uint8_t UBX_NAV_TIMEGLO_MSGID = 0x23; //!< UBX-NAV-TIMEGLO message ID
384static constexpr const char* UBX_NAV_TIMEGLO_STRID = "UBX-NAV-TIMEGLO"; //!< UBX-NAV-TIMEGLO message name
385static constexpr uint8_t UBX_NAV_TIMEGPS_MSGID = 0x20; //!< UBX-NAV-TIMEGPS message ID
386static constexpr const char* UBX_NAV_TIMEGPS_STRID = "UBX-NAV-TIMEGPS"; //!< UBX-NAV-TIMEGPS message name
387static constexpr uint8_t UBX_NAV_TIMELS_MSGID = 0x26; //!< UBX-NAV-TIMELS message ID
388static constexpr const char* UBX_NAV_TIMELS_STRID = "UBX-NAV-TIMELS"; //!< UBX-NAV-TIMELS message name
389static constexpr uint8_t UBX_NAV_TIMEQZSS_MSGID = 0x27; //!< UBX-NAV-TIMEQZSS message ID
390static constexpr const char* UBX_NAV_TIMEQZSS_STRID = "UBX-NAV-TIMEQZSS"; //!< UBX-NAV-TIMEQZSS message name
391static constexpr uint8_t UBX_NAV_TIMENAVIC_MSGID = 0x63; //!< UBX-NAV-TIMENAVIC message ID
392static constexpr const char* UBX_NAV_TIMENAVIC_STRID = "UBX-NAV-TIMENAVIC"; //!< UBX-NAV-TIMENAVIC message name
393static constexpr uint8_t UBX_NAV_TIMETRUSTED_MSGID = 0x64; //!< UBX-NAV-TIMETRUSTED message ID
394static constexpr const char* UBX_NAV_TIMETRUSTED_STRID = "UBX-NAV-TIMETRUSTED"; //!< UBX-NAV-TIMETRUSTED message name
395static constexpr uint8_t UBX_NAV_TIMEUTC_MSGID = 0x21; //!< UBX-NAV-TIMEUTC message ID
396static constexpr const char* UBX_NAV_TIMEUTC_STRID = "UBX-NAV-TIMEUTC"; //!< UBX-NAV-TIMEUTC message name
397static constexpr uint8_t UBX_NAV_VELECEF_MSGID = 0x11; //!< UBX-NAV-VELECEF message ID
398static constexpr const char* UBX_NAV_VELECEF_STRID = "UBX-NAV-VELECEF"; //!< UBX-NAV-VELECEF message name
399static constexpr uint8_t UBX_NAV_VELNED_MSGID = 0x12; //!< UBX-NAV-VELNED message ID
400static constexpr const char* UBX_NAV_VELNED_STRID = "UBX-NAV-VELNED"; //!< UBX-NAV-VELNED message name
401static constexpr uint8_t UBX_NAV2_CLOCK_MSGID = UBX_NAV_CLOCK_MSGID; //!< UBX-NAV2-CLOCK message ID
402static constexpr const char* UBX_NAV2_CLOCK_STRID = "UBX-NAV2-CLOCK"; //!< UBX-NAV2-CLOCK message name
403static constexpr uint8_t UBX_NAV2_COV_MSGID = UBX_NAV_COV_MSGID; //!< UBX-NAV2-COV message ID
404static constexpr const char* UBX_NAV2_COV_STRID = "UBX-NAV2-COV"; //!< UBX-NAV2-COV message name
405static constexpr uint8_t UBX_NAV2_DOP_MSGID = UBX_NAV_DOP_MSGID; //!< UBX-NAV2-DOP message ID
406static constexpr const char* UBX_NAV2_DOP_STRID = "UBX-NAV2-DOP"; //!< UBX-NAV2-DOP message name
407static constexpr uint8_t UBX_NAV2_EOE_MSGID = UBX_NAV_EOE_MSGID; //!< UBX-NAV2-EOE message ID
408static constexpr const char* UBX_NAV2_EOE_STRID = "UBX-NAV2-EOE"; //!< UBX-NAV2-EOE message name
409static constexpr uint8_t UBX_NAV2_ODO_MSGID = UBX_NAV_ODO_MSGID; //!< UBX-NAV2-ODO message ID
410static constexpr const char* UBX_NAV2_ODO_STRID = "UBX-NAV2-ODO"; //!< UBX-NAV2-ODO message name
411static constexpr uint8_t UBX_NAV2_POSECEF_MSGID = UBX_NAV_POSECEF_MSGID; //!< UBX-NAV2-POSECEF message ID
412static constexpr const char* UBX_NAV2_POSECEF_STRID = "UBX-NAV2-POSECEF"; //!< UBX-NAV2-POSECEF message name
413static constexpr uint8_t UBX_NAV2_POSLLH_MSGID = UBX_NAV_POSLLH_MSGID; //!< UBX-NAV2-POSLLH message ID
414static constexpr const char* UBX_NAV2_POSLLH_STRID = "UBX-NAV2-POSLLH"; //!< UBX-NAV2-POSLLH message name
415static constexpr uint8_t UBX_NAV2_PVT_MSGID = UBX_NAV_PVT_MSGID; //!< UBX-NAV2-PVT message ID
416static constexpr const char* UBX_NAV2_PVT_STRID = "UBX-NAV2-PVT"; //!< UBX-NAV2-PVT message name
417static constexpr uint8_t UBX_NAV2_SAT_MSGID = UBX_NAV_SAT_MSGID; //!< UBX-NAV2-SAT message ID
418static constexpr const char* UBX_NAV2_SAT_STRID = "UBX-NAV2-SAT"; //!< UBX-NAV2-SAT message name
419static constexpr uint8_t UBX_NAV2_SBAS_MSGID = UBX_NAV_SBAS_MSGID; //!< UBX-NAV2-SBAS message ID
420static constexpr const char* UBX_NAV2_SBAS_STRID = "UBX-NAV2-SBAS"; //!< UBX-NAV2-SBAS message name
421static constexpr uint8_t UBX_NAV2_SIG_MSGID = UBX_NAV_SIG_MSGID; //!< UBX-NAV2-SIG message ID
422static constexpr const char* UBX_NAV2_SIG_STRID = "UBX-NAV2-SIG"; //!< UBX-NAV2-SIG message name
423static constexpr uint8_t UBX_NAV2_SLAS_MSGID = UBX_NAV_SLAS_MSGID; //!< UBX-NAV2-SLAS message ID
424static constexpr const char* UBX_NAV2_SLAS_STRID = "UBX-NAV2-SLAS"; //!< UBX-NAV2-SLAS message name
425static constexpr uint8_t UBX_NAV2_STATUS_MSGID = UBX_NAV_STATUS_MSGID; //!< UBX-NAV2-STATUS message ID
426static constexpr const char* UBX_NAV2_STATUS_STRID = "UBX-NAV2-STATUS"; //!< UBX-NAV2-STATUS message name
427static constexpr uint8_t UBX_NAV2_SVIN_MSGID = UBX_NAV_SVIN_MSGID; //!< UBX-NAV2-SVIN message ID
428static constexpr const char* UBX_NAV2_SVIN_STRID = "UBX-NAV2-SVIN"; //!< UBX-NAV2-SVIN message name
429static constexpr uint8_t UBX_NAV2_TIMEBDS_MSGID = UBX_NAV_TIMEBDS_MSGID; //!< UBX-NAV2-TIMEBDS message ID
430static constexpr const char* UBX_NAV2_TIMEBDS_STRID = "UBX-NAV2-TIMEBDS"; //!< UBX-NAV2-TIMEBDS message name
431static constexpr uint8_t UBX_NAV2_TIMEGAL_MSGID = UBX_NAV_TIMEGAL_MSGID; //!< UBX-NAV2-TIMEGAL message ID
432static constexpr const char* UBX_NAV2_TIMEGAL_STRID = "UBX-NAV2-TIMEGAL"; //!< UBX-NAV2-TIMEGAL message name
433static constexpr uint8_t UBX_NAV2_TIMEGLO_MSGID = UBX_NAV_TIMEGLO_MSGID; //!< UBX-NAV2-TIMEGLO message ID
434static constexpr const char* UBX_NAV2_TIMEGLO_STRID = "UBX-NAV2-TIMEGLO"; //!< UBX-NAV2-TIMEGLO message name
435static constexpr uint8_t UBX_NAV2_TIMEGPS_MSGID = UBX_NAV_TIMEGPS_MSGID; //!< UBX-NAV2-TIMEGPS message ID
436static constexpr const char* UBX_NAV2_TIMEGPS_STRID = "UBX-NAV2-TIMEGPS"; //!< UBX-NAV2-TIMEGPS message name
437static constexpr uint8_t UBX_NAV2_TIMELS_MSGID = UBX_NAV_TIMELS_MSGID; //!< UBX-NAV2-TIMELS message ID
438static constexpr const char* UBX_NAV2_TIMELS_STRID = "UBX-NAV2-TIMELS"; //!< UBX-NAV2-TIMELS message name
439static constexpr uint8_t UBX_NAV2_TIMEQZSS_MSGID = UBX_NAV_TIMEQZSS_MSGID; //!< UBX-NAV2-TIMEQZSS message ID
440static constexpr const char* UBX_NAV2_TIMEQZSS_STRID = "UBX-NAV2-TIMEQZSS"; //!< UBX-NAV2-TIMEQZSS message name
441static constexpr uint8_t UBX_NAV2_TIMENAVIC_MSGID = UBX_NAV_TIMENAVIC_MSGID; //!< UBX-NAV2-TIMENAVIC message ID
442static constexpr const char* UBX_NAV2_TIMENAVIC_STRID = "UBX-NAV2-TIMENAVIC"; //!< UBX-NAV2-TIMENAVIC message name
443static constexpr uint8_t UBX_NAV2_TIMEUTC_MSGID = UBX_NAV_TIMEUTC_MSGID; //!< UBX-NAV2-TIMEUTC message ID
444static constexpr const char* UBX_NAV2_TIMEUTC_STRID = "UBX-NAV2-TIMEUTC"; //!< UBX-NAV2-TIMEUTC message name
445static constexpr uint8_t UBX_NAV2_VELECEF_MSGID = UBX_NAV_VELECEF_MSGID; //!< UBX-NAV2-VELECEF message ID
446static constexpr const char* UBX_NAV2_VELECEF_STRID = "UBX-NAV2-VELECEF"; //!< UBX-NAV2-VELECEF message name
447static constexpr uint8_t UBX_NAV2_VELNED_MSGID = UBX_NAV_VELNED_MSGID; //!< UBX-NAV2-VELNED message ID
448static constexpr const char* UBX_NAV2_VELNED_STRID = "UBX-NAV2-VELNED"; //!< UBX-NAV2-VELNED message name
449static constexpr uint8_t UBX_RXM_COR_MSGID = 0x14; //!< UBX-RXM-COR message ID
450static constexpr const char* UBX_RXM_COR_STRID = "UBX-RXM-COR"; //!< UBX-RXM-COR message name
451static constexpr uint8_t UBX_RXM_MEASX_MSGID = 0x14; //!< UBX-RXM-MEASX message ID
452static constexpr const char* UBX_RXM_MEASX_STRID = "UBX-RXM-MEASX"; //!< UBX-RXM-MEASX message name
453static constexpr uint8_t UBX_RXM_PMP_MSGID = 0x72; //!< UBX-RXM-PMP message ID
454static constexpr const char* UBX_RXM_PMP_STRID = "UBX-RXM-PMP"; //!< UBX-RXM-PMP message name
455static constexpr uint8_t UBX_RXM_PMREQ_MSGID = 0x41; //!< UBX-RXM-PMREQ message ID
456static constexpr const char* UBX_RXM_PMREQ_STRID = "UBX-RXM-PMREQ"; //!< UBX-RXM-PMREQ message name
457static constexpr uint8_t UBX_RXM_QZSSL6_MSGID = 0x73; //!< UBX-RXM-QZSSL6 message ID
458static constexpr const char* UBX_RXM_QZSSL6_STRID = "UBX-RXM-QZSSL6"; //!< UBX-RXM-QZSSL6 message name
459static constexpr uint8_t UBX_RXM_RAWX_MSGID = 0x15; //!< UBX-RXM-RAWX message ID
460static constexpr const char* UBX_RXM_RAWX_STRID = "UBX-RXM-RAWX"; //!< UBX-RXM-RAWX message name
461static constexpr uint8_t UBX_RXM_RLM_MSGID = 0x59; //!< UBX-RXM-RLM message ID
462static constexpr const char* UBX_RXM_RLM_STRID = "UBX-RXM-RLM"; //!< UBX-RXM-RLM message name
463static constexpr uint8_t UBX_RXM_RTCM_MSGID = 0x32; //!< UBX-RXM-RTCM message ID
464static constexpr const char* UBX_RXM_RTCM_STRID = "UBX-RXM-RTCM"; //!< UBX-RXM-RTCM message name
465static constexpr uint8_t UBX_RXM_SFRBX_MSGID = 0x13; //!< UBX-RXM-SFRBX message ID
466static constexpr const char* UBX_RXM_SFRBX_STRID = "UBX-RXM-SFRBX"; //!< UBX-RXM-SFRBX message name
467static constexpr uint8_t UBX_RXM_SPARTN_MSGID = 0x33; //!< UBX-RXM-SPARTN message ID
468static constexpr const char* UBX_RXM_SPARTN_STRID = "UBX-RXM-SPARTN"; //!< UBX-RXM-SPARTN message name
469static constexpr uint8_t UBX_RXM_SPARTNKEY_MSGID = 0x36; //!< UBX-RXM-SPARTNKEY message ID
470static constexpr const char* UBX_RXM_SPARTNKEY_STRID = "UBX-RXM-SPARTNKEY"; //!< UBX-RXM-SPARTNKEY message name
471static constexpr uint8_t UBX_SEC_OSNMA_MSGID = 0x0a; //!< UBX-SEC-OSNMA message ID
472static constexpr const char* UBX_SEC_OSNMA_STRID = "UBX-SEC-OSNMA"; //!< UBX-SEC-OSNMA message name
473static constexpr uint8_t UBX_SEC_SIG_MSGID = 0x09; //!< UBX-SEC-SIG message ID
474static constexpr const char* UBX_SEC_SIG_STRID = "UBX-SEC-SIG"; //!< UBX-SEC-SIG message name
475static constexpr uint8_t UBX_SEC_SIGLOG_MSGID = 0x10; //!< UBX-SEC-SIGLOG message ID
476static constexpr const char* UBX_SEC_SIGLOG_STRID = "UBX-SEC-SIGLOG"; //!< UBX-SEC-SIGLOG message name
477static constexpr uint8_t UBX_SEC_UNIQID_MSGID = 0x03; //!< UBX-SEC-UNIQID message ID
478static constexpr const char* UBX_SEC_UNIQID_STRID = "UBX-SEC-UNIQID"; //!< UBX-SEC-UNIQID message name
479static constexpr uint8_t UBX_TIM_SVIN_MSGID = 0x04; //!< UBX-TIM-SVIN message ID
480static constexpr const char* UBX_TIM_SVIN_STRID = "UBX-TIM-SVIN"; //!< UBX-TIM-SVIN message name
481static constexpr uint8_t UBX_TIM_TM2_MSGID = 0x03; //!< UBX-TIM-TM2 message ID
482static constexpr const char* UBX_TIM_TM2_STRID = "UBX-TIM-TM2"; //!< UBX-TIM-TM2 message name
483static constexpr uint8_t UBX_TIM_TP_MSGID = 0x01; //!< UBX-TIM-TP message ID
484static constexpr const char* UBX_TIM_TP_STRID = "UBX-TIM-TP"; //!< UBX-TIM-TP message name
485static constexpr uint8_t UBX_TIM_VRFY_MSGID = 0x06; //!< UBX-TIM-VRFY message ID
486static constexpr const char* UBX_TIM_VRFY_STRID = "UBX-TIM-VRFY"; //!< UBX-TIM-VRFY message name
487static constexpr uint8_t UBX_UPD_FLDET_MSGID = 0x08; //!< UBX-UPD-FLDET message ID
488static constexpr const char* UBX_UPD_FLDET_STRID = "UBX-UPD-FLDET"; //!< UBX-UPD-FLDET message name
489static constexpr uint8_t UBX_UPD_POS_MSGID = 0x15; //!< UBX-UPD-POS message ID
490static constexpr const char* UBX_UPD_POS_STRID = "UBX-UPD-POS"; //!< UBX-UPD-POS message name
491static constexpr uint8_t UBX_UPD_SAFEBOOT_MSGID = 0x07; //!< UBX-UPD-SAFEBOOT message ID
492static constexpr const char* UBX_UPD_SAFEBOOT_STRID = "UBX-UPD-SAFEBOOT"; //!< UBX-UPD-SAFEBOOT message name
493static constexpr uint8_t UBX_UPD_SOS_MSGID = 0x14; //!< UBX-UPD-SOS message ID
494static constexpr const char* UBX_UPD_SOS_STRID = "UBX-UPD-SOS"; //!< UBX-UPD-SOS message name
495static constexpr uint8_t UBX_NMEA_STANDARD_DTM_MSGID = 0x0a; //!< UBX-NMEA-STANDARD_DTM message ID
496static constexpr const char* UBX_NMEA_STANDARD_DTM_STRID = "UBX-NMEA-STANDARD_DTM"; //!< UBX-NMEA-STANDARD_DTM message name
497static constexpr uint8_t UBX_NMEA_STANDARD_GAQ_MSGID = 0x45; //!< UBX-NMEA-STANDARD_GAQ message ID
498static constexpr const char* UBX_NMEA_STANDARD_GAQ_STRID = "UBX-NMEA-STANDARD_GAQ"; //!< UBX-NMEA-STANDARD_GAQ message name
499static constexpr uint8_t UBX_NMEA_STANDARD_GBQ_MSGID = 0x44; //!< UBX-NMEA-STANDARD_GBQ message ID
500static constexpr const char* UBX_NMEA_STANDARD_GBQ_STRID = "UBX-NMEA-STANDARD_GBQ"; //!< UBX-NMEA-STANDARD_GBQ message name
501static constexpr uint8_t UBX_NMEA_STANDARD_GBS_MSGID = 0x09; //!< UBX-NMEA-STANDARD_GBS message ID
502static constexpr const char* UBX_NMEA_STANDARD_GBS_STRID = "UBX-NMEA-STANDARD_GBS"; //!< UBX-NMEA-STANDARD_GBS message name
503static constexpr uint8_t UBX_NMEA_STANDARD_GGA_MSGID = 0x00; //!< UBX-NMEA-STANDARD_GGA message ID
504static constexpr const char* UBX_NMEA_STANDARD_GGA_STRID = "UBX-NMEA-STANDARD_GGA"; //!< UBX-NMEA-STANDARD_GGA message name
505static constexpr uint8_t UBX_NMEA_STANDARD_GLL_MSGID = 0x01; //!< UBX-NMEA-STANDARD_GLL message ID
506static constexpr const char* UBX_NMEA_STANDARD_GLL_STRID = "UBX-NMEA-STANDARD_GLL"; //!< UBX-NMEA-STANDARD_GLL message name
507static constexpr uint8_t UBX_NMEA_STANDARD_GLQ_MSGID = 0x43; //!< UBX-NMEA-STANDARD_GLQ message ID
508static constexpr const char* UBX_NMEA_STANDARD_GLQ_STRID = "UBX-NMEA-STANDARD_GLQ"; //!< UBX-NMEA-STANDARD_GLQ message name
509static constexpr uint8_t UBX_NMEA_STANDARD_GNQ_MSGID = 0x42; //!< UBX-NMEA-STANDARD_GNQ message ID
510static constexpr const char* UBX_NMEA_STANDARD_GNQ_STRID = "UBX-NMEA-STANDARD_GNQ"; //!< UBX-NMEA-STANDARD_GNQ message name
511static constexpr uint8_t UBX_NMEA_STANDARD_GNS_MSGID = 0x0d; //!< UBX-NMEA-STANDARD_GNS message ID
512static constexpr const char* UBX_NMEA_STANDARD_GNS_STRID = "UBX-NMEA-STANDARD_GNS"; //!< UBX-NMEA-STANDARD_GNS message name
513static constexpr uint8_t UBX_NMEA_STANDARD_GPQ_MSGID = 0x40; //!< UBX-NMEA-STANDARD_GPQ message ID
514static constexpr const char* UBX_NMEA_STANDARD_GPQ_STRID = "UBX-NMEA-STANDARD_GPQ"; //!< UBX-NMEA-STANDARD_GPQ message name
515static constexpr uint8_t UBX_NMEA_STANDARD_GQQ_MSGID = 0x47; //!< UBX-NMEA-STANDARD_GQQ message ID
516static constexpr const char* UBX_NMEA_STANDARD_GQQ_STRID = "UBX-NMEA-STANDARD_GQQ"; //!< UBX-NMEA-STANDARD_GQQ message name
517static constexpr uint8_t UBX_NMEA_STANDARD_GRS_MSGID = 0x06; //!< UBX-NMEA-STANDARD_GRS message ID
518static constexpr const char* UBX_NMEA_STANDARD_GRS_STRID = "UBX-NMEA-STANDARD_GRS"; //!< UBX-NMEA-STANDARD_GRS message name
519static constexpr uint8_t UBX_NMEA_STANDARD_GSA_MSGID = 0x02; //!< UBX-NMEA-STANDARD_GSA message ID
520static constexpr const char* UBX_NMEA_STANDARD_GSA_STRID = "UBX-NMEA-STANDARD_GSA"; //!< UBX-NMEA-STANDARD_GSA message name
521static constexpr uint8_t UBX_NMEA_STANDARD_GST_MSGID = 0x07; //!< UBX-NMEA-STANDARD_GST message ID
522static constexpr const char* UBX_NMEA_STANDARD_GST_STRID = "UBX-NMEA-STANDARD_GST"; //!< UBX-NMEA-STANDARD_GST message name
523static constexpr uint8_t UBX_NMEA_STANDARD_GSV_MSGID = 0x03; //!< UBX-NMEA-STANDARD_GSV message ID
524static constexpr const char* UBX_NMEA_STANDARD_GSV_STRID = "UBX-NMEA-STANDARD_GSV"; //!< UBX-NMEA-STANDARD_GSV message name
525static constexpr uint8_t UBX_NMEA_STANDARD_RLM_MSGID = 0x0b; //!< UBX-NMEA-STANDARD_RLM message ID
526static constexpr const char* UBX_NMEA_STANDARD_RLM_STRID = "UBX-NMEA-STANDARD_RLM"; //!< UBX-NMEA-STANDARD_RLM message name
527static constexpr uint8_t UBX_NMEA_STANDARD_RMC_MSGID = 0x04; //!< UBX-NMEA-STANDARD_RMC message ID
528static constexpr const char* UBX_NMEA_STANDARD_RMC_STRID = "UBX-NMEA-STANDARD_RMC"; //!< UBX-NMEA-STANDARD_RMC message name
529static constexpr uint8_t UBX_NMEA_STANDARD_TXT_MSGID = 0x41; //!< UBX-NMEA-STANDARD_TXT message ID
530static constexpr const char* UBX_NMEA_STANDARD_TXT_STRID = "UBX-NMEA-STANDARD_TXT"; //!< UBX-NMEA-STANDARD_TXT message name
531static constexpr uint8_t UBX_NMEA_STANDARD_VLW_MSGID = 0x0f; //!< UBX-NMEA-STANDARD_VLW message ID
532static constexpr const char* UBX_NMEA_STANDARD_VLW_STRID = "UBX-NMEA-STANDARD_VLW"; //!< UBX-NMEA-STANDARD_VLW message name
533static constexpr uint8_t UBX_NMEA_STANDARD_VTG_MSGID = 0x05; //!< UBX-NMEA-STANDARD_VTG message ID
534static constexpr const char* UBX_NMEA_STANDARD_VTG_STRID = "UBX-NMEA-STANDARD_VTG"; //!< UBX-NMEA-STANDARD_VTG message name
535static constexpr uint8_t UBX_NMEA_STANDARD_ZDA_MSGID = 0x08; //!< UBX-NMEA-STANDARD_ZDA message ID
536static constexpr const char* UBX_NMEA_STANDARD_ZDA_STRID = "UBX-NMEA-STANDARD_ZDA"; //!< UBX-NMEA-STANDARD_ZDA message name
537static constexpr uint8_t UBX_NMEA_PUBX_CONFIG_MSGID = 0x41; //!< UBX-NMEA-PUBX_CONFIG message ID
538static constexpr const char* UBX_NMEA_PUBX_CONFIG_STRID = "UBX-NMEA-PUBX_CONFIG"; //!< UBX-NMEA-PUBX_CONFIG message name
539static constexpr uint8_t UBX_NMEA_PUBX_POSITION_MSGID = 0x00; //!< UBX-NMEA-PUBX_POSITION message ID
540static constexpr const char* UBX_NMEA_PUBX_POSITION_STRID = "UBX-NMEA-PUBX_POSITION"; //!< UBX-NMEA-PUBX_POSITION message name
541static constexpr uint8_t UBX_NMEA_PUBX_RATE_MSGID = 0x40; //!< UBX-NMEA-PUBX_RATE message ID
542static constexpr const char* UBX_NMEA_PUBX_RATE_STRID = "UBX-NMEA-PUBX_RATE"; //!< UBX-NMEA-PUBX_RATE message name
543static constexpr uint8_t UBX_NMEA_PUBX_SVSTATUS_MSGID = 0x03; //!< UBX-NMEA-PUBX_SVSTATUS message ID
544static constexpr const char* UBX_NMEA_PUBX_SVSTATUS_STRID = "UBX-NMEA-PUBX_SVSTATUS"; //!< UBX-NMEA-PUBX_SVSTATUS message name
545static constexpr uint8_t UBX_NMEA_PUBX_TIME_MSGID = 0x04; //!< UBX-NMEA-PUBX_TIME message ID
546static constexpr const char* UBX_NMEA_PUBX_TIME_STRID = "UBX-NMEA-PUBX_TIME"; //!< UBX-NMEA-PUBX_TIME message name
547static constexpr uint8_t UBX_RTCM3_TYPE1001_MSGID = 0x01; //!< UBX-RTCM3-TYPE1001 message ID
548static constexpr const char* UBX_RTCM3_TYPE1001_STRID = "UBX-RTCM3-TYPE1001"; //!< UBX-RTCM3-TYPE1001 message name
549static constexpr uint8_t UBX_RTCM3_TYPE1002_MSGID = 0x02; //!< UBX-RTCM3-TYPE1002 message ID
550static constexpr const char* UBX_RTCM3_TYPE1002_STRID = "UBX-RTCM3-TYPE1002"; //!< UBX-RTCM3-TYPE1002 message name
551static constexpr uint8_t UBX_RTCM3_TYPE1003_MSGID = 0x03; //!< UBX-RTCM3-TYPE1003 message ID
552static constexpr const char* UBX_RTCM3_TYPE1003_STRID = "UBX-RTCM3-TYPE1003"; //!< UBX-RTCM3-TYPE1003 message name
553static constexpr uint8_t UBX_RTCM3_TYPE1004_MSGID = 0x04; //!< UBX-RTCM3-TYPE1004 message ID
554static constexpr const char* UBX_RTCM3_TYPE1004_STRID = "UBX-RTCM3-TYPE1004"; //!< UBX-RTCM3-TYPE1004 message name
555static constexpr uint8_t UBX_RTCM3_TYPE1005_MSGID = 0x05; //!< UBX-RTCM3-TYPE1005 message ID
556static constexpr const char* UBX_RTCM3_TYPE1005_STRID = "UBX-RTCM3-TYPE1005"; //!< UBX-RTCM3-TYPE1005 message name
557static constexpr uint8_t UBX_RTCM3_TYPE1006_MSGID = 0x06; //!< UBX-RTCM3-TYPE1006 message ID
558static constexpr const char* UBX_RTCM3_TYPE1006_STRID = "UBX-RTCM3-TYPE1006"; //!< UBX-RTCM3-TYPE1006 message name
559static constexpr uint8_t UBX_RTCM3_TYPE1007_MSGID = 0x07; //!< UBX-RTCM3-TYPE1007 message ID
560static constexpr const char* UBX_RTCM3_TYPE1007_STRID = "UBX-RTCM3-TYPE1007"; //!< UBX-RTCM3-TYPE1007 message name
561static constexpr uint8_t UBX_RTCM3_TYPE1009_MSGID = 0x09; //!< UBX-RTCM3-TYPE1009 message ID
562static constexpr const char* UBX_RTCM3_TYPE1009_STRID = "UBX-RTCM3-TYPE1009"; //!< UBX-RTCM3-TYPE1009 message name
563static constexpr uint8_t UBX_RTCM3_TYPE1010_MSGID = 0x0a; //!< UBX-RTCM3-TYPE1010 message ID
564static constexpr const char* UBX_RTCM3_TYPE1010_STRID = "UBX-RTCM3-TYPE1010"; //!< UBX-RTCM3-TYPE1010 message name
565static constexpr uint8_t UBX_RTCM3_TYPE1011_MSGID = 0xa1; //!< UBX-RTCM3-TYPE1011 message ID
566static constexpr const char* UBX_RTCM3_TYPE1011_STRID = "UBX-RTCM3-TYPE1011"; //!< UBX-RTCM3-TYPE1011 message name
567static constexpr uint8_t UBX_RTCM3_TYPE1012_MSGID = 0xa2; //!< UBX-RTCM3-TYPE1012 message ID
568static constexpr const char* UBX_RTCM3_TYPE1012_STRID = "UBX-RTCM3-TYPE1012"; //!< UBX-RTCM3-TYPE1012 message name
569static constexpr uint8_t UBX_RTCM3_TYPE1033_MSGID = 0x21; //!< UBX-RTCM3-TYPE1033 message ID
570static constexpr const char* UBX_RTCM3_TYPE1033_STRID = "UBX-RTCM3-TYPE1033"; //!< UBX-RTCM3-TYPE1033 message name
571static constexpr uint8_t UBX_RTCM3_TYPE1074_MSGID = 0x4a; //!< UBX-RTCM3-TYPE1074 message ID
572static constexpr const char* UBX_RTCM3_TYPE1074_STRID = "UBX-RTCM3-TYPE1074"; //!< UBX-RTCM3-TYPE1074 message name
573static constexpr uint8_t UBX_RTCM3_TYPE1075_MSGID = 0x4b; //!< UBX-RTCM3-TYPE1075 message ID
574static constexpr const char* UBX_RTCM3_TYPE1075_STRID = "UBX-RTCM3-TYPE1075"; //!< UBX-RTCM3-TYPE1075 message name
575static constexpr uint8_t UBX_RTCM3_TYPE1077_MSGID = 0x4d; //!< UBX-RTCM3-TYPE1077 message ID
576static constexpr const char* UBX_RTCM3_TYPE1077_STRID = "UBX-RTCM3-TYPE1077"; //!< UBX-RTCM3-TYPE1077 message name
577static constexpr uint8_t UBX_RTCM3_TYPE1084_MSGID = 0x54; //!< UBX-RTCM3-TYPE1084 message ID
578static constexpr const char* UBX_RTCM3_TYPE1084_STRID = "UBX-RTCM3-TYPE1084"; //!< UBX-RTCM3-TYPE1084 message name
579static constexpr uint8_t UBX_RTCM3_TYPE1085_MSGID = 0x55; //!< UBX-RTCM3-TYPE1085 message ID
580static constexpr const char* UBX_RTCM3_TYPE1085_STRID = "UBX-RTCM3-TYPE1085"; //!< UBX-RTCM3-TYPE1085 message name
581static constexpr uint8_t UBX_RTCM3_TYPE1087_MSGID = 0x57; //!< UBX-RTCM3-TYPE1087 message ID
582static constexpr const char* UBX_RTCM3_TYPE1087_STRID = "UBX-RTCM3-TYPE1087"; //!< UBX-RTCM3-TYPE1087 message name
583static constexpr uint8_t UBX_RTCM3_TYPE1094_MSGID = 0x5e; //!< UBX-RTCM3-TYPE1094 message ID
584static constexpr const char* UBX_RTCM3_TYPE1094_STRID = "UBX-RTCM3-TYPE1094"; //!< UBX-RTCM3-TYPE1094 message name
585static constexpr uint8_t UBX_RTCM3_TYPE1095_MSGID = 0x5f; //!< UBX-RTCM3-TYPE1095 message ID
586static constexpr const char* UBX_RTCM3_TYPE1095_STRID = "UBX-RTCM3-TYPE1095"; //!< UBX-RTCM3-TYPE1095 message name
587static constexpr uint8_t UBX_RTCM3_TYPE1097_MSGID = 0x61; //!< UBX-RTCM3-TYPE1097 message ID
588static constexpr const char* UBX_RTCM3_TYPE1097_STRID = "UBX-RTCM3-TYPE1097"; //!< UBX-RTCM3-TYPE1097 message name
589static constexpr uint8_t UBX_RTCM3_TYPE1124_MSGID = 0x7c; //!< UBX-RTCM3-TYPE1124 message ID
590static constexpr const char* UBX_RTCM3_TYPE1124_STRID = "UBX-RTCM3-TYPE1124"; //!< UBX-RTCM3-TYPE1124 message name
591static constexpr uint8_t UBX_RTCM3_TYPE1125_MSGID = 0x7d; //!< UBX-RTCM3-TYPE1125 message ID
592static constexpr const char* UBX_RTCM3_TYPE1125_STRID = "UBX-RTCM3-TYPE1125"; //!< UBX-RTCM3-TYPE1125 message name
593static constexpr uint8_t UBX_RTCM3_TYPE1127_MSGID = 0x7f; //!< UBX-RTCM3-TYPE1127 message ID
594static constexpr const char* UBX_RTCM3_TYPE1127_STRID = "UBX-RTCM3-TYPE1127"; //!< UBX-RTCM3-TYPE1127 message name
595static constexpr uint8_t UBX_RTCM3_TYPE1230_MSGID = 0xe6; //!< UBX-RTCM3-TYPE1230 message ID
596static constexpr const char* UBX_RTCM3_TYPE1230_STRID = "UBX-RTCM3-TYPE1230"; //!< UBX-RTCM3-TYPE1230 message name
597static constexpr uint8_t UBX_RTCM3_TYPE4072_0_MSGID = 0xfe; //!< UBX-RTCM3-TYPE4072_0 message ID
598static constexpr const char* UBX_RTCM3_TYPE4072_0_STRID = "UBX-RTCM3-TYPE4072_0"; //!< UBX-RTCM3-TYPE4072_0 message name
599static constexpr uint8_t UBX_RTCM3_TYPE4072_1_MSGID = 0xfd; //!< UBX-RTCM3-TYPE4072_1 message ID
600static constexpr const char* UBX_RTCM3_TYPE4072_1_STRID = "UBX-RTCM3-TYPE4072_1"; //!< UBX-RTCM3-TYPE4072_1 message name
601// @fp_codegen_end{FPSDK_COMMON_PARSER_UBX_MESSAGES}
602// clang-format on
603
604/**
605 * @brief UBX class/message lookup table entry
606 */
608{
609 uint8_t cls_id_ = 0; //!< UBX class ID
610 uint8_t msg_id_ = 0; //!< UBX message ID
611 const char* name_ = nullptr; //!< UBX name
612};
613
614// @fp_codegen_begin{FPSDK_COMMON_PARSER_UBX_MSGINFO_HPP}
615using UbxClassesInfo = std::array<UbxMsgInfo, 15>; //!< UBX classes lookup table
616using UbxMessagesInfo = std::array<UbxMsgInfo, 187>; //!< UBX messages lookup table
617// @fp_codegen_end{FPSDK_COMMON_PARSER_UBX_MSGINFO_HPP}
618
619/**
620 * @brief Get UBX classes lookup table
621 *
622 * @returns the UBX classes lookup table
623 */
625
626/**
627 * @brief Get UBX messages lookup table
628 *
629 * @returns the UBX messages lookup table
630 */
632
633/**
634 * @brief Get UBX message info
635 *
636 * @param[in] name The name of the message, e.g. "UBX-NAV-SOL"
637 * @param[out] info The message info, if name is a known message
638 *
639 * @returns true if the message name was found and info is valid, false otherwise
640 */
641bool UbxMessageInfo(const std::string& name, UbxMsgInfo& info);
642
643///@}
644
645// ---------------------------------------------------------------------------------------------------------------------
646
647/**
648 * @name UBX GNSS IDs (gnssId)
649 * @{
650 */
651// clang-format off
652static constexpr uint8_t UBX_GNSSID_NONE = 0xff; //!< None
653static constexpr uint8_t UBX_GNSSID_GPS = 0; //!< GPS
654static constexpr uint8_t UBX_GNSSID_SBAS = 1; //!< SBAS
655static constexpr uint8_t UBX_GNSSID_GAL = 2; //!< Galileo
656static constexpr uint8_t UBX_GNSSID_BDS = 3; //!< BeiDou
657static constexpr uint8_t UBX_GNSSID_QZSS = 5; //!< QZSS
658static constexpr uint8_t UBX_GNSSID_GLO = 6; //!< GLONASS
659static constexpr uint8_t UBX_GNSSID_NAVIC = 7; //!< NavIC
660inline const char * UBX_GNSSID_STR(const uint8_t gnssId) { return gnssId == UBX_GNSSID_NONE ? "NONE" : types::IxToStr(gnssId, "GPS", "SBAS", "GAL", "BDS", "?", "QZSS", "GLO", "NAVIC"); } //!< @todo documentation
661// clang-format on
662///@}
663
664/**
665 * @name UBX SV numbering
666 * @{
667 */
668// clang-format off
669static constexpr uint8_t UBX_NUM_GPS = 32; //!< G01-G32
670static constexpr uint8_t UBX_NUM_SBAS = 39; //!< S120-S158
671static constexpr uint8_t UBX_NUM_GAL = 36; //!< E01-E36
672static constexpr uint8_t UBX_NUM_BDS = 63; //!< B01-B63 ("Cxx" in RINEX)
673static constexpr uint8_t UBX_NUM_QZSS = 10; //!< Q01-Q10 ("Jxx" in RINEX)
674static constexpr uint8_t UBX_NUM_GLO = 32; //!< R01-R32
675static constexpr uint8_t UBX_NUM_NAVIC = 14; //!< N01-N14 ("Ixx" in RINEX)
676static constexpr uint8_t UBX_FIRST_GPS = 1; //!< G01
677static constexpr uint8_t UBX_FIRST_SBAS = 120; //!< S120 ("Sxx" in RINEX)
678static constexpr uint8_t UBX_FIRST_GAL = 1; //!< E01
679static constexpr uint8_t UBX_FIRST_BDS = 1; //!< B01
680static constexpr uint8_t UBX_FIRST_QZSS = 1; //!< Q01
681static constexpr uint8_t UBX_FIRST_GLO = 1; //!< R01
682static constexpr uint8_t UBX_FIRST_NAVIC = 1; //!< N01
683// clang-format on
684///@}
685
686/**
687 * @name UBX signal IDs (sigId)
688 * @{
689 */
690// clang-format off
691static constexpr uint8_t UBX_SIGID_NONE = 0xff; //!< None
692static constexpr uint8_t UBX_SIGID_GPS_L1CA = 0; //!< GPS L1 C/A
693static constexpr uint8_t UBX_SIGID_GPS_L2CL = 3; //!< GPS L2 CL
694static constexpr uint8_t UBX_SIGID_GPS_L2CM = 4; //!< GPS L2 CM
695static constexpr uint8_t UBX_SIGID_GPS_L5I = 6; //!< GPS L5 I
696static constexpr uint8_t UBX_SIGID_GPS_L5Q = 7; //!< GPS L5 Q
697inline const char * UBX_SIGID_GPS_STR(const uint8_t sigId) { return types::IxToStr(sigId, "L1CA", "?", "?", "L2CL", "L2CM", "?", "L5I", "L5Q"); } //!< @todo documentation
698static constexpr uint8_t UBX_SIGID_SBAS_L1CA = 0; //!< SBAS L1 C/A
699inline const char * UBX_SIGID_SBAS_STR(const uint8_t sigId) { return types::IxToStr(sigId, "L1CA"); } //!< @todo documentation
700static constexpr uint8_t UBX_SIGID_GAL_E1C = 0; //!< Galileo E1 C
701static constexpr uint8_t UBX_SIGID_GAL_E1B = 1; //!< Galileo E1 B
702static constexpr uint8_t UBX_SIGID_GAL_E5AI = 3; //!< Galileo E5 aI
703static constexpr uint8_t UBX_SIGID_GAL_E5AQ = 4; //!< Galileo E5 aQ
704static constexpr uint8_t UBX_SIGID_GAL_E5BI = 5; //!< Galileo E5 bI
705static constexpr uint8_t UBX_SIGID_GAL_E5BQ = 6; //!< Galileo E5 bQ
706static constexpr uint8_t UBX_SIGID_GAL_E6B = 8; //!< Galileo E6 B
707static constexpr uint8_t UBX_SIGID_GAL_E6C = 9; //!< Galileo E6 C
708static constexpr uint8_t UBX_SIGID_GAL_E6A = 10; //!< Galileo E6 A
709inline const char * UBX_SIGID_GAL_STR(const uint8_t sigId) { return types::IxToStr(sigId, "E1C", "E1B", "?", "E5AI", "E5AQ", "E5BI", "E5BQ", "?", "E6B", "E6C", "E6A"); } //!< @todo documentation
710static constexpr uint8_t UBX_SIGID_BDS_B1ID1 = 0; //!< BeiDou B1I D1
711static constexpr uint8_t UBX_SIGID_BDS_B1ID2 = 1; //!< BeiDou B1I D2
712static constexpr uint8_t UBX_SIGID_BDS_B2ID1 = 2; //!< BeiDou B2I D1
713static constexpr uint8_t UBX_SIGID_BDS_B2ID2 = 3; //!< BeiDou B2I D2
714static constexpr uint8_t UBX_SIGID_BDS_B3ID1 = 4; //!< BeiDou B3I D1
715static constexpr uint8_t UBX_SIGID_BDS_B3ID2 = 10; //!< BeiDou B3I D2
716static constexpr uint8_t UBX_SIGID_BDS_B1CP = 5; //!< BeiDou B1 Cp (pilot)
717static constexpr uint8_t UBX_SIGID_BDS_B1CD = 6; //!< BeiDou B1 Cd (data)
718static constexpr uint8_t UBX_SIGID_BDS_B2AP = 7; //!< BeiDou B2 ap (pilot)
719static constexpr uint8_t UBX_SIGID_BDS_B2AD = 8; //!< BeiDou B2 ad (data)
720inline const char * UBX_SIGID_BDS_STR(const uint8_t sigId) { return types::IxToStr(sigId, "B1ID1", "B1ID2", "B2ID1", "B2ID2", "B3ID1", "B1CP", "B1CD", "B2AP", "B2AD", "?", "B3ID2"); } //!< @todo documentation
721static constexpr uint8_t UBX_SIGID_QZSS_L1CA = 0; //!< QZSS L1 C/A
722static constexpr uint8_t UBX_SIGID_QZSS_L1S = 1; //!< QZSS L1 S
723static constexpr uint8_t UBX_SIGID_QZSS_L2CM = 4; //!< QZSS L2 CM
724static constexpr uint8_t UBX_SIGID_QZSS_L2CL = 5; //!< QZSS L2 CL
725static constexpr uint8_t UBX_SIGID_QZSS_L5I = 8; //!< QZSS L5 I
726static constexpr uint8_t UBX_SIGID_QZSS_L5Q = 9; //!< QZSS L5 Q
727inline const char * UBX_SIGID_QZSS_STR(const uint8_t sigId) { return types::IxToStr(sigId, "L1CA", "L1S", "?", "?", "L2CM", "L2CL", "?", "?", "L5I", "L5Q"); } //!< @todo documentation
728static constexpr uint8_t UBX_SIGID_GLO_L1OF = 0; //!< GLONASS L1 OF
729static constexpr uint8_t UBX_SIGID_GLO_L2OF = 2; //!< GLONASS L2 OF
730inline const char * UBX_SIGID_GLO_STR(const uint8_t sigId) { return types::IxToStr(sigId, "L1OF", "?", "L2OF"); } //!< @todo documentation
731static constexpr uint8_t UBX_SIGID_NAVIC_L5A = 0; //!< NavIC L5 A
732inline const char * UBX_SIGID_NAVIC_STR(const uint8_t sigId) { return types::IxToStr(sigId, "L5A"); } //!< @todo documentation
733inline const char * UBX_SIGID_STR(const uint8_t gnssId, const uint8_t sigId) { \
734 if (sigId == UBX_SIGID_NONE) { return "NONE"; } \
735 switch (gnssId) { \
736 case UBX_GNSSID_GPS: return UBX_SIGID_GPS_STR(sigId); \
737 case UBX_GNSSID_SBAS: return UBX_SIGID_SBAS_STR(sigId); \
738 case UBX_GNSSID_GAL: return UBX_SIGID_GAL_STR(sigId); \
739 case UBX_GNSSID_BDS: return UBX_SIGID_BDS_STR(sigId); \
740 case UBX_GNSSID_QZSS: return UBX_SIGID_QZSS_STR(sigId); \
741 case UBX_GNSSID_GLO: return UBX_SIGID_GLO_STR(sigId); \
742 case UBX_GNSSID_NAVIC: return UBX_SIGID_NAVIC_STR(sigId); } return "?"; } //!< @todo documentation
743// clang-format on
744///@}
745
746// ---------------------------------------------------------------------------------------------------------------------
747/**
748 * @name UBX-ACK-ACK message
749 * @{
750 */
751
752//! UBX-ACK-ACK (version 0, output) payload
753struct UBX_ACK_ACK_V0_GROUP0 // clang-format off
754{
755 uint8_t clsId; //!< Class ID of ack'ed message
756 uint8_t msgId; //!< Message ID of ack'ed message
757}; // clang-format on
758
759// clang-format off
760static constexpr std::size_t UBX_ACK_ACK_V0_SIZE = sizeof(UBX_ACK_ACK_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
761// clang-format on
762
763///@}
764// ---------------------------------------------------------------------------------------------------------------------
765/**
766 * @name UBX-ACK-NAK message
767 * @{
768 */
769
770//! UBX-ACK-NCK (version 0, output) payload
771struct UBX_ACK_NAK_V0_GROUP0 // clang-format off
772{
773 uint8_t clsId; //!< Class ID of not-ack'ed message
774 uint8_t msgId; //!< Message ID of not-ack'ed message
775};
776// clang-format on
777
778// clang-format off
779static constexpr std::size_t UBX_ACK_NAK_V0_SIZE = sizeof(UBX_ACK_NAK_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
780// clang-format on
781
782///@}
783// ---------------------------------------------------------------------------------------------------------------------
784/**
785 * @name UBX-CFG-VALSET message
786 * @{
787 */
788
789//! UBX-CFG-VALSET (version 0, input) message payload header
790struct UBX_CFG_VALSET_V0_GROUP0 // clang-format off
791{
792 uint8_t version; //!< Message version (#UBX_CFG_VALSET_V1_VERSION)
793 uint8_t layers; //!< Configuration layers
794 uint8_t reserved[2]; //!< Reserved (set to 0x00)
795};
796
797static_assert(sizeof(UBX_CFG_VALSET_V0_GROUP0) == 4, "");
798
799//! UBX-CFG-VALSET (version 1, input) message payload header
800struct UBX_CFG_VALSET_V1_GROUP0 // clang-format off
801{
802 uint8_t version; //!< Message version (#UBX_CFG_VALSET_V1_VERSION)
803 uint8_t layers; //!< Configuration layers
804 uint8_t transaction; //!< Transaction mode
805 uint8_t reserved; //!< Reserved (set to 0x00)
806};
807
808static_assert(sizeof(UBX_CFG_VALSET_V1_GROUP0) == 4, "");
809
810// clang-format off
811static constexpr uint8_t UBX_CFG_VALSET_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
812
813static constexpr uint8_t UBX_CFG_VALSET_V0_VERSION = 0x00; //!< UBX-CFG-VALSET.version value
814static constexpr std::size_t UBX_CFG_VALSET_V0_MIN_SIZE = sizeof(UBX_CFG_VALSET_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
815static constexpr uint8_t UBX_CFG_VALSET_V0_LAYERS_RAM = 0x01; //!< UBX-CFG-VALSET.layers flag: layer RAM
816static constexpr uint8_t UBX_CFG_VALSET_V0_LAYERS_BBR = 0x02; //!< UBX-CFG-VALSET.layers flag: layer BBR
817static constexpr uint8_t UBX_CFG_VALSET_V0_LAYERS_FLASH = 0x04; //!< UBX-CFG-VALSET.layers flag: layer Flash
818static constexpr uint8_t UBX_CFG_VALSET_V0_RESERVED = 0x00; //!< UBX-CFG-VALSET.reserved value
819static constexpr std::size_t UBX_CFG_VALSET_V0_MAX_KV = 64; //!< UBX-CFG-VALSET.cfgData: maximum number of key-value pairs
820static constexpr std::size_t UBX_CFG_VALSET_V0_CFGDATA_MAX_SIZE = UBX_CFG_VALSET_V0_MAX_KV * (4 + 8); //!< UBX-CFG-VALSET.cfgData maximum size
821static constexpr std::size_t UBX_CFG_VALSET_V0_MAX_SIZE = UBX_CFG_VALSET_V0_MIN_SIZE + UBX_CFG_VALSET_V0_CFGDATA_MAX_SIZE; //!< @todo documentation
822
823static constexpr uint8_t UBX_CFG_VALSET_V1_VERSION = 0x01; //!< UBX-CFG-VALSET.version value
824static constexpr std::size_t UBX_CFG_VALSET_V1_MIN_SIZE = sizeof(UBX_CFG_VALSET_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
825static constexpr uint8_t UBX_CFG_VALSET_V1_LAYER_RAM = 0x01; //!< UBX-CFG-VALSET.layers flag: layer RAM
826static constexpr uint8_t UBX_CFG_VALSET_V1_LAYER_BBR = 0x02; //!< UBX-CFG-VALSET.layers flag: layer BBR
827static constexpr uint8_t UBX_CFG_VALSET_V1_LAYER_FLASH = 0x04; //!< UBX-CFG-VALSET.layers flag: layer Flash
828static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_NONE = 0; //!< UBX-CFG-VALSET.transaction value: no transaction
829static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_BEGIN = 1; //!< UBX-CFG-VALSET.transaction value: transaction begin
830static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_CONTINUE = 2; //!< UBX-CFG-VALSET.transaction value: transaction continue
831static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_END = 3; //!< UBX-CFG-VALSET.transaction value: transaction: end
832inline const char * UBX_CFG_VALSET_V1_TRANSACTION_STR(const uint8_t transaction) { return types::IxToStr(transaction, "NONE", "BEGIN", "CONTINUE", "END"); } //!< @todo documentation
833static constexpr uint8_t UBX_CFG_VALSET_V1_RESERVED = 0x00; //!< UBX-CFG-VALSET.reserved value
834static constexpr std::size_t UBX_CFG_VALSET_V1_MAX_KV = 64; //!< UBX-CFG-VALSET.cfgData: maximum number of key-value pairs
835static constexpr std::size_t UBX_CFG_VALSET_V1_CFGDATA_MAX_SIZE = UBX_CFG_VALSET_V1_MAX_KV * (4 + 8); //!< UBX-CFG-VALSET.cfgData maximum size
836static constexpr std::size_t UBX_CFG_VALSET_V1_MAX_SIZE = UBX_CFG_VALSET_V1_MIN_SIZE + UBX_CFG_VALSET_V1_CFGDATA_MAX_SIZE; //!< @todo documentation
837// clang-format on
838
839///@}
840// ---------------------------------------------------------------------------------------------------------------------
841/**
842 * @name UBX-CFG-VALGET message
843 * @{
844 */
845
846//! UBX-CFG-VALGET (version 0, poll) message payload header
847struct UBX_CFG_VALGET_V0_GROUP0 // clang-format off
848{
849 uint8_t version; //!< Message version (#UBX_CFG_VALGET_V0_VERSION)
850 uint8_t layer; //!< Configuration layer
851 uint16_t position; //!< Number of values to skip in result set
852}; // clang-format on
853
854static_assert(sizeof(UBX_CFG_VALGET_V0_GROUP0) == 4, "");
855
856//! UBX-CFG-VALGET (version 1, output) message payload header
857struct UBX_CFG_VALGET_V1_GROUP0 // clang-format off
858{
859 uint8_t version; //!< Message version (#UBX_CFG_VALGET_V1_VERSION)
860 uint8_t layer; //!< Configuration layer
861 uint16_t position; //!< Number of values to skip in result set
862}; // clang-format on
863
864static_assert(sizeof(UBX_CFG_VALGET_V1_GROUP0) == 4, "");
865
866// clang-format off
867static constexpr uint8_t UBX_CFG_VALGET_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
868
869static constexpr uint8_t UBX_CFG_VALGET_V0_VERSION = 0x00; //!< UBX-CFG-VALGET.version value
870static constexpr std::size_t UBX_CFG_VALGET_V0_MIN_SIZE = sizeof(UBX_CFG_VALGET_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
871static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_RAM = 0; //!< UBX-CFG-VALGET.layers value: layer RAM
872static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_BBR = 1; //!< UBX-CFG-VALGET.layers value: layer BBR
873static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_FLASH = 2; //!< UBX-CFG-VALGET.layers value: layer Flash
874static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_DEFAULT = 7; //!< UBX-CFG-VALGET.layers value: layer Default
875inline const char * UBX_CFG_VALGET_V0_LAYER_STR(const uint8_t layer) { return types::IxToStr(layer, "RAM", "BBR", "FLASH", "?", "?", "?", "?", "DEFAULT"); } //!< @todo documentation
876static constexpr std::size_t UBX_CFG_VALGET_V0_MAX_K = 64; //!< UBX-CFG-VALGET.cfgData maximum number of keys
877static constexpr std::size_t UBX_CFG_VALGET_V0_KEYS_MAX_SIZE = UBX_CFG_VALGET_V0_MAX_K * sizeof(uint32_t); //!< UBX-CFG-VALGET.keys maximum size
878static constexpr uint32_t UBX_CFG_VALGET_V0_GROUP_WILDCARD(const uint32_t groupId) { return groupId | 0x0000ffff; } //!< UBX-CFG-VALGET.keys group wildcard
879static constexpr uint32_t UBX_CFG_VALGET_V0_ALL_WILDCARD = 0x0fffffff; //!< UBX-CFG-VALGET.keys all wildcard
880static constexpr std::size_t UBX_CFG_VALGET_V0_MAX_SIZE = UBX_CFG_VALGET_V0_MIN_SIZE + UBX_CFG_VALGET_V0_KEYS_MAX_SIZE; //!< @todo documentation
881
882static constexpr uint8_t UBX_CFG_VALGET_V1_VERSION = 0x01; //!< UBX-CFG-VALGET.version value
883static constexpr std::size_t UBX_CFG_VALGET_V1_MIN_SIZE = sizeof(UBX_CFG_VALGET_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
884static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_RAM = 0; //!< UBX-CFG-VALGET.layers value: layer RAM
885static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_BBR = 1; //!< UBX-CFG-VALGET.layers value: layer BBR
886static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_FLASH = 2; //!< UBX-CFG-VALGET.layers value: layer Flash
887static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_DEFAULT = 7; //!< UBX-CFG-VALGET.layers value: layer Default
888inline const char * UBX_CFG_VALGET_V1_LAYER_STR(const uint8_t layer) { return types::IxToStr(layer, "RAM", "BBR", "FLASH", "?", "?", "?", "?", "DEFAULT"); } //!< @todo documentation
889static constexpr std::size_t UBX_CFG_VALGET_V1_MAX_KV = 64; //!< UBX-CFG-VALGET.cfgData maximum number of keys
890static constexpr std::size_t UBX_CFG_VALGET_V1_CFGDATA_MAX_SIZE = UBX_CFG_VALGET_V1_MAX_KV * (sizeof(uint32_t) + sizeof(uint64_t)); //!< UBX-CFG-VALGET.keys maximum size
891static constexpr uint32_t UBX_CFG_VALGET_V1_GROUP_WILDCARD(const uint32_t groupId) { return groupId | 0x0000ffff; } //!< UBX-CFG-VALGET.keys group wildcard
892static constexpr uint32_t UBX_CFG_VALGET_V1_ALL_WILDCARD = 0x0fffffff; //!< UBX-CFG-VALGET.keys all wildcard
893static constexpr std::size_t UBX_CFG_VALGET_V1_MAX_SIZE = UBX_CFG_VALGET_V1_MIN_SIZE + UBX_CFG_VALGET_V1_CFGDATA_MAX_SIZE; //!< @todo documentation
894// clang-format on
895
896///@}
897// ---------------------------------------------------------------------------------------------------------------------
898/**
899 * @name UBX-CFG-VALDEL message
900 * @{
901 */
902
903//! UBX-CFG-VALDEL (version 1, input) message payload header
904struct UBX_CFG_VALDEL_V1_GROUP0 // clang-format off
905{
906 uint8_t version; //!< Message version (#UBX_CFG_VALGET_V1_VERSION)
907 uint8_t layers; //!< Configuration layers
908 uint8_t transaction; //!< Transaction mode
909 uint8_t reserved; //!< Reserved (set to 0x00)
910}; // clang-format on
911
912static_assert(sizeof(UBX_CFG_VALDEL_V1_GROUP0) == 4, "");
913
914// clang-format off
915static constexpr uint8_t UBX_CFG_VALDEL_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
916static constexpr uint8_t UBX_CFG_VALDEL_V1_VERSION = 0x01; //!< UBX-CFG-VALDEL.version value
917static constexpr std::size_t UBX_CFG_VALDEL_V1_MIN_SIZE = sizeof(UBX_CFG_VALDEL_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
918static constexpr uint8_t UBX_CFG_VALDEL_V1_LAYER_BBR = 0x02; //!< UBX-CFG-VALDEL.layers flag: layer BBR
919static constexpr uint8_t UBX_CFG_VALDEL_V1_LAYER_FLASH = 0x04; //!< UBX-CFG-VALDEL.layers flag: layer Flash
920static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_NONE = 0; //!< UBX-CFG-VALDEL.transaction value: no transaction
921static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_BEGIN = 1; //!< UBX-CFG-VALDEL.transaction value: transaction begin
922static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_CONTINUE = 2; //!< UBX-CFG-VALDEL.transaction value: transaction continue
923static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_END = 3; //!< UBX-CFG-VALDEL.transaction value: transaction: end
924inline const char * UBX_CFG_VALDEL_V1_TRANSACTION_STR(const uint8_t transaction) { return types::IxToStr(transaction, "NONE", "BEGIN", "CONTINUE", "END"); } //!< @todo documentation
925static constexpr uint8_t UBX_CFG_VALDEL_V1_RESERVED = 0x00; //!< UBX-CFG-VALDEL.reserved value
926static constexpr std::size_t UBX_CFG_VALDEL_V1_MAX_K = 64; //!< UBX-CFG-VALDEL.cfgData maximum number of key IDs
927static constexpr std::size_t UBX_CFG_VALDEL_V1_KEYS_MAX_SIZE = UBX_CFG_VALDEL_V1_MAX_K * 4; //!< UBX-CFG-VALDEL.keys maximum size
928static constexpr std::size_t UBX_CFG_VALDEL_V1_MAX_SIZE = UBX_CFG_VALDEL_V1_MIN_SIZE + UBX_CFG_VALDEL_V1_KEYS_MAX_SIZE; //!< @todo documentation
929// clang-format on
930
931///@}
932// ---------------------------------------------------------------------------------------------------------------------
933/**
934 * @name UBX-CFG-RST message
935 * @{
936 */
937
938//! UBX-CFG-RST (version 0, command) message payload
939struct UBX_CFG_RST_V0_GROUP0 // clang-format off
940{
941 uint16_t navBbrMask; //!< BBR sections to clear
942 uint8_t resetMode; //!< Reset type
943 uint8_t reserved; //!< Reserved
944}; // clang-format on
945
946static_assert(sizeof(UBX_CFG_RST_V0_GROUP0) == 4, "");
947
948// clang-format off
949static constexpr std::size_t UBX_CFG_RST_V0_SIZE = sizeof(UBX_CFG_RST_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
950static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_NONE = 0x0001; //!< Nothing
951static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_EPH = 0x0001; //!< Ephemeris
952static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_ALM = 0x0002; //!< Almanac
953static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_HEALTH = 0x0004; //!< Health
954static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_KLOB = 0x0008; //!< Klobuchar parameters
955static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_POS = 0x0010; //!< Position
956static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_CLKD = 0x0020; //!< Clock drift
957static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_OSC = 0x0040; //!< Oscillator parameters
958static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_UTC = 0x0080; //!< UTC and leap second parameters
959static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_RTC = 0x0100; //!< RTC
960static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_AOP = 0x8000; //!< AssistNow Autonomous
961static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_HOTSTART = 0x0000; //!< Hostsart (keep all data)
962static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_WARMSTART = 0x0001; //!< Warmstart (clear ephemerides)
963static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_COLDSTART = 0xffff; //!< Coldstart (erase all data)
964static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_HW_FORCED = 0x00; //!< Forced, immediate hardware reset
965static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_SW = 0x01; //!< Controlled software reset
966static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_GNSS = 0x02; //!< Restart GNSS
967static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_HW_CONTROLLED = 0x04; //!< Controlled hardware reset
968static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_GNSS_STOP = 0x08; //!< Stop GNSS
969static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_GNSS_START = 0x09; //!< Start GNSS
970inline const char * UBX_CFG_RST_V0_RESETMODE_STR(const uint8_t resetMode) { return types::IxToStr(resetMode, "HW_FORCED", "SW", "GNSS", "?", "HW_CONTROLLED", "?", "?", "?", "GNSS_STOP", "GNSS_START"); } //!< @todo documentation
971static constexpr uint8_t UBX_CFG_RST_V0_RESERVED = 0x00; //!< Reserved
972// clang-format on
973
974///@}
975// ---------------------------------------------------------------------------------------------------------------------
976/**
977 * @name UBX-CFG-CFG message
978 * @{
979 */
980
981//! UBX-CFG-CFG (version 0, command) message head
982struct UBX_CFG_CFG_V0_GROUP0 // clang-format off
983{
984 uint32_t clearMask; //!< @todo documentation
985 uint32_t saveMask; //!< @todo documentation
986 uint32_t loadMask; //!< @todo documentation
987}; // clang-format on
988
989static_assert(sizeof(UBX_CFG_CFG_V0_GROUP0) == 12, "");
990
991//! UBX-CFG-CFG (version 0, command) message optional group
992struct UBX_PACKED UBX_CFG_CFG_V0_GROUP1 // clang-format off
993{
994 uint8_t deviceMask; //!< @todo documentation
995};// clang-format off
996
997static_assert(sizeof(UBX_CFG_CFG_V0_GROUP1) == 1, "");
998
999// clang-format off
1000static constexpr std::size_t UBX_CFG_CFG_V0_MIN_SIZE = sizeof(UBX_CFG_CFG_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1001static constexpr std::size_t UBX_CFG_CFG_V0_MAX_SIZE = UBX_CFG_CFG_V0_MIN_SIZE + sizeof(UBX_CFG_CFG_V0_GROUP1); //!< @todo documentation
1002static constexpr uint32_t UBX_CFG_CFG_V0_CLEAR_NONE = 0x00000000; //!< Clear no config
1003static constexpr uint32_t UBX_CFG_CFG_V0_CLEAR_ALL = 0xffffffff; //!< Clear all config
1004static constexpr uint32_t UBX_CFG_CFG_V0_SAVE_NONE = 0x00000000; //!< Save no config
1005static constexpr uint32_t UBX_CFG_CFG_V0_SAVE_ALL = 0xffffffff; //!< Save all config
1006static constexpr uint32_t UBX_CFG_CFG_V0_LOAD_NONE = 0x00000000; //!< Load no config
1007static constexpr uint32_t UBX_CFG_CFG_V0_LOAD_ALL = 0xffffffff; //!< Load all config
1008static constexpr uint8_t UBX_CFG_CFG_V0_DEVICE_BBR = 0x01; //!< Layer BBR
1009static constexpr uint8_t UBX_CFG_CFG_V0_DEVICE_FLASH = 0x02; //!< Layer Flash
1010// clang-format on
1011
1012///@}
1013// ---------------------------------------------------------------------------------------------------------------------
1014/**
1015 * @name UBX-ESF-MEAS message
1016 * @{
1017 */
1018
1019//! UBX-ESF-MEAS (version 0, input and output) message head
1020struct UBX_ESF_MEAS_V0_GROUP0 // clang-format off
1021{
1022 uint32_t timeTag; //!< @todo documentation
1023 uint16_t flags; //!< @todo documentation
1024 uint16_t id; //!< @todo documentation
1025}; // clang-format on
1026
1027static_assert(sizeof(UBX_ESF_MEAS_V0_GROUP0) == 8, "");
1028
1029//! UBX-ESF-MEAS (version 0, input and output) data
1030struct UBX_ESF_MEAS_V0_GROUP1 // clang-format off
1031{
1032 uint32_t data; //!< @todo documentation
1033}; // clang-format on
1034
1035static_assert(sizeof(UBX_ESF_MEAS_V0_GROUP1) == 4, "");
1036
1037//! UBX-ESF-MEAS (version 0, input and output) timetag
1038struct UBX_ESF_MEAS_V0_GROUP2 // clang-format off
1039{
1040 uint32_t calibTtag; //!< @todo documentation
1041}; // clang-format on
1042
1043static_assert(sizeof(UBX_ESF_MEAS_V0_GROUP2) == 4, "");
1044
1045// clang-format off
1046static constexpr std::size_t UBX_ESF_MEAS_V0_MIN_SIZE = sizeof(UBX_ESF_MEAS_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1047static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT(const uint16_t flags) { return flags & 0x03; } //!< @todo documentation
1048inline const char * UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_STR(const uint16_t flags) { return types::IxToStr(UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT(flags), "NONE", "EXT0", "EXT1"); } //!< @todo documentation
1049static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_NONE = 0; //!< @todo documentation
1050static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_EXT0 = 1; //!< @todo documentation
1051static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_EXT1 = 2; //!< @todo documentation
1052static constexpr bool UBX_ESF_MEAS_V0_FLAGS_CALIBTTAGVALID(const uint16_t flags) { return (flags & 0x0008) == 0x0008; } //!< @todo documentation
1053static constexpr std::size_t UBX_ESF_MEAS_V0_FLAGS_NUMMEAS(const uint16_t flags) { return (flags >> 11) & 0x1f; } //!< @todo documentation
1054static constexpr uint32_t UBX_ESF_MEAS_V0_DATA_DATAFIELD(const uint32_t data) { return data & 0x00ffffff; } //!< @todo documentation
1055static constexpr uint8_t UBX_ESF_MEAS_V0_DATA_DATATYPE(const uint32_t data) { return (data >> 24) & 0x0000003f; } //!< same enum as UBX-ESF-STATUS.type it seems
1056static constexpr double UBX_ESF_MEAS_V0_CALIBTTAG_SCALE = 1e-3; //!< @todo documentation
1057static inline std::size_t UBX_ESF_MEAS_V0_SIZE(const uint8_t* msg) { /* argh.. nice message design! */ \
1058 uint16_t flags; std::memcpy(&flags, &msg[UBX_HEAD_SIZE + 4], sizeof(flags)); return sizeof(UBX_ESF_MEAS_V0_GROUP0) + UBX_FRAME_SIZE +
1059 (UBX_ESF_MEAS_V0_FLAGS_NUMMEAS(flags) * sizeof(UBX_ESF_MEAS_V0_GROUP1)) + (UBX_ESF_MEAS_V0_FLAGS_CALIBTTAGVALID(flags) ? sizeof(UBX_ESF_MEAS_V0_GROUP2) : 0); } //!< @todo documentation
1060// clang-format on
1061
1062///@}
1063// ---------------------------------------------------------------------------------------------------------------------
1064/**
1065 * @name UBX-ESF-STATUS message
1066 * @{
1067 */
1068
1069//! UBX-ESF-STATUS (version 0, output) message head
1070struct UBX_ESF_STATUS_V2_GROUP0 // clang-format off
1071{
1072 uint32_t iTOW; //!< @todo documentation
1073 uint8_t version; //!< @todo documentation
1074 uint8_t initStatus1; //!< @todo documentation
1075 uint8_t initStatus2; //!< @todo documentation
1076 uint8_t reserved0[5]; //!< @todo documentation
1077 uint8_t fusionMode; //!< @todo documentation
1078 uint8_t reserved1[2]; //!< @todo documentation
1079 uint8_t numSens; //!< @todo documentation
1080}; // clang-format on
1081
1082static_assert(sizeof(UBX_ESF_STATUS_V2_GROUP0) == 16, "");
1083
1084//! UBX-ESF-STATUS (version 0, output) per-sensor status
1085struct UBX_ESF_STATUS_V2_GROUP1 // clang-format off
1086{
1087 uint8_t sensStatus1; //!< @todo documentation
1088 uint8_t sensStatus2; //!< @todo documentation
1089 uint8_t freq; //!< @todo documentation
1090 uint8_t faults; //!< @todo documentation
1091}; // clang-format on
1092
1093static_assert(sizeof(UBX_ESF_STATUS_V2_GROUP1) == 4, "");
1094
1095// clang-format off
1096static constexpr uint8_t UBX_ESF_STATUS_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + 4]; } //!< @todo documentation
1097static constexpr uint8_t UBX_ESF_STATUS_V2_VERSION = 0x02; //!< @todo documentation
1098static constexpr std::size_t UBX_ESF_STATUS_V2_MIN_SIZE = sizeof(UBX_ESF_STATUS_V2_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1099static constexpr std::size_t UBX_ESF_STATUS_V2_SIZE(const uint8_t* msg) { return //!< @todo documentation
1100 sizeof(UBX_ESF_STATUS_V2_GROUP0) + UBX_FRAME_SIZE + (((const uint8_t *)(msg))[UBX_HEAD_SIZE + 15] * sizeof(UBX_ESF_STATUS_V2_GROUP1)); } //!< @todo documentation
1101static constexpr double UBX_ESF_STATUS_V2_ITOW_SCALE = 1e-3; //!< @todo documentation
1102static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS(const uint8_t initStatus1) { return initStatus1 & 0x03; } //!< @todo documentation
1103inline const char * UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_STR(const uint8_t initStatus1) { return types::IxToStr(UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS(initStatus1), "OFF", "INITALIZING", "INITIALIZED"); } //!< @todo documentation
1104static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_OFF = 0; //!< @todo documentation
1105static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_INITALIZING = 1; //!< @todo documentation
1106static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_INITIALIZED = 2; //!< @todo documentation
1107static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS(const uint8_t initStatus1) { return (initStatus1 >> 2) & 0x07; } //!< @todo documentation
1108inline const char * UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_STR(const uint8_t initStatus1) { return types::IxToStr(UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS(initStatus1), "OFF", "INITALIZING", "INITIALIZED1", "INITIALIZED2"); } //!< @todo documentation
1109static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_OFF = 0; //!< @todo documentation
1110static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_INITALIZING = 1; //!< @todo documentation
1111static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_INITIALIZED1 = 2; //!< @todo documentation
1112static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_INITIALIZED2 = 3; //!< @todo documentation
1113static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS(const uint8_t initStatus1) { return (initStatus1 >> 5) & 0x07; } //!< @todo documentation
1114inline const char * UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_STR(const uint8_t initStatus1) { return types::IxToStr(UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS(initStatus1), "OFF", "INITALIZING", "INITIALIZED1", "INITIALIZED2"); } //!< @todo documentation
1115static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_OFF = 0; //!< @todo documentation
1116static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_INITALIZING = 1; //!< @todo documentation
1117static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_INITIALIZED1 = 2; //!< @todo documentation
1118static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_INITIALIZED2 = 3; //!< @todo documentation
1119static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS(const uint8_t initStatus2) { return initStatus2 & 0x03; } //!< @todo documentation
1120inline const char * UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_STR(const uint8_t initStatus2) { return types::IxToStr(UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS(initStatus2), "OFF", "INITALIZING", "INITIALIZED1", "INITIALIZED2"); } //!< @todo documentation
1121static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_OFF = 0; //!< @todo documentation
1122static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_INITALIZING = 1; //!< @todo documentation
1123static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_INITIALIZED1 = 2; //!< @todo documentation
1124static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_INITIALIZED2 = 3; //!< @todo documentation
1125static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_INIT = 0x00; //!< @todo documentation
1126static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_FUSION = 0x01; //!< @todo documentation
1127static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_SUSPENDED = 0x02; //!< @todo documentation
1128static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_DISABLED = 0x03; //!< @todo documentation
1129inline const char * UBX_ESF_STATUS_V2_FUSIONMODE_STR(const uint8_t fusionMode) { return types::IxToStr(fusionMode, "INIT", "FUSION", "SUSPENDED", "DISABLED"); } //!< @todo documentation
1130static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS1_TYPE(const uint8_t sensStatus1) { return sensStatus1 & 0x3f; } //!< same enum as UBX-ESF-MEAS.dataType it seems //!< @todo documentation
1131static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS1_USED = 0x40; //!< @todo documentation
1132static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS1_READY = 0x80; //!< @todo documentation
1133static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS(const uint8_t sensStatus2) { return sensStatus2 & 0x03; } //!< @todo documentation
1134inline const char * UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_STR(const uint8_t sensStatus2) { return types::IxToStr(UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS(sensStatus2), "NOTCALIB", "CALIBRATING", "CALIBRATED1", "CALIBRATED2"); } //!< @todo documentation
1135static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_NOTCALIB = 0; //!< @todo documentation
1136static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_CALIBRATING = 1; //!< @todo documentation
1137static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_CALIBRATED1 = 2; //!< @todo documentation
1138static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_CALIBRATED2 = 3; //!< @todo documentation
1139static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS(const uint8_t sensStatus2) { return (sensStatus2 >> 2) & 0x03; } //!< @todo documentation
1140inline const char * UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_STR(const uint8_t sensStatus2) { return types::IxToStr(UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS(sensStatus2), "NODATA", "FIRSTBYTE", "EVENT", "TIMETAG"); } //!< @todo documentation
1141static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_NODATA = 0; //!< @todo documentation
1142static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_FIRSTBYTE = 1; //!< @todo documentation
1143static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_EVENT = 2; //!< @todo documentation
1144static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_TIMETAG = 3; //!< @todo documentation
1145static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_BADMEAS = 0x01; //!< @todo documentation
1146static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_BADTTAG = 0x02; //!< @todo documentation
1147static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_MISSINGMEAS = 0x04; //!< @todo documentation
1148static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_NOISYMEAS = 0x08; //!< @todo documentation
1149// clang-format on
1150
1151///@}
1152// ---------------------------------------------------------------------------------------------------------------------
1153/**
1154 * @name UBX-MGA-GAL-OSNMA_PUBKEY message
1155 * @{
1156 */
1157
1158//! UBX-MGA-GAL-OSNMA_PUBKEY (version 0, input) payload
1159struct UBX_MGA_GAL_OSNMA_PUBKEY_V0_GROUP0 // clang-format off
1160{
1161 uint8_t type; //!< @todo documentation
1162 uint8_t version; //!< @todo documentation
1163 uint8_t bitfield0; //!< @todo documentation
1164 uint8_t reserved0; //!< @todo documentation
1165 uint8_t pubKeyPoint[67]; //!< @todo documentation
1166 uint8_t reserved1; //!< @todo documentation
1167}; // clang-format on
1168
1169static_assert(sizeof(UBX_MGA_GAL_OSNMA_PUBKEY_V0_GROUP0) == 72, "");
1170
1171// clang-format off
1172static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_TYPE = 0x07; //!< @todo documentation
1173static constexpr const char* UBX_MGA_GAL_OSNMA_PUBKEY_STRID = "UBX-MGA-GAL-OSNMA_PUBKEY"; //!< @todo documentation
1174static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_VERSION = 0x00; //!< @todo documentation
1175static constexpr std::size_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_SIZE = sizeof(UBX_MGA_GAL_OSNMA_PUBKEY_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1176static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYID(const uint8_t bitfield0) { return bitfield0 & 0x0f; } //!< @todo documentation
1177static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE(const uint8_t bitfield0) { return (bitfield0 >> 4) & 0x0f; } //!< @todo documentation
1178inline const char * UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE_STR(const uint8_t bitfield0) { return types::IxToStr(UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE(bitfield0), "?", "ECDSAP256", "?", "ECDSAP521"); } //!< @todo documentation
1179static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE_ECDSAP256 = 1; //!< @todo documentation
1180static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE_ECDSAP521 = 3; //!< @todo documentation
1181// clang-format on
1182
1183///@}
1184// ---------------------------------------------------------------------------------------------------------------------
1185/**
1186 * @name UBX-MGA-GAL-OSNMA_MERKLE message
1187 * @{
1188 */
1189
1190//! UBX-MGA-GAL-OSNMA_MERKLE (version 0, input) payload
1191struct UBX_MGA_GAL_OSNMA_MERKLE_V0_GROUP0 // clang-format off
1192{
1193 uint8_t type; //!< @todo documentation
1194 uint8_t version; //!< @todo documentation
1195 uint8_t bitfield0; //!< @todo documentation
1196 uint8_t reserved0; //!< @todo documentation
1197 uint8_t treeNode[32]; //!< @todo documentation
1198}; // clang-format on
1199
1200static_assert(sizeof(UBX_MGA_GAL_OSNMA_MERKLE_V0_GROUP0) == 36, "");
1201
1202// clang-format off
1203static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_TYPE = 0x08; //!< @todo documentation
1204static constexpr const char* UBX_MGA_GAL_OSNMA_MERKLE_STRID = "UBX-MGA-GAL-OSNMA_MERKLE"; //!< @todo documentation
1205static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_VERSION = 0x00; //!< @todo documentation
1206static constexpr std::size_t UBX_MGA_GAL_OSNMA_MERKLE_V0_SIZE = sizeof(UBX_MGA_GAL_OSNMA_MERKLE_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1207static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME(const uint8_t bitfield0) { return bitfield0 & 0x01; } //!< @todo documentation
1208inline const char * UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME_STR(const uint8_t bitfield0) { return types::IxToStr(UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME(bitfield0), "CURRENT", "FUTURE"); } //!< @todo documentation
1209static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME_CURRENT = 0; //!< @todo documentation
1210static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME_FUTURE = 1; //!< @todo documentation
1211// clang-format on
1212
1213///@}
1214// ---------------------------------------------------------------------------------------------------------------------
1215/**
1216 * @name UBX-MGA-INI-TIME_UTC message
1217 * @{
1218 */
1219
1220//! UBX-MGA-INI-TIME_UTC (version 0, input) payload
1221struct UBX_MGA_INI_TIME_UTC_V0_GROUP0 // clang-format off
1222{
1223 uint8_t type; //!< @todo documentation
1224 uint8_t version; //!< @todo documentation
1225 uint8_t ref; //!< @todo documentation
1226 int8_t leapSecs; //!< @todo documentation
1227 uint16_t year; //!< @todo documentation
1228 uint8_t month; //!< @todo documentation
1229 uint8_t day; //!< @todo documentation
1230 uint8_t hour; //!< @todo documentation
1231 uint8_t minute; //!< @todo documentation
1232 uint8_t second; //!< @todo documentation
1233 uint8_t bitfield0; //!< @todo documentation
1234 uint32_t ns; //!< @todo documentation
1235 uint16_t tAccS; //!< @todo documentation
1236 uint8_t reserved0[2]; //!< @todo documentation
1237 uint32_t tAccNs; //!< @todo documentation
1238}; // clang-format on
1239
1240static_assert(sizeof(UBX_MGA_INI_TIME_UTC_V0_GROUP0) == 24, "");
1241
1242// clang-format off
1243static constexpr uint8_t UBX_MGA_INI_TIME_UTC_TYPE = 0x10; //!< @todo documentation
1244static constexpr const char* UBX_MGA_INI_TIME_UTC_STRID = "UBX-MGA-INI-TIME_UTC"; //!< @todo documentation
1245static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_VERSION = 0x00; //!< @todo documentation
1246static constexpr std::size_t UBX_MGA_INI_TIME_UTC_V0_SIZE = sizeof(UBX_MGA_INI_TIME_UTC_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1247static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE(const uint8_t ref) { return ref & 0x0f; } //!< @todo documentation
1248inline const char * UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_STR(const uint8_t ref) { return types::IxToStr(UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE(ref), "NONE", "EXTINT0", "EXTINT1"); } //!< @todo documentation
1249static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_NONE = 0; //!< @todo documentation
1250static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_EXTINT0 = 1; //!< @todo documentation
1251static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_EXTINT1 = 2; //!< @todo documentation
1252static constexpr bool UBX_MGA_INI_TIME_UTC_V0_REF_FALL(const uint8_t ref) { return (ref & 0x10) == 0x10; } //!< @todo documentation
1253static constexpr bool UBX_MGA_INI_TIME_UTC_V0_REF_LAST(const uint8_t ref) { return (ref & 0x20) == 0x20; } //!< @todo documentation
1254static constexpr int8_t UBX_MGA_INI_TIME_UTC_V0_LEAPSECS_UNKNOWN = -128; //!< @todo documentation
1255static constexpr bool UBX_MGA_INI_TIME_UTC_V0_BITFIELD0_TRUSTEDSOURCE(const uint8_t bitfield0) { return (bitfield0 & 0x01) == 0x01; } //!< @todo documentation
1256// clang-format on
1257
1258///@}
1259// ---------------------------------------------------------------------------------------------------------------------
1260/**
1261 * @name UBX-MGA-INI-TIME_GNSS message
1262 * @{
1263 */
1264
1265//! UBX-MGA-INI-TIME_GNSS (version 0, input) payload
1266struct UBX_MGA_INI_TIME_GNSS_V0_GROUP0 // clang-format off
1267{
1268 uint8_t type; //!< @todo documentation
1269 uint8_t version; //!< @todo documentation
1270 uint8_t ref; //!< @todo documentation
1271 uint8_t gnssId; //!< @todo documentation
1272 uint8_t bitfield0; //!< @todo documentation
1273 uint8_t reserved0; //!< @todo documentation
1274 uint16_t week; //!< @todo documentation
1275 uint32_t tow; //!< @todo documentation
1276 uint32_t ns; //!< @todo documentation
1277 uint16_t tAccS; //!< @todo documentation
1278 uint8_t reserved1[2]; //!< @todo documentation
1279 uint32_t tAccNs; //!< @todo documentation
1280}; // clang-format on
1281
1282static_assert(sizeof(UBX_MGA_INI_TIME_GNSS_V0_GROUP0) == 24, "");
1283
1284// clang-format off
1285static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_TYPE = 0x11; //!< @todo documentation
1286static constexpr const char* UBX_MGA_INI_TIME_GNSS_STRID = "UBX-MGA-INI-TIME_GNSS"; //!< @todo documentation
1287static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_VERSION = 0x00; //!< @todo documentation
1288static constexpr std::size_t UBX_MGA_INI_TIME_GNSS_V0_SIZE = sizeof(UBX_MGA_INI_TIME_GNSS_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1289static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE(const uint8_t ref) { return ref & 0x0f; } //!< @todo documentation
1290inline const char * UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_STR(const uint8_t ref) { return types::IxToStr(UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE(ref), "NONE", "EXTINT0", "EXTINT1"); } //!< @todo documentation
1291static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_NONE = 0; //!< @todo documentation
1292static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_EXTINT0 = 1; //!< @todo documentation
1293static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_EXTINT1 = 2; //!< @todo documentation
1294static constexpr bool UBX_MGA_INI_TIME_GNSS_V0_REF_FALL(const uint8_t ref) { return (ref & 0x10) == 0x10; } //!< @todo documentation
1295static constexpr bool UBX_MGA_INI_TIME_GNSS_V0_REF_LAST(const uint8_t ref) { return (ref & 0x20) == 0x20; } //!< @todo documentation
1296static constexpr bool UBX_MGA_INI_TIME_GNSS_V0_BITFIELD0_TRUSTEDSOURCE(const uint8_t bitfield0) { return (bitfield0 & 0x01) == 0x01; } //!< @todo documentation
1297// clang-format on
1298
1299///@}
1300// ---------------------------------------------------------------------------------------------------------------------
1301/**
1302 * @name UBX-MON-COMMS message
1303 * @{
1304 */
1305
1306//! UBX-MON-COMMS (version 0, output) payload head
1307struct UBX_MON_COMMS_V0_GROUP0 // clang-format off
1308{
1309 uint8_t version; //!< @todo documentation
1310 uint8_t nPorts; //!< @todo documentation
1311 uint8_t txErrors; //!< @todo documentation
1312 uint8_t reserved0; //!< @todo documentation
1313 uint8_t protIds[4]; //!< @todo documentation
1314}; // clang-format on
1315
1316static_assert(sizeof(UBX_MON_COMMS_V0_GROUP0) == 8, "");
1317
1318//! UBX-MON-COMMS (version 0, output) payload repeated group
1319struct UBX_MON_COMMS_V0_GROUP1 // clang-format off
1320{
1321 // Similar to UBX-MON-HW3.pinId this seems to be made up of two values actually:
1322 // - a port ID (probably same enum as in u-center's UBX-CFG-PRT: 0 = I2C, 1 = UART1, 2 = UART2, 3 = USB, 4 = SPI)
1323 // - a "bank" of ports (0, 1, ...)
1324 // u-center only shows some of the ports it seems (why?!)
1325 uint16_t portId; //!< @todo documentation
1326 uint16_t txPending; //!< @todo documentation
1327 uint32_t txBytes; //!< @todo documentation
1328 uint8_t txUsage; //!< @todo documentation
1329 uint8_t txPeakUsage; //!< @todo documentation
1330 uint16_t rxPending; //!< @todo documentation
1331 uint32_t rxBytes; //!< @todo documentation
1332 uint8_t rxUsage; //!< @todo documentation
1333 uint8_t rxPeakUsage; //!< @todo documentation
1334 uint16_t overrunErrors; //!< @todo documentation
1335 uint16_t msgs[4]; //!< @todo documentation
1336 uint8_t reserved1[8]; //!< @todo documentation
1337 uint32_t skipped; //!< @todo documentation
1338}; // clang-format on
1339
1340static_assert(sizeof(UBX_MON_COMMS_V0_GROUP1) == 40, "");
1341
1342// clang-format off
1343static constexpr uint8_t UBX_MON_COMMS_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1344static constexpr uint8_t UBX_MON_COMMS_V0_VERSION = 0x00; //!< @todo documentation
1345static constexpr std::size_t UBX_MON_COMMS_V0_MIN_SIZE = sizeof(UBX_MON_COMMS_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1346static constexpr std::size_t UBX_MON_COMMS_V0_SIZE(const uint8_t* msg) { return //!< @todo documentation
1347 sizeof(UBX_MON_COMMS_V0_GROUP0) + UBX_FRAME_SIZE + (((const uint8_t *)(msg))[UBX_HEAD_SIZE + 1] * sizeof(UBX_MON_COMMS_V0_GROUP1)); } //!< @todo documentation
1348static constexpr bool UBX_MON_COMMS_V0_TXERRORS_MEM(const uint8_t txErrors) { return (txErrors & 0x01) == 0x01; } //!< @todo documentation
1349static constexpr bool UBX_MON_COMMS_V0_TXERRORS_ALLOC(const uint8_t txErrors) { return (txErrors & 0x02) == 0x02; } //!< @todo documentation
1350static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT(const uint8_t txErrors) { return (txErrors >> 3) & 0x7; } //!< @todo documentation
1351inline const char * UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_STR(const uint8_t txErrors) { return types::IxToStr(UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT(txErrors), "NA", "I2C", "UART1", "UART2", "USB", "SPI"); } //!< @todo documentation
1352static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_NA = 0; //!< @todo documentation
1353static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_I2C = 1; //!< @todo documentation
1354static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_UART1 = 2; //!< @todo documentation
1355static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_UART2 = 3; //!< @todo documentation
1356static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_USB = 4; //!< @todo documentation
1357static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_SPI = 5; //!< @todo documentation
1358static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_UBX = 0x00; //!< @todo documentation
1359static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_NMEA = 0x01; //!< @todo documentation
1360static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_RAW = 0x03; //!< probably.. see UBX-MON-MSGPP
1361static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_RTCM2 = 0x02; //!< @todo documentation
1362static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_RTCM3 = 0x05; //!< @todo documentation
1363static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_SPARTN = 0x06; //!< @todo documentation
1364static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_OTHER = 0xff; //!< @todo documentation
1365inline const char * UBX_MON_COMMS_V0_PROTIDS_STR(const uint8_t protId) { return protId == UBX_MON_COMMS_V0_PROTIDS_OTHER ? "OTHER" : types::IxToStr(protId, "UBX", "NMEA", "RTCM2", "RAW", "?", "RTCM3", "SPARTN"); } //!< @todo documentation
1366// clang-format on
1367
1368///@}
1369// ---------------------------------------------------------------------------------------------------------------------
1370/**
1371 * @name UBX-MON-HW message
1372 * @{
1373 */
1374
1375//! UBX-MON-HW (version 0, output)
1376struct UBX_MON_HW_V0_GROUP0 // clang-format off
1377{
1378 uint32_t pinSel; //!< @todo documentation
1379 uint32_t pinBank; //!< @todo documentation
1380 uint32_t pinDir; //!< @todo documentation
1381 uint32_t pinVal; //!< @todo documentation
1382 uint16_t noisePerMS; //!< @todo documentation
1383 uint16_t agcCnt; //!< @todo documentation
1384 uint8_t aStatus; //!< @todo documentation
1385 uint8_t aPower; //!< @todo documentation
1386 uint8_t flags; //!< @todo documentation
1387 uint8_t reserved0; //!< @todo documentation
1388 uint32_t usedMask; //!< @todo documentation
1389 uint8_t VP[17]; //!< @todo documentation
1390 uint8_t jamInd; //!< @todo documentation
1391 uint8_t reserved1[2]; //!< @todo documentation
1392 uint32_t pinIrq; //!< @todo documentation
1393 uint32_t pullH; //!< @todo documentation
1394 uint32_t pullL; //!< @todo documentation
1395}; // clang-format on
1396
1397static_assert(sizeof(UBX_MON_HW_V0_GROUP0) == 60, "");
1398
1399// clang-format off
1400static constexpr std::size_t UBX_MON_HW_V0_SIZE = sizeof(UBX_MON_HW_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1401static constexpr uint8_t UBX_MON_HW_V0_FLAGS_RTCCALIB = 0x01; //!< @todo documentation
1402static constexpr uint8_t UBX_MON_HW_V0_FLAGS_SAFEBOOT = 0x02; //!< @todo documentation
1403static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE(const uint8_t flags) { return (flags >> 2) & 0x03; } //!< @todo documentation
1404inline const char * UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_STR(const uint8_t flags) { return types::IxToStr(UBX_MON_HW_V0_FLAGS_JAMMINGSTATE(flags), "UNKNOWN", "OK", "WARNING", "CRITICAL"); } //!< @todo documentation
1405static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_UNKNOWN = 0x00; //!< @todo documentation
1406static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_OK = 0x01; //!< @todo documentation
1407static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_WARNING = 0x02; //!< @todo documentation
1408static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_CRITICAL = 0x03; //!< @todo documentation
1409static constexpr uint8_t UBX_MON_HW_V0_FLAGS_XTALABSENT = 0x10; //!< @todo documentation
1410static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_INIT = 0x00; //!< @todo documentation
1411static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_UNKNOWN = 0x01; //!< @todo documentation
1412static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_OK = 0x02; //!< @todo documentation
1413static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_SHORT = 0x03; //!< @todo documentation
1414static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_OPEN = 0x04; //!< @todo documentation
1415inline const char * UBX_MON_HW_V0_ASTATUS_STR(const uint8_t aStatus) { return types::IxToStr(aStatus, "INIT", "UNKNOWN", "OK", "SHORT", "OPEN"); } //!< @todo documentation
1416static constexpr uint8_t UBX_MON_HW_V0_APOWER_OFF = 0x00; //!< @todo documentation
1417static constexpr uint8_t UBX_MON_HW_V0_APOWER_ON = 0x01; //!< @todo documentation
1418static constexpr uint8_t UBX_MON_HW_V0_APOWER_UNKNOWN = 0x02; //!< @todo documentation
1419inline const char * UBX_MON_HW_V0_APOWER_STR(const uint8_t aPower) { return types::IxToStr(aPower, "OFF", "ON", "UNKNOWN"); } //!< @todo documentation
1420static constexpr uint16_t UBX_MON_HW_V0_NOISEPERMS_MAX = 200; //!< This seems to be what u-center uses..
1421static constexpr uint16_t UBX_MON_HW_V0_AGCCNT_MAX = 8191; //!< @todo documentation
1422static constexpr uint8_t UBX_MON_HW_V0_JAMIND_MAX = 255; //!< @todo documentation
1423// clang-format on
1424
1425///@}
1426// ---------------------------------------------------------------------------------------------------------------------
1427/**
1428 * @name UBX-MON-HW2 message
1429 * @{
1430 */
1431
1432//! UBX-MON-HW (version 0, output) payload
1433struct UBX_MON_HW2_V0_GROUP0 // clang-format off
1434{
1435 int8_t ofsI; //!< @todo documentation
1436 uint8_t magI; //!< @todo documentation
1437 int8_t ofsQ; //!< @todo documentation
1438 uint8_t magQ; //!< @todo documentation
1439 uint8_t cfgSource; //!< @todo documentation
1440 uint8_t reserved0[3]; //!< @todo documentation
1441 uint32_t lowLevCfg; //!< @todo documentation
1442 uint8_t reserved1[8]; //!< @todo documentation
1443 uint32_t postStatus; //!< @todo documentation
1444 uint8_t reserved2[3]; //!< @todo documentation
1445}; // clang-format on
1446
1447static_assert(sizeof(UBX_MON_HW2_V0_GROUP0) == 28, "");
1448
1449// clang-format off
1450static constexpr std::size_t UBX_MON_HW2_V0_SIZE = sizeof(UBX_MON_HW2_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation+ UBX_FRAME_SIZE
1451static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_ROM = 114; //!< @todo documentation
1452static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_OTP = 111; //!< @todo documentation
1453static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_PIN = 112; //!< @todo documentation
1454static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_FLASH = 102; //!< @todo documentation
1455inline const char * UBX_MON_HW2_V0_CFGSOURCE_STR(const uint8_t cfgSource) { switch (cfgSource) { \
1456 case UBX_MON_HW2_V0_CFGSOURCE_ROM: return "ROM"; \
1457 case UBX_MON_HW2_V0_CFGSOURCE_OTP: return "OTP"; \
1458 case UBX_MON_HW2_V0_CFGSOURCE_PIN: return "PIN"; \
1459 case UBX_MON_HW2_V0_CFGSOURCE_FLASH: return "FLASH"; } return "?"; } //!< @todo documentation
1460// clang-format on
1461
1462///@}
1463// ---------------------------------------------------------------------------------------------------------------------
1464/**
1465 * @name UBX-MON-HW3 message
1466 * @{
1467 */
1468
1469//! UBX-MON-HW3 (version 0, output) payload
1470struct UBX_MON_HW3_V0_GROUP0 // clang-format off
1471{
1472 uint8_t version; //!< @todo documentation
1473 uint8_t nPins; //!< @todo documentation
1474 uint8_t flags; //!< @todo documentation
1475 char hwVersion[10]; //!< @todo documentation
1476 uint8_t reserved0[9]; //!< @todo documentation
1477}; // clang-format on
1478
1479static_assert(sizeof(UBX_MON_HW3_V0_GROUP0) == 22, "");
1480
1481//! UBX-MON-HW3 (version 0, output) payload
1482struct UBX_PACKED UBX_MON_HW3_V0_GROUP1 // clang-format off
1483{
1484 uint16_t pinId; //!< @todo documentation // u-center shows ((pinId & 0xff00) >> 8) | ((pinId & 0x00ff) << 8), seems to be: (pinNo << 8) | pinBank
1485 uint16_t pinMask; //!< @todo documentation
1486 uint8_t VP; //!< @todo documentation
1487 uint8_t reserved1; //!< @todo documentation
1488}; // clang-format on
1489
1490static_assert(sizeof(UBX_MON_HW3_V0_GROUP1) == 6, "");
1491
1492// clang-format off
1493static constexpr uint8_t UBX_MON_HW3_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1494static constexpr uint8_t UBX_MON_HW3_V0_VERSION = 0x00; //!< @todo documentation
1495static constexpr std::size_t UBX_MON_HW3_V0_MIN_SIZE = sizeof(UBX_MON_HW3_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1496static constexpr std::size_t UBX_MON_HW3_V0_SIZE(const uint8_t* msg) { return //!< @todo documentation
1497 sizeof(UBX_MON_HW3_V0_GROUP0) + UBX_FRAME_SIZE + (((uint8_t*)(msg))[UBX_HEAD_SIZE + 1] * sizeof(UBX_MON_HW3_V0_GROUP1)); } //!< @todo documentation
1498static constexpr bool UBX_MON_HW3_V0_FLAGS_RTCCALIB(const uint8_t flags) { return (flags & 0x01) == 0x01; } //!< @todo documentation
1499static constexpr bool UBX_MON_HW3_V0_FLAGS_SAFEBOOT(const uint8_t flags) { return (flags & 0x02) == 0x02; } //!< @todo documentation
1500static constexpr bool UBX_MON_HW3_V0_FLAGS_XTALABSENT(const uint8_t flags) { return (flags & 0x04) == 0x04; } //!< @todo documentation
1501static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PERIPHPIO(const uint16_t pinMask) { return pinMask & 0x01; } //!< @todo documentation
1502inline const char * UBX_MON_HW3_V0_PINMASK_PERIPHPIO_STR(const uint16_t pinMask) { return types::IxToStr(UBX_MON_HW3_V0_PINMASK_PERIPHPIO(pinMask), "PERIPH", "PIO"); } //!< @todo documentation
1503static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PERIPHPIO_PERIPH = 0; //!< @todo documentation
1504static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PERIPHPIO_PIO = 1; //!< @todo documentation
1505static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK(const uint16_t pinMask) { return (pinMask >> 1) & 0x01; } //!< @todo documentation
1506inline const char * UBX_MON_HW3_V0_PINMASK_PINBANK_STR(const uint16_t pinMask) { return types::IxToStr(UBX_MON_HW3_V0_PINMASK_PINBANK(pinMask), "A", "B", "C", "D", "E", "F", "G", "H"); } //!< @todo documentation
1507static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_A = 0; //!< @todo documentation
1508static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_B = 1; //!< @todo documentation
1509static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_C = 2; //!< @todo documentation
1510static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_D = 3; //!< @todo documentation
1511static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_E = 4; //!< @todo documentation
1512static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_F = 5; //!< @todo documentation
1513static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_G = 6; //!< @todo documentation
1514static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_H = 7; //!< @todo documentation
1515static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_DIRECTION(const uint16_t pinMask) { return (pinMask >> 4) & 0x01; } //!< @todo documentation
1516inline const char * UBX_MON_HW3_V0_PINMASK_DIRECTION_STR(const uint16_t pinMask) { return types::IxToStr(UBX_MON_HW3_V0_PINMASK_DIRECTION(pinMask), "OUT", "IN"); } //!< @todo documentation
1517static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_DIRECTION_OUT = 0; //!< @todo documentation
1518static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_DIRECTION_IN = 1; //!< @todo documentation
1519static constexpr bool UBX_MON_HW3_V0_PINMASK_VALUE(const uint16_t pinMask) { return (pinMask & 0x0020) == 0x0020; } //!< @todo documentation
1520static constexpr bool UBX_MON_HW3_V0_PINMASK_VPMANAGER(const uint16_t pinMask) { return (pinMask & 0x0040) == 0x0040; } //!< @todo documentation
1521static constexpr bool UBX_MON_HW3_V0_PINMASK_PIOIRQ(const uint16_t pinMask) { return (pinMask & 0x0080) == 0x0080; } //!< @todo documentation
1522static constexpr bool UBX_MON_HW3_V0_PINMASK_PIOPULLHIGH(const uint16_t pinMask) { return (pinMask & 0x0100) == 0x0100; } //!< @todo documentation
1523static constexpr bool UBX_MON_HW3_V0_PINMASK_PIOPULLLOW(const uint16_t pinMask) { return (pinMask & 0x0200) == 0x0200; } //!< @todo documentation
1524// clang-format on
1525
1526///@}
1527// ---------------------------------------------------------------------------------------------------------------------
1528/**
1529 * @name UBX-MON-RF message
1530 * @{
1531 */
1532
1533//! UBX-MON-RF (version 0, output) payload head
1534struct UBX_MON_RF_V0_GROUP0 // clang-format off
1535{
1536 uint8_t version; //!< @todo documentation
1537 uint8_t nBlocks; //!< @todo documentation
1538 uint8_t reserved[2]; //!< @todo documentation
1539};
1540// clang-format on
1541
1542static_assert(sizeof(UBX_MON_RF_V0_GROUP0) == 4, "");
1543
1544//! UBX-MON-RF (version 0, output) payload repeated group
1545struct UBX_MON_RF_V0_GROUP1 // clang-format off
1546{
1547 uint8_t blockId; //!< @todo documentation
1548 uint8_t flags; //!< @todo documentation
1549 uint8_t antStatus; //!< @todo documentation
1550 uint8_t antPower; //!< @todo documentation
1551 uint32_t postStatus; //!< @todo documentation
1552 uint8_t reserved1[4]; //!< @todo documentation
1553 uint16_t noisePerMS; //!< @todo documentation
1554 uint16_t agcCnt; //!< @todo documentation
1555 uint8_t jamInd; //!< @todo documentation
1556 int8_t ofsI; //!< @todo documentation
1557 uint8_t magI; //!< @todo documentation
1558 int8_t ofsQ; //!< @todo documentation
1559 uint8_t magQ; //!< @todo documentation
1560 uint8_t reserved2[3]; //!< @todo documentation
1561}; // clang-format on
1562
1563static_assert(sizeof(UBX_MON_RF_V0_GROUP1) == 24, "");
1564
1565// clang-format off
1566static constexpr uint8_t UBX_MON_RF_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1567static constexpr uint8_t UBX_MON_RF_V0_VERSION = 0x00; //!< @todo documentation
1568static constexpr std::size_t UBX_MON_RF_V0_MIN_SIZE = sizeof(UBX_MON_RF_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1569static constexpr std::size_t UBX_MON_RF_V0_SIZE(const uint8_t* msg) { return
1570 sizeof(UBX_MON_RF_V0_GROUP0) + UBX_FRAME_SIZE + (((const uint8_t *)(msg))[UBX_HEAD_SIZE + 1] * sizeof(UBX_MON_RF_V0_GROUP1)); } //!< @todo documentation
1571static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE(const uint8_t flags) { return flags & 0x03; } //!< @todo documentation
1572inline const char * UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_STR(const uint8_t flags) { return types::IxToStr(UBX_MON_RF_V0_FLAGS_JAMMINGSTATE(flags), "UNKN", "OK", "WARN", "CRIT"); } //!< @todo documentation
1573static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_UNKN = 0; //!< @todo documentation
1574static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_OK = 1; //!< @todo documentation
1575static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_WARN = 2; //!< @todo documentation
1576static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_CRIT = 3; //!< @todo documentation
1577static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_INIT = 0; //!< @todo documentation
1578static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_DONTKNOW = 1; //!< @todo documentation
1579static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_OK = 2; //!< @todo documentation
1580static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_SHORT = 3; //!< @todo documentation
1581static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_OPEN = 4; //!< @todo documentation
1582inline const char * UBX_MON_RF_V0_ANTSTATUS_STR(const uint8_t antStatus) { return types::IxToStr(antStatus, "INIT", "DONTKNOW", "OK", "SHORT", "OPEN"); } //!< @todo documentation
1583static constexpr uint8_t UBX_MON_RF_V0_ANTPOWER_OFF = 0; //!< @todo documentation
1584static constexpr uint8_t UBX_MON_RF_V0_ANTPOWER_ON = 1; //!< @todo documentation
1585static constexpr uint8_t UBX_MON_RF_V0_ANTPOWER_DONTKNOW = 2; //!< @todo documentation
1586inline const char * UBX_MON_RF_V0_ANTPOWER_STR(const uint8_t antPower) { return types::IxToStr(antPower, "OFF", "ON", "DONTKNOW"); } //!< @todo documentation
1587static constexpr uint16_t UBX_MON_RF_V0_NOISEPERMS_MAX = 200; //!< This seems to be what u-center uses..
1588static constexpr uint16_t UBX_MON_RF_V0_AGCCNT_MAX = 8191; //!< @todo documentation
1589static constexpr uint8_t UBX_MON_RF_V0_JAMIND_MAX = 255; //!< @todo documentation
1590// clang-format on
1591
1592///@}
1593
1594// ---------------------------------------------------------------------------------------------------------------------
1595/**
1596 * @name UBX-MON-SPAN message
1597 * @{
1598 */
1599
1600//! UBX-MON-RF (version 0, output) payload head
1601struct UBX_MON_SPAN_V0_GROUP0 // clang-format off
1602{
1603 uint8_t version; //!< @todo documentation
1604 uint8_t numRfBlocks; //!< @todo documentation
1605 uint8_t reserved[2]; //!< @todo documentation
1606}; // clang-format on
1607
1608static_assert(sizeof(UBX_MON_SPAN_V0_GROUP0) == 4, "");
1609
1610static constexpr std::size_t UBX_MON_SPAN_V0_NUM_BINS = 255; //!< Number of bins
1611
1612//! UBX-MON-RF (version 0, output) payload repeated group
1613struct UBX_MON_SPAN_V0_GROUP1 // clang-format off
1614{
1615 uint8_t spectrum[UBX_MON_SPAN_V0_NUM_BINS]; //!< @todo documentation
1616 uint32_t span; //!< @todo documentation
1617 uint32_t res; //!< @todo documentation
1618 uint32_t center; //!< @todo documentation
1619 uint8_t pga; //!< @todo documentation
1620 uint8_t reserved[3]; //!< @todo documentation
1621}; // clang-format on
1622
1623static_assert(sizeof(UBX_MON_SPAN_V0_GROUP1) == 272, "");
1624
1625// clang-format off
1626static constexpr uint8_t UBX_MON_SPAN_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1627static constexpr uint8_t UBX_MON_SPAN_V0_VERSION = 0x00; //!< @todo documentation
1628static constexpr std::size_t UBX_MON_SPAN_V0_MIN_SIZE = sizeof(UBX_MON_SPAN_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1629static constexpr std::size_t UBX_MON_SPAN_V0_SIZE(const uint8_t* msg) { return
1630 sizeof(UBX_MON_SPAN_V0_GROUP0) + UBX_FRAME_SIZE + (((const uint8_t *)(msg))[UBX_HEAD_SIZE + 1] * sizeof(UBX_MON_SPAN_V0_GROUP1)); } //!< @todo documentation
1631static constexpr double UBX_MON_SPAN_BIN_CENT_FREQ(const uint32_t center, const uint32_t span, const int ix) { return
1632 (double)center + ((double)span * (((double)(ix) - 128.0) / 256.0)); } //!< @todo documentation
1633// clang-format on
1634
1635// ---------------------------------------------------------------------------------------------------------------------
1636/**
1637 * @name UBX-MON-SYS message
1638 * @{
1639 */
1640
1641//! UBX-MON-SYS (version 1, output) payload
1642struct UBX_MON_SYS_V1_GROUP0 // clang-format off
1643{
1644 uint8_t msgVer; //!< @todo documentation
1645 uint8_t bootType; //!< @todo documentation
1646 uint8_t cpuLoad; //!< @todo documentation
1647 uint8_t cpuLoadMax; //!< @todo documentation
1648 uint8_t memUsage; //!< @todo documentation
1649 uint8_t memUsageMax; //!< @todo documentation
1650 uint8_t ioUsage; //!< @todo documentation
1651 uint8_t ioUsageMax; //!< @todo documentation
1652 uint32_t runTime; //!< @todo documentation
1653 uint16_t noticeCount; //!< @todo documentation
1654 uint16_t warnCount; //!< @todo documentation
1655 uint16_t errorCount; //!< @todo documentation
1656 int8_t tempValue; //!< @todo documentation
1657 uint8_t reserved[5]; //!< @todo documentation
1658}; // clang-format on
1659
1660static_assert(sizeof(UBX_MON_SYS_V1_GROUP0) == 24, "");
1661
1662// clang-format off
1663static constexpr uint8_t UBX_MON_SYS_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1664static constexpr uint8_t UBX_MON_SYS_V1_VERSION = 0x01; //!< @todo documentation
1665static constexpr std::size_t UBX_MON_SYS_V1_SIZE = sizeof(UBX_MON_SYS_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1666static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_UNKNOWN = 0; //!< Boot type: unknown
1667static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_COLDSTART = 1; //!< Boot type: cold Start
1668static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_WATCHDOG = 2; //!< Boot type: watchdog
1669static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_HWRESET = 3; //!< Boot type: hardware reset
1670static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_HWBACKUP = 4; //!< Boot type: hardware backup
1671static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_SWBACKUP = 5; //!< Boot type: software backup
1672static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_SWRESET = 6; //!< Boot type: software reset
1673static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VIOFAIL = 7; //!< Boot type: VIO fail
1674static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VDDXFAIL = 8; //!< Boot type: VDD_X fail
1675static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VDDRFFAIL = 9; //!< Boot type: VDD_RF fail
1676static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VCOREHIGHFAIL = 10; //!< Boot type: V_CORE_HIGH fail
1677static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_SYSTEMRESET = 11; //!< Boot type: system reset
1678inline const char * UBX_MON_SYS_V1_BOOTTYPE_STR(const uint8_t bootType) { return types::IxToStr(bootType, "UNKNOWN", "COLDSTART", "WATCHDOG", "HWRESET", "HWBACKUP", "SWBACKUP", "SWRESET", "VIOFAIL", "VDDXFAIL", "VDDRFFAIL", "VCOREHIGHFAIL", "SYSTEMRESET"); } //!< @todo documentation
1679// clang-format on
1680
1681///@}
1682// ---------------------------------------------------------------------------------------------------------------------
1683/**
1684 * @name UBX-MON-TEMP message
1685 * @{
1686 */
1687
1688//! UBX-MON-TEMP (version 0, output) message payload (no docu available, but u-center shows it...)
1689struct UBX_MON_TEMP_V0_GROUP0 // clang-format off
1690{
1691 uint8_t version; //!< probably version.. @todo documentation
1692 uint8_t reserved0[3]; //!< @todo documentation
1693 int16_t temperature; //!< @todo documentation
1694 uint8_t unknown; //!< unit? 1 = C? @todo documentation
1695 uint8_t reserved1[5]; //!< @todo documentation
1696}; // clang-format on
1697
1698static_assert(sizeof(UBX_MON_TEMP_V0_GROUP0) == 12, "");
1699
1700// clang-format off
1701static constexpr uint8_t UBX_MON_TEMP_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1702static constexpr uint8_t UBX_MON_TEMP_V0_VERSION = 0x00; //!< @todo documentation
1703static constexpr std::size_t UBX_MON_TEMP_V0_SIZE = sizeof(UBX_MON_TEMP_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1704// clang-format on
1705
1706///@}
1707// ---------------------------------------------------------------------------------------------------------------------
1708/**
1709 * @name UBX-MON-VER message
1710 * @{
1711 */
1712//! UBX-MON-VER (version 0, output) message payload header
1713struct UBX_MON_VER_V0_GROUP0 // clang-format off
1714{
1715 char swVersion[30]; //!< @todo documentation
1716 char hwVersion[10]; //!< @todo documentation
1717}; // clang-format on
1718
1719static_assert(sizeof(UBX_MON_VER_V0_GROUP0) == 40, "");
1720
1721//! UBX-MON-VER (version 0, output) optional repeated field
1722struct UBX_MON_VER_V0_GROUP1 // clang-format off
1723{
1724 char extension[30]; //!< @todo documentation
1725}; // clang-format on
1726
1727static_assert(sizeof(UBX_MON_VER_V0_GROUP1) == 30, "");
1728
1729// clang-format off
1730static constexpr std::size_t UBX_MON_VER_V0_MIN_SIZE = sizeof(UBX_MON_VER_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1731// clang-format on
1732
1733///@}
1734// ---------------------------------------------------------------------------------------------------------------------
1735/**
1736 * @name UBX-NAV-ATT message
1737 * @{
1738 */
1739
1740//! UBX-NAV-ATT (version 0, output) payload
1741struct UBX_NAV_ATT_V0_GROUP0 // clang-format off
1742{
1743 uint32_t iTOW; //!< @todo documentation
1744 uint8_t version; //!< @todo documentation
1745 uint8_t reserved0[3]; //!< @todo documentation
1746 int32_t roll; //!< @todo documentation
1747 int32_t pitch; //!< @todo documentation
1748 int32_t heading; //!< @todo documentation
1749 uint32_t accRoll; //!< @todo documentation
1750 uint32_t accPitch; //!< @todo documentation
1751 uint32_t accHeading; //!< @todo documentation
1752}; // clang-format on
1753
1754static_assert(sizeof(UBX_NAV_ATT_V0_GROUP0) == 32, "");
1755
1756// clang-format off
1757static constexpr uint8_t UBX_NAV_ATT_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + sizeof(uint32_t)]; } //!< @todo documentation
1758static constexpr uint8_t UBX_NAV_ATT_V0_VERSION = 0x00; //!< @todo documentation
1759static constexpr std::size_t UBX_NAV_ATT_V0_SIZE = sizeof(UBX_NAV_ATT_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1760static constexpr double UBX_NAV_ATT_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
1761static constexpr double UBX_NAV_ATT_V0_RPH_SCALING = 1e-5; //!< @todo documentation
1762// clang-format on
1763
1764///@}
1765// ---------------------------------------------------------------------------------------------------------------------
1766/**
1767 * @name UBX-NAV-CLOCK message
1768 * @{
1769 */
1770
1771//! UBX-NAV-CLOCK payload
1772struct UBX_NAV_CLOCK_V0_GROUP0 // clang-format off
1773{
1774 uint32_t iTow; //!< @todo documentation
1775 int32_t clkB; //!< @todo documentation
1776 int32_t clkD; //!< @todo documentation
1777 uint32_t tAcc; //!< @todo documentation
1778 uint32_t fAcc; //!< @todo documentation
1779}; // clang-format on
1780
1781static_assert(sizeof(UBX_NAV_CLOCK_V0_GROUP0) == 20, "");
1782
1783// clang-format off
1784static constexpr std::size_t UBX_NAV_CLOCK_V0_SIZE = sizeof(UBX_NAV_CLOCK_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1785static constexpr double UBX_NAV_CLOCK_V0_CLKB_SCALE = 1e-9; //!< @todo documentation
1786static constexpr double UBX_NAV_CLOCK_V0_CLKD_SCALE = 1e-9; //!< @todo documentation
1787static constexpr double UBX_NAV_CLOCK_V0_TACC_SCALE = 1e-9; //!< @todo documentation
1788static constexpr double UBX_NAV_CLOCK_V0_FACC_SCALE = 1e-12; //!< @todo documentation
1789// clang-format on
1790
1791///@}
1792// ---------------------------------------------------------------------------------------------------------------------
1793/**
1794 * @name UBX-NAV-COV message
1795 * @{
1796 */
1797
1798//! UBX-NAV-COV (version 0, output) payload head
1799struct UBX_NAV_COV_V0_GROUP0 // clang-format off
1800{
1801 uint32_t iTOW; //!< @todo documentation
1802 uint8_t version; //!< @todo documentation
1803 uint8_t posCovValid; //!< @todo documentation
1804 uint8_t velCovValid; //!< @todo documentation
1805 uint8_t reserved[9]; //!< @todo documentation
1806 float posCovNN; //!< @todo documentation
1807 float posCovNE; //!< @todo documentation
1808 float posCovND; //!< @todo documentation
1809 float posCovEE; //!< @todo documentation
1810 float posCovED; //!< @todo documentation
1811 float posCovDD; //!< @todo documentation
1812 float velCovNN; //!< @todo documentation
1813 float velCovNE; //!< @todo documentation
1814 float velCovND; //!< @todo documentation
1815 float velCovEE; //!< @todo documentation
1816 float velCovED; //!< @todo documentation
1817 float velCovDD; //!< @todo documentation
1818};
1819// clang-format on
1820
1821static_assert(sizeof(UBX_NAV_COV_V0_GROUP0) == 64, "");
1822
1823// clang-format off
1824static constexpr uint8_t UBX_NAV_COV_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + sizeof(uint32_t)]; } //!< @todo documentation
1825static constexpr uint8_t UBX_NAV_COV_V0_VERSION = 0x00; //!< @todo documentation
1826static constexpr std::size_t UBX_NAV_COV_V0_SIZE = sizeof(UBX_NAV_COV_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1827static constexpr double UBX_NAV_COV_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
1828// clang-format on
1829
1830///@}
1831// ---------------------------------------------------------------------------------------------------------------------
1832/**
1833 * @name UBX-NAV-DOP message
1834 * @{
1835 */
1836
1837//! UBX-NAV-DOP payload
1839{ // clang-format off
1840 uint32_t iTOW; //!< @todo documentation
1841 uint16_t gDOP; //!< @todo documentation
1842 uint16_t pDOP; //!< @todo documentation
1843 uint16_t tDOP; //!< @todo documentation
1844 uint16_t vDOP; //!< @todo documentation
1845 uint16_t hDOP; //!< @todo documentation
1846 uint16_t nDOP; //!< @todo documentation
1847 uint16_t eDOP; //!< @todo documentation
1848}; // clang-format on
1849
1850static_assert(sizeof(UBX_NAV_DOP_V0_GROUP0) == 18, "");
1851
1852// clang-format off
1853static constexpr std::size_t UBX_NAV_DOP_V0_SIZE = sizeof(UBX_NAV_DOP_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1854static constexpr double UBX_NAV_DOP_V0_XDOP_SCALE = 1e-2; //!< @todo documentation
1855// clang-format on
1856
1857///@}
1858// ---------------------------------------------------------------------------------------------------------------------
1859/**
1860 * @name UBX-NAV-EELL message
1861 * @{
1862 */
1863
1864//! UBX-NAV-EELL (version 0, output) payload head
1865struct UBX_NAV_EELL_V0_GROUP0 // clang-format off
1866{
1867 uint32_t iTOW; //!< @todo documentation
1868 uint8_t version; //!< @todo documentation
1869 uint8_t reserved; //!< @todo documentation
1870 uint16_t errEllipseOrient; //!< @todo documentation
1871 uint32_t errEllipseMajor; //!< @todo documentation
1872 uint32_t errEllipseMinor; //!< @todo documentation
1873}; // clang-format on
1874
1875static_assert(sizeof(UBX_NAV_EELL_V0_GROUP0) == 16, "");
1876
1877// clang-format off
1878static constexpr uint8_t UBX_NAV_EELL_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + sizeof(uint32_t)]; } //!< @todo documentation
1879static constexpr uint8_t UBX_NAV_EELL_V0_VERSION = 0x00; //!< @todo documentation
1880static constexpr std::size_t UBX_NAV_EELL_V0_SIZE = sizeof(UBX_NAV_EELL_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1881static constexpr double UBX_NAV_EELL_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
1882static constexpr double UBX_NAV_EELL_V0_ELLIPSEORIENT_SCALE = 1e-2; //!< @todo documentation
1883static constexpr double UBX_NAV_EELL_V0_ELLIPSEMAJOR_SCALE = 1e-3; //!< @todo documentation
1884static constexpr double UBX_NAV_EELL_V0_ELLIPSEMINOR_SCALE = 1e-3; //!< @todo documentation
1885// clang-format on
1886
1887///@}
1888// ---------------------------------------------------------------------------------------------------------------------
1889/**
1890 * @name UBX-NAV-EOE message
1891 * @{
1892 */
1893
1894//! UBX-NAV-EOE (version 0, output) payload
1896{ // clang-format off
1897 uint32_t iTOW; //!< @todo documentation
1898}; // clang-format on
1899
1900static_assert(sizeof(UBX_NAV_EOE_V0_GROUP0) == 4, "");
1901
1902// clang-format off
1903static constexpr std::size_t UBX_NAV_EOE_V0_SIZE = sizeof(UBX_NAV_EOE_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1904static constexpr double UBX_NAV_EOE_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
1905// clang-format on
1906
1907///@}
1908// ---------------------------------------------------------------------------------------------------------------------
1909/**
1910 * @name UBX-NAV-HPPOSECEF message
1911 * @{
1912 */
1913
1914//! UBX-NAV-HPPOSECEF (version 0, output) payload
1916{ // clang-format off
1917 uint8_t version; //!< @todo documentation
1918 uint8_t reserved[3]; //!< @todo documentation
1919 uint32_t iTOW; //!< @todo documentation
1920 int32_t ecefX; //!< @todo documentation
1921 int32_t ecefY; //!< @todo documentation
1922 int32_t ecefZ; //!< @todo documentation
1923 int8_t ecefXHp; //!< @todo documentation
1924 int8_t ecefYHp; //!< @todo documentation
1925 int8_t ecefZHp; //!< @todo documentation
1926 uint8_t flags; //!< @todo documentation
1927 uint32_t pAcc; //!< @todo documentation
1928}; // clang-format on
1929
1930static_assert(sizeof(UBX_NAV_HPPOSECEF_V0_GROUP0) == 28, "");
1931
1932// clang-format off
1933static constexpr uint8_t UBX_NAV_HPPOSECEF_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1934static constexpr uint8_t UBX_NAV_HPPOSECEF_V0_VERSION = 0x00; //!< @todo documentation
1935static constexpr std::size_t UBX_NAV_HPPOSECEF_V0_SIZE = sizeof(UBX_NAV_HPPOSECEF_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1936static constexpr double UBX_NAV_HPPOSECEF_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
1937static constexpr double UBX_NAV_HPPOSECEF_V0_ECEF_XYZ_SCALE = 1e-2; //!< @todo documentation
1938static constexpr double UBX_NAV_HPPOSECEF_V0_ECEF_XYZ_HP_SCALE = 1e-4; //!< @todo documentation
1939static constexpr double UBX_NAV_HPPOSECEF_V0_PACC_SCALE = 1e-4; //!< @todo documentation
1940static constexpr bool UBX_NAV_HPPOSECEF_V0_FLAGS_INVALIDECEF(const uint8_t flags) { return (flags & 0x01) == 0x01; } //!< @todo documentation
1941// clang-format on
1942
1943///@}
1944// ---------------------------------------------------------------------------------------------------------------------
1945/**
1946 * @name UBX-NAV-HPPOSLLH message
1947 * @{
1948 */
1949
1950//! UBX-NAV-HPPOSLLH (version 0) payload
1951struct UBX_NAV_HPPOSLLH_V0_GROUP0 // clang-format off
1952{
1953 uint8_t version; //!< @todo documentation
1954 uint8_t reserved[2]; //!< @todo documentation
1955 uint8_t flags; //!< @todo documentation
1956 uint32_t iTOW; //!< @todo documentation
1957 int32_t lon; //!< @todo documentation
1958 int32_t lat; //!< @todo documentation
1959 int32_t height; //!< @todo documentation
1960 int32_t hMSL; //!< @todo documentation
1961 int8_t lonHp; //!< @todo documentation
1962 int8_t latHp; //!< @todo documentation
1963 int8_t heightHp; //!< @todo documentation
1964 int8_t hMSLHp; //!< @todo documentation
1965 uint32_t hAcc; //!< @todo documentation
1966 uint32_t vAcc; //!< @todo documentation
1967}; // clang-format on
1968
1969static_assert(sizeof(UBX_NAV_HPPOSLLH_V0_GROUP0) == 36, "");
1970
1971// clang-format off
1972static constexpr uint8_t UBX_NAV_HPPOSLLH_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
1973static constexpr uint8_t UBX_NAV_HPPOSLLH_V0_VERSION = 0x00; //!< @todo documentation
1974static constexpr std::size_t UBX_NAV_HPPOSLLH_V0_SIZE = sizeof(UBX_NAV_HPPOSLLH_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
1975static constexpr uint8_t UBX_NAV_HPPOSLLH_V0_FLAGS_INVALIDLLH = 0x01; //!< @todo documentation
1976static constexpr double UBX_NAV_HPPOSLLH_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
1977static constexpr double UBX_NAV_HPPOSLLH_V0_LL_SCALE = 1e-7; //!< @todo documentation
1978static constexpr double UBX_NAV_HPPOSLLH_V0_H_SCALE = 1e-3; //!< @todo documentation
1979static constexpr double UBX_NAV_HPPOSLLH_V0_LL_HP_SCALE = 1e-9; //!< @todo documentation
1980static constexpr double UBX_NAV_HPPOSLLH_V0_H_HP_SCALE = 1e-4; //!< @todo documentation
1981static constexpr double UBX_NAV_HPPOSLLH_V0_ACC_SCALE = 1e-4; //!< @todo documentation
1982// clang-format on
1983
1984///@}
1985// ---------------------------------------------------------------------------------------------------------------------
1986/**
1987 * @name UBX-NAV-POSECEF message
1988 * @{
1989 */
1990
1991//! UBX-NAV-POSECEF (version 0, output) payload
1992struct UBX_NAV_POSECEF_V0_GROUP0 // clang-format off
1993{
1994 uint32_t iTOW; //!< @todo documentation
1995 int32_t ecefX; //!< @todo documentation
1996 int32_t ecefY; //!< @todo documentation
1997 int32_t ecefZ; //!< @todo documentation
1998 uint32_t pAcc; //!< @todo documentation
1999}; // clang-format on
2000
2001static_assert(sizeof(UBX_NAV_POSECEF_V0_GROUP0) == 20, "");
2002
2003// clang-format off
2004static constexpr std::size_t UBX_NAV_POSECEF_V0_SIZE = sizeof(UBX_NAV_POSECEF_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2005static constexpr double UBX_NAV_POSECEF_V0_ECEF_XYZ_SCALE = 1e-2; //!< @todo documentation
2006static constexpr double UBX_NAV_POSECEF_V0_PACC_SCALE = 1e-2; //!< @todo documentation
2007// clang-format on
2008
2009///@}
2010// ---------------------------------------------------------------------------------------------------------------------
2011/**
2012 * @name UBX-NAV-PVT message
2013 * @{
2014 */
2015
2016//! UBX-NAV-PVT (version 1, output) payload
2017struct UBX_NAV_PVT_V1_GROUP0 // clang-format off
2018 {
2019 uint32_t iTOW; //!< @todo documentation
2020 uint16_t year; //!< @todo documentation
2021 uint8_t month; //!< @todo documentation
2022 uint8_t day; //!< @todo documentation
2023 uint8_t hour; //!< @todo documentation
2024 uint8_t min; //!< @todo documentation
2025 uint8_t sec; //!< @todo documentation
2026 uint8_t valid; //!< @todo documentation
2027 uint32_t tAcc; //!< @todo documentation
2028 int32_t nano; //!< @todo documentation
2029 uint8_t fixType; //!< @todo documentation
2030 uint8_t flags; //!< @todo documentation
2031 uint8_t flags2; //!< @todo documentation
2032 uint8_t numSV; //!< @todo documentation
2033 int32_t lon; //!< @todo documentation
2034 int32_t lat; //!< @todo documentation
2035 int32_t height; //!< @todo documentation
2036 int32_t hMSL; //!< @todo documentation
2037 uint32_t hAcc; //!< @todo documentation
2038 uint32_t vAcc; //!< @todo documentation
2039 int32_t velN; //!< @todo documentation
2040 int32_t velE; //!< @todo documentation
2041 int32_t velD; //!< @todo documentation
2042 int32_t gSpeed; //!< @todo documentation
2043 int32_t headMot; //!< @todo documentation
2044 uint32_t sAcc; //!< @todo documentation
2045 uint32_t headAcc; //!< @todo documentation
2046 uint16_t pDOP; //!< @todo documentation
2047 uint16_t flags3; //!< @todo documentation
2048 uint8_t reserved0[4]; //!< @todo documentation
2049 int32_t headVeh; //!< @todo documentation
2050 int16_t magDec; //!< @todo documentation
2051 uint16_t magAcc; //!< @todo documentation
2052}; // clang-format on
2053
2054static_assert(sizeof(UBX_NAV_PVT_V1_GROUP0) == 92, "");
2055
2056// clang-format off
2057static constexpr std::size_t UBX_NAV_PVT_V1_SIZE = sizeof(UBX_NAV_PVT_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2058static constexpr double UBX_NAV_PVT_V1_ITOW_SCALE = 1e-3; //!< @todo documentation
2059static constexpr bool UBX_NAV_PVT_V1_VALID_VALIDDATE(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2060static constexpr bool UBX_NAV_PVT_V1_VALID_VALIDTIME(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2061static constexpr bool UBX_NAV_PVT_V1_VALID_FULLYRESOLVED(const uint8_t valid) { return (valid & 0x04) == 0x04; } //!< @todo documentation
2062static constexpr bool UBX_NAV_PVT_V1_VALID_VALIDMAG(const uint8_t valid) { return (valid & 0x08) == 0x08; } //!< @todo documentation
2063static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_NOFIX = 0; //!< @todo documentation
2064static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_DRONLY = 1; //!< @todo documentation
2065static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_2D = 2; //!< @todo documentation
2066static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_3D = 3; //!< @todo documentation
2067static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_3D_DR = 4; //!< @todo documentation
2068static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_TIME = 5; //!< @todo documentation
2069inline const char * UBX_NAV_PVT_V1_FIXTYPE_STR(const uint8_t fixType) { return types::IxToStr(fixType, "NOFIX", "DRONLY", "2D", "3D", "3D_DR", "TIME"); } //!< @todo documentation
2070static constexpr bool UBX_NAV_PVT_V1_FLAGS_GNSSFIXOK(const uint8_t flags) { return (flags & 0x01) == 0x01; } //!< @todo documentation
2071static constexpr bool UBX_NAV_PVT_V1_FLAGS_DIFFSOLN(const uint8_t flags) { return (flags & 0x02) == 0x02; } //!< @todo documentation
2072static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE(const uint8_t flags) { return (flags >> 2) & 0x07; } //!< @todo documentation
2073inline const char * UBX_NAV_PVT_V1_FLAGS_PSMSTATE_STR(const uint8_t flags) { return types::IxToStr(UBX_NAV_PVT_V1_FLAGS_PSMSTATE(flags), "NOTACTIVE", "ENABLED", "ACQUISITION", "TRACKING", "POT", "INACTIVE"); } //!< @todo documentation
2074static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_NOTACTIVE = 0; //!< @todo documentation
2075static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_ENABLED = 1; //!< @todo documentation
2076static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_ACQUISITION = 2; //!< @todo documentation
2077static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_TRACKING = 3; //!< @todo documentation
2078static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_POT = 4; //!< @todo documentation
2079static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_INACTIVE = 5; //!< @todo documentation
2080static constexpr bool UBX_NAV_PVT_V1_FLAGS_HEADVEHVALID(const uint8_t flags) { return (flags & 0x20) == 0x20; } //!< @todo documentation
2081static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN(const uint8_t flags) { return (flags >> 6) & 0x03; } //!< @todo documentation
2082inline const char * UBX_NAV_PVT_V1_FLAGS_CARRSOLN_STR(const uint8_t flags) { return types::IxToStr(UBX_NAV_PVT_V1_FLAGS_CARRSOLN(flags), "NO", "FLOAT", "FIXED"); } //!< @todo documentation
2083static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN_NO = 0; //!< @todo documentation
2084static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN_FLOAT = 1; //!< @todo documentation
2085static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN_FIXED = 2; //!< @todo documentation
2086static constexpr bool UBX_NAV_PVT_V1_FLAGS2_CONFAVAIL(const uint8_t flags2) { return (flags2 & 0x20) == 0x20; } //!< @todo documentation
2087static constexpr bool UBX_NAV_PVT_V1_FLAGS2_CONFDATE(const uint8_t flags2) { return (flags2 & 0x40) == 0x40; } //!< @todo documentation
2088static constexpr bool UBX_NAV_PVT_V1_FLAGS2_CONFTIME(const uint8_t flags2) { return (flags2 & 0x80) == 0x80; } //!< @todo documentation
2089static constexpr bool UBX_NAV_PVT_V1_FLAGS3_INVALIDLLH(const uint16_t flags3) { return (flags3 & 0x01) == 0x01; } //!< @todo documentation
2090static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE(const uint16_t flags3) { return (flags3 >> 1) & 0x0F; } //!< @todo documentation
2091inline const char * UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_STR(const uint16_t flags3) { return types::IxToStr(UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE(flags3), "NOT_AVAILABLE", "0_TO_1_SEC", "1_TO_2_SEC", "3_TO_5_SEC", "5_TO_10_SEC", "10_TO_15_SEC", "15_TO_20_SEC", "20_TO_30_SEC", "30_TO_45_SEC", "45_TO_60_SEC", "60_TO_90_SEC", "90_TO_120_SEC", "GEQ_120_SEC"); } //!< @todo documentation
2092static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_NOT_AVAILABLE = 0; //!< @todo documentation
2093static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_0_TO_1_SEC = 1; //!< @todo documentation
2094static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_1_TO_2_SEC = 2; //!< @todo documentation
2095static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_3_TO_5_SEC = 3; //!< @todo documentation
2096static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_5_TO_10_SEC = 4; //!< @todo documentation
2097static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_10_TO_15_SEC = 5; //!< @todo documentation
2098static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_15_TO_20_SEC = 6; //!< @todo documentation
2099static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_20_TO_30_SEC = 7; //!< @todo documentation
2100static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_30_TO_45_SEC = 8; //!< @todo documentation
2101static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_45_TO_60_SEC = 9; //!< @todo documentation
2102static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_60_TO_90_SEC = 10; //!< @todo documentation
2103static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_90_TO_120_SEC = 11; //!< @todo documentation
2104static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_GEQ_120_SEC = 12; //!< @todo documentation
2105static constexpr bool UBX_NAV_PVT_V1_FLAGS3_AUTHTIME(const uint16_t flags3) { return (flags3 & 0x2000) == 0x2000; } //!< @todo documentation
2106inline const char * UBX_NAV_PVT_V1_FLAGS3_AUTHTIME_STR(const uint16_t flags3) { return types::IxToStr(UBX_NAV_PVT_V1_FLAGS3_AUTHTIME(flags3) ? 1 : 0, "NOT_AUTHENTICATED", "AUTHENTICATED"); } //!< @todo documentation
2107static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_AUTHTIME_NOT_AUTHENTICATED = 0; //!< @todo documentation
2108static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_AUTHTIME_AUTHENTICATED = 1; //!< @todo documentation
2109static constexpr bool UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS(const uint16_t flags3) { return (flags3 & 0x4000) == 0x4000; } //!< @todo documentation
2110inline const char * UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS_STR(const uint16_t flags3) { return types::IxToStr(UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS(flags3) ? 1 : 0, "NOT_VERIFIED", "VERIFIED"); } //!< @todo documentation
2111static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS_NOT_VERIFIED = 0; //!< @todo documentation
2112static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS_VERIFIED = 1; //!< @todo documentation
2113static constexpr double UBX_NAV_PVT_V1_LAT_SCALE = 1e-7; //!< @todo documentation
2114static constexpr double UBX_NAV_PVT_V1_LON_SCALE = 1e-7; //!< @todo documentation
2115static constexpr double UBX_NAV_PVT_V1_HEIGHT_SCALE = 1e-3; //!< @todo documentation
2116static constexpr double UBX_NAV_PVT_V1_HACC_SCALE = 1e-3; //!< @todo documentation
2117static constexpr double UBX_NAV_PVT_V1_VACC_SCALE = 1e-3; //!< @todo documentation
2118static constexpr double UBX_NAV_PVT_V1_VELNED_SCALE = 1e-3; //!< @todo documentation
2119static constexpr double UBX_NAV_PVT_V1_GSPEED_SCALE = 1e-3; //!< @todo documentation
2120static constexpr double UBX_NAV_PVT_V1_HEADMOT_SCALE = 1e-5; //!< @todo documentation
2121static constexpr double UBX_NAV_PVT_V1_SACC_SCALE = 1e-3; //!< @todo documentation
2122static constexpr double UBX_NAV_PVT_V1_HEADACC_SCALE = 1e-5; //!< @todo documentation
2123static constexpr double UBX_NAV_PVT_V1_PDOP_SCALE = 1e-2; //!< @todo documentation
2124static constexpr double UBX_NAV_PVT_V1_TACC_SCALE = 1e-9; //!< @todo documentation
2125static constexpr double UBX_NAV_PVT_V1_NANO_SCALE = 1e-9; //!< @todo documentation
2126// clang-format on
2127
2128///@}
2129// ---------------------------------------------------------------------------------------------------------------------
2130/**
2131 * @name UBX-NAV-RELPOSNED message
2132 * @{
2133 */
2134
2135//! UBX-NAV-RELPOSNED (version 1, output) payload
2136struct UBX_NAV_RELPOSNED_V1_GROUP0 // clang-format off
2137{
2138 uint8_t version; //!< @todo documentation
2139 uint8_t reserved0; //!< @todo documentation
2140 uint16_t refStationId; //!< @todo documentation
2141 uint32_t iTOW; //!< @todo documentation
2142 int32_t relPosN; //!< @todo documentation
2143 int32_t relPosE; //!< @todo documentation
2144 int32_t relPosD; //!< @todo documentation
2145 int32_t relPosLength; //!< @todo documentation
2146 int32_t relPosHeading; //!< @todo documentation
2147 uint8_t reserved1[4]; //!< @todo documentation
2148 int8_t relPosHPN; //!< @todo documentation
2149 int8_t relPosHPE; //!< @todo documentation
2150 int8_t relPosHPD; //!< @todo documentation
2151 int8_t relPosHPLength; //!< @todo documentation
2152 uint32_t accN; //!< @todo documentation
2153 uint32_t accE; //!< @todo documentation
2154 uint32_t accD; //!< @todo documentation
2155 uint32_t accLength; //!< @todo documentation
2156 uint32_t accHeading; //!< @todo documentation
2157 uint8_t reserved2[4]; //!< @todo documentation
2158 uint32_t flags; //!< @todo documentation
2159}; // clang-format on
2160
2161static_assert(sizeof(UBX_NAV_RELPOSNED_V1_GROUP0) == 64, "");
2162
2163// clang-format off
2164static constexpr uint8_t UBX_NAV_RELPOSNED_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
2165static constexpr uint8_t UBX_NAV_RELPOSNED_V1_VERSION = 0x01; //!< @todo documentation
2166static constexpr std::size_t UBX_NAV_RELPOSNED_V1_SIZE = sizeof(UBX_NAV_RELPOSNED_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2167static constexpr double UBX_NAV_RELPOSNED_V1_ITOW_SCALE = 1e-3; //!< @todo documentation
2168static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSN_E_D_SCALE = 1e-2; //!< @todo documentation
2169static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSLENGTH_SCALE = 1e-2; //!< @todo documentation
2170static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSHEADING_SCALE = 1e-5; //!< @todo documentation
2171static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSHPN_E_D_SCALE = 1e-4; //!< @todo documentation
2172static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSHPLENGTH_SCALE = 1e-4; //!< @todo documentation
2173static constexpr double UBX_NAV_RELPOSNED_V1_ACCN_E_D_SCALE = 1e-4; //!< @todo documentation
2174static constexpr double UBX_NAV_RELPOSNED_V1_ACCLENGTH_SCALE = 1e-4; //!< @todo documentation
2175static constexpr double UBX_NAV_RELPOSNED_V1_ACCHEADING_SCALE = 1e-5; //!< @todo documentation
2176static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_GNSSFIXOK(const uint32_t flags) { return (flags & 0x00000001) == 0x00000001; } //!< @todo documentation
2177static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_DIFFSOLN(const uint32_t flags) { return (flags & 0x00000002) == 0x00000002; } //!< @todo documentation
2178static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_RELPOSVALID(const uint32_t flags) { return (flags & 0x00000004) == 0x00000004; } //!< @todo documentation
2179static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN(const uint32_t flags) { return (flags >> 3) & 0x03; } //!< @todo documentation
2180inline const char * UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_STR(const uint32_t flags) { return types::IxToStr(UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN(flags), "NO", "FLOAT", "FIXED"); } //!< @todo documentation
2181static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_NO = 0; //!< @todo documentation
2182static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_FLOAT = 1; //!< @todo documentation
2183static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_FIXED = 2; //!< @todo documentation
2184static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_ISMOVING(const uint32_t flags) { return (flags & 0x00000020) == 0x00000020; } //!< @todo documentation
2185static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_REFPOSMISS(const uint32_t flags) { return (flags & 0x00000040) == 0x00000040; } //!< @todo documentation
2186static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_REFOBSMISS(const uint32_t flags) { return (flags & 0x00000080) == 0x00000080; } //!< @todo documentation
2187static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_RELPOSHEADINGVALID(const uint32_t flags) { return (flags & 0x00000100) == 0x00000100; } //!< @todo documentation
2188static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_RELPOSNORMALIZED(const uint32_t flags) { return (flags & 0x00000200) == 0x00000200; } //!< @todo documentation
2189// clang-format on
2190
2191///@}
2192// ---------------------------------------------------------------------------------------------------------------------
2193/**
2194 * @name UBX-NAV-SAT message
2195 * @{
2196 */
2197
2198//! UBX-NAV-SAT (version 1, output) payload head
2199struct UBX_NAV_SAT_V1_GROUP0 // clang-format off
2200{
2201 uint32_t iTOW; //!< @todo documentation
2202 uint8_t version; //!< @todo documentation
2203 uint8_t numSvs; //!< @todo documentation
2204 uint8_t reserved[2]; //!< @todo documentation
2205}; // clang-format on
2206
2207static_assert(sizeof(UBX_NAV_SAT_V1_GROUP0) == 8, "");
2208
2209//! UBX-NAV-SAT (version 1, output) payload repeated group
2210struct UBX_NAV_SAT_V1_GROUP1 // clang-format off
2211{
2212 uint8_t gnssId; //!< @todo documentation
2213 uint8_t svId; //!< @todo documentation
2214 uint8_t cno; //!< @todo documentation
2215 int8_t elev; //!< @todo documentation
2216 int16_t azim; //!< @todo documentation
2217 int16_t prRes; //!< @todo documentation
2218 uint32_t flags; //!< @todo documentation
2219}; // clang-format on
2220
2221static_assert(sizeof(UBX_NAV_SAT_V1_GROUP1) == 12, "");
2222
2223// clang-format off
2224static constexpr uint8_t UBX_NAV_SAT_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + sizeof(uint32_t)]; } //!< @todo documentation
2225static constexpr uint8_t UBX_NAV_SAT_V1_VERSION = 0x01; //!< @todo documentation
2226static constexpr std::size_t UBX_NAV_SAT_V1_MIN_SIZE = sizeof(UBX_NAV_SAT_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2227static constexpr double UBX_NAV_SAT_V1_ITOW_SCALE = 1e-3; //!< @todo documentation
2228// Note: only those flags relevant for a SV are defined below. All other info should be taken from UBX-NAV-SIG. //!< @todo documentation
2229static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE(const uint32_t flags) { return (flags >> 8) & 0x00000007; } //!< @todo documentation
2230inline const char * UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_STR(const uint32_t flags) { return types::IxToStr(UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE(flags), "NONE", "EPH", "ALM", "ANO", "ANA", "OTHER1", "OTHER2", "OTHER3"); } //!< @todo documentation
2231static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_NONE = 0; //!< @todo documentation
2232static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_EPH = 1; //!< @todo documentation
2233static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_ALM = 2; //!< @todo documentation
2234static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_ANO = 3; //!< @todo documentation
2235static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_ANA = 4; //!< @todo documentation
2236static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_OTHER1 = 5; //!< @todo documentation
2237static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_OTHER2 = 6; //!< @todo documentation
2238static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_OTHER3 = 7; //!< @todo documentation
2239static constexpr bool UBX_NAV_SAT_V1_FLAGS_EPHAVAIL(const uint32_t flags) { return (flags & 0x00000800) == 0x00000800; } //!< @todo documentation
2240static constexpr bool UBX_NAV_SAT_V1_FLAGS_ALMAVAIL(const uint32_t flags) { return (flags & 0x00001000) == 0x00001000; } //!< @todo documentation
2241static constexpr bool UBX_NAV_SAT_V1_FLAGS_ANOAVAIL(const uint32_t flags) { return (flags & 0x00002000) == 0x00002000; } //!< @todo documentation
2242static constexpr bool UBX_NAV_SAT_V1_FLAGS_AOPAVAIL(const uint32_t flags) { return (flags & 0x00004000) == 0x00004000; } //!< @todo documentation
2243// clang-format on
2244
2245///@}
2246// ---------------------------------------------------------------------------------------------------------------------
2247/**
2248 * @name UBX-NAV-SIG message
2249 * @{
2250 */
2251
2252//! UBX-NAV-SIG (version 0, output) payload head
2253struct UBX_NAV_SIG_V0_GROUP0 // clang-format off
2254{
2255 uint32_t iTOW; //!< @todo documentation
2256 uint8_t version; //!< @todo documentation
2257 uint8_t numSigs; //!< @todo documentation
2258 uint8_t reserved[2]; //!< @todo documentation
2259}; // clang-format on
2260
2261static_assert(sizeof(UBX_NAV_SIG_V0_GROUP0) == 8, "");
2262
2263//! UBX-NAV-SIG (version 0, output) payload repeated group
2264struct UBX_NAV_SIG_V0_GROUP1 // clang-format off
2265{
2266 uint8_t gnssId; //!< @todo documentation
2267 uint8_t svId; //!< @todo documentation
2268 uint8_t sigId; //!< @todo documentation
2269 uint8_t freqId; //!< @todo documentation
2270 int16_t prRes; //!< @todo documentation
2271 uint8_t cno; //!< @todo documentation
2272 uint8_t qualityInd; //!< @todo documentation
2273 uint8_t corrSource; //!< @todo documentation
2274 uint8_t ionoModel; //!< @todo documentation
2275 uint16_t sigFlags; //!< @todo documentation
2276 uint8_t reserved[4]; //!< @todo documentation
2277}; // clang-format on
2278
2279static_assert(sizeof(UBX_NAV_SIG_V0_GROUP1) == 16, "");
2280
2281// clang-format off
2282static constexpr uint8_t UBX_NAV_SIG_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + sizeof(uint32_t)]; } //!< @todo documentation
2283static constexpr uint8_t UBX_NAV_SIG_V0_VERSION = 0x00; //!< @todo documentation
2284static constexpr std::size_t UBX_NAV_SIG_V0_MIN_SIZE = sizeof(UBX_NAV_SIG_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2285static constexpr double UBX_NAV_SIG_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2286static constexpr std::size_t UBX_NAV_SIG_V0_FREQID_OFFS = 7; //!< @todo documentation
2287static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_NOSIG = 0; //!< @todo documentation
2288static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_SEARCH = 1; //!< @todo documentation
2289static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_ACQUIRED = 2; //!< @todo documentation
2290static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_UNUSED = 3; //!< @todo documentation
2291static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CODELOCK = 4; //!< @todo documentation
2292static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CARRLOCK1 = 5; //!< @todo documentation
2293static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CARRLOCK2 = 6; //!< @todo documentation
2294static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CARRLOCK3 = 7; //!< @todo documentation
2295inline const char * UBX_NAV_SIG_V0_QUALITYIND_STR(const uint8_t qualityInd) { return types::IxToStr(qualityInd, "NOSIG", "SEARCH", "ACQUIRED", "UNUSED", "CODELOCK", "CARRLOCK1", "CARRLOCK2", "CARRLOCK3"); } //!< @todo documentation
2296static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_NONE = 0; //!< @todo documentation
2297static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_KLOB_GPS = 1; //!< @todo documentation
2298static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_SBAS = 2; //!< @todo documentation
2299static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_KLOB_BDS = 3; //!< @todo documentation
2300static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_DUALFREQ = 8; //!< @todo documentation
2301inline const char * UBX_NAV_SIG_V0_IONOMODEL_STR(const uint8_t ionoModel) { return types::IxToStr(ionoModel, "NONE", "KLOB_GPS", "SBAS", "KLOB_BDS", "?", "?", "?", "?", "DUALFREQ"); } //!< @todo documentation
2302static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH(const uint16_t sigFlags) { return sigFlags & 0x03; } //!< @todo documentation
2303inline const char * UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_STR(const uint16_t sigFlags) { return types::IxToStr(UBX_NAV_SIG_V0_SIGFLAGS_HEALTH(sigFlags), "UNKNO", "HEALTHY", "UNHEALTHY"); } //!< @todo documentation
2304static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_UNKNO = 0; //!< @todo documentation
2305static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_HEALTHY = 1; //!< @todo documentation
2306static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_UNHEALTHY = 2; //!< @todo documentation
2307static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_PR_SMOOTHED(const uint16_t sigFlags) { return (sigFlags & 0x0004) == 0x0004; } //!< @todo documentation
2308static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_PR_USED(const uint16_t sigFlags) { return (sigFlags & 0x0008) == 0x0008; } //!< @todo documentation
2309static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_CR_USED(const uint16_t sigFlags) { return (sigFlags & 0x0010) == 0x0010; } //!< @todo documentation
2310static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_DO_USED(const uint16_t sigFlags) { return (sigFlags & 0x0020) == 0x0020; } //!< @todo documentation
2311static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_PR_CORR_USED(const uint16_t sigFlags) { return (sigFlags & 0x0040) == 0x0040; } //!< @todo documentation
2312static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_CR_CORR_USED(const uint16_t sigFlags) { return (sigFlags & 0x0080) == 0x0080; } //!< @todo documentation
2313static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_DO_CORR_USED(const uint16_t sigFlags) { return (sigFlags & 0x0100) == 0x0100; } //!< @todo documentation
2314static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_AUTH_STATUS(const uint16_t sigFlags) { return (sigFlags & 0x0200) == 0x0200; } //!< @todo documentation
2315static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_NONE = 0; //!< @todo documentation
2316static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_SBAS = 1; //!< @todo documentation
2317static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_BDS = 2; //!< @todo documentation
2318static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_RTCM2 = 3; //!< @todo documentation
2319static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_RTCM3_OSR = 4; //!< @todo documentation
2320static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_RTCM3_SSR = 5; //!< @todo documentation
2321static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_QZSS_SLAS = 6; //!< @todo documentation
2322static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_SPARTN = 7; //!< @todo documentation
2323inline const char * UBX_NAV_SIG_V0_CORRSOURCE_STR(const uint8_t corrSource) { return types::IxToStr(corrSource, "NONE", "SBAS", "BDS", "RTCM2", "RTCM3_OSR", "RTCM3_SSR", "QZSS_SLAS", "SPARTN"); } //!< @todo documentation
2324static constexpr double UBX_NAV_SIG_V0_PRRES_SCALE = 1e-1; //!< @todo documentation
2325// clang-format on
2326
2327///@}
2328// ---------------------------------------------------------------------------------------------------------------------
2329/**
2330 * @name UBX-NAV-TIMETRUSTED message
2331 * @{
2332 */
2333
2334//! UBX-NAV-TIMETRUSTED (version 1, output) payload
2335struct UBX_NAV_TIMETRUSTED_V1_GROUP0 // clang-format off
2336{
2337 uint8_t version; //!< @todo documentation
2338 uint8_t refSys; //!< @todo documentation
2339 uint8_t valid; //!< @todo documentation
2340 uint8_t reserved0; //!< @todo documentation
2341 uint32_t iTOW; //!< @todo documentation
2342 uint16_t iniWno; //!< @todo documentation
2343 uint16_t propWno; //!< @todo documentation
2344 uint32_t iniTow; //!< @todo documentation
2345 uint32_t propTow; //!< @todo documentation
2346 uint32_t iniTAcc; //!< @todo documentation
2347 uint32_t propTAcc; //!< @todo documentation
2348 int32_t deltaS; //!< @todo documentation
2349 int32_t deltaMs; //!< @todo documentation
2350 uint8_t reserved1[4]; //!< @todo documentation
2351}; // clang-format on
2352
2353static_assert(sizeof(UBX_NAV_TIMETRUSTED_V1_GROUP0) == 40, "");
2354
2355// clang-format off
2356static constexpr uint8_t UBX_NAV_TIMETRUSTED_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
2357static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_VERSION = 0x01; //!< @todo documentation
2358static constexpr std::size_t UBX_NAV_TIMETRUSTED_V1_SIZE = sizeof(UBX_NAV_TIMETRUSTED_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2359static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_NONE = 0; //!< @todo documentation
2360static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_GPS = 1; //!< @todo documentation
2361static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_GAL = 2; //!< @todo documentation
2362static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_BDS = 3; //!< @todo documentation
2363static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_NAVIC = 15; //!< @todo documentation
2364inline const char * UBX_NAV_TIMETRUSTED_V1_REFSYS_STR(const uint8_t refSys) { return refSys == UBX_NAV_TIMETRUSTED_V1_REFSYS_NAVIC ? "NAVIC" : types::IxToStr(refSys, "NONE", "GPS", "GAL", "BDS"); } //!< @todo documentation
2365static constexpr bool UBX_NAV_TIMETRUSTED_V1_VALID_TRUSTEDTIMEVALID(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2366static constexpr bool UBX_NAV_TIMETRUSTED_V1_VALID_DELTATIMEVALID(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2367static constexpr double UBX_NAV_TIMETRUSTED_V1_ITOW_SCALE = 1e-3; //!< @todo documentation
2368static constexpr double UBX_NAV_TIMETRUSTED_V1_INITOW_SCALE = 1e-3; //!< @todo documentation
2369static constexpr double UBX_NAV_TIMETRUSTED_V1_PROPTOW_SCALE = 1e-3; //!< @todo documentation
2370static constexpr double UBX_NAV_TIMETRUSTED_V1_INITACC_SCALE = 1e-3; //!< @todo documentation
2371static constexpr double UBX_NAV_TIMETRUSTED_V1_PROPTACC_SCALE = 1e-3; //!< @todo documentation
2372static constexpr double UBX_NAV_TIMETRUSTED_V1_DELTAMS_SCALE = 1e-3; //!< @todo documentation
2373// clang-format on
2374
2375///@}
2376// ---------------------------------------------------------------------------------------------------------------------
2377/**
2378 * @name UBX-NAV-STATUS message
2379 * @{
2380 */
2381
2382//! UBX-NAV-STATUS payload
2383struct UBX_NAV_STATUS_V0_GROUP0 // clang-format off
2384{
2385 uint32_t iTow; //!< @todo documentation
2386 uint8_t gpsFix; //!< @todo documentation
2387 uint8_t flags; //!< @todo documentation
2388 uint8_t fixStat; //!< @todo documentation
2389 uint8_t flags2; //!< @todo documentation
2390 uint32_t ttff; //!< @todo documentation
2391 uint32_t msss; //!< @todo documentation
2392}; // clang-format on
2393
2394static_assert(sizeof(UBX_NAV_STATUS_V0_GROUP0) == 16, "");
2395
2396// clang-format off
2397static constexpr std::size_t UBX_NAV_STATUS_V0_SIZE = sizeof(UBX_NAV_STATUS_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2398static constexpr double UBX_NAV_STATUS_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2399inline const char * UBX_NAV_STATUS_V0_GPSFIX_STR(const uint8_t gpsFix) { return types::IxToStr(gpsFix, "NOFIX", "DRONLY", "2D", "3D", "3D_DR", "TIME"); } //!< @todo documentation
2400static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_NOFIX = 0; //!< @todo documentation
2401static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_DRONLY = 1; //!< @todo documentation
2402static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_2D = 2; //!< @todo documentation
2403static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_3D = 3; //!< @todo documentation
2404static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_3D_DR = 4; //!< @todo documentation
2405static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_TIME = 5; //!< @todo documentation
2406static constexpr bool UBX_NAV_STATUS_V0_FLAGS_GPSFIXOK(const uint8_t flags) { return (flags & 0x01) == 0x01; } //!< @todo documentation
2407static constexpr bool UBX_NAV_STATUS_V0_FLAGS_DIFFSOLN(const uint8_t flags) { return (flags & 0x02) == 0x02; } //!< @todo documentation
2408static constexpr bool UBX_NAV_STATUS_V0_FLAGS_WKNSET(const uint8_t flags) { return (flags & 0x04) == 0x04; } //!< @todo documentation
2409static constexpr bool UBX_NAV_STATUS_V0_FLAGS_TOWSET(const uint8_t flags) { return (flags & 0x08) == 0x08; } //!< @todo documentation
2410static constexpr bool UBX_NAV_STATUS_V0_FIXSTAT_DIFFCORR(const uint8_t fixStat) { return (fixStat & 0x01) == 0x01; } //!< @todo documentation
2411static constexpr bool UBX_NAV_STATUS_V0_FIXSTAT_CARRSOLNVALID(const uint8_t fixStat) { return (fixStat & 0x02) == 0x02; } //!< @todo documentation
2412static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE(const uint8_t flags2) { return flags2 & 0x03; } //!< @todo documentation
2413inline const char * UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_STR(const uint8_t flags2) { return types::IxToStr(UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE(flags2), "ACQUISITION", "TRACKING", "POWEROPT", "INACTIVE"); } //!< @todo documentation
2414static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_ACQUISITION = 0; //!< @todo documentation
2415static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_TRACKING = 1; //!< @todo documentation
2416static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_POWEROPT = 2; //!< @todo documentation
2417static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_INACTIVE = 3; //!< @todo documentation
2418static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE(const uint8_t flags2) { return (flags2 >> 3) & 0x03; } //!< @todo documentation
2419inline const char * UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_STR(const uint8_t flags2) { return types::IxToStr(UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE(flags2), "UNKNOWN", "NONE", "INDICATED", "AFFIRMED"); } //!< @todo documentation
2420static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_UNKNOWN = 0; //!< @todo documentation
2421static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_NONE = 1; //!< @todo documentation
2422static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_INDICATED = 2; //!< @todo documentation
2423static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_AFFIRMED = 3; //!< @todo documentation
2424static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN(const uint8_t flags2) { return (flags2 >> 6) & 0x03; } //!< @todo documentation
2425inline const char * UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_STR(const uint8_t flags2) { return types::IxToStr(UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN(flags2), "NO", "FLOAT", "FIXED"); } //!< @todo documentation
2426static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_NO = 0; //!< @todo documentation
2427static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_FLOAT = 1; //!< @todo documentation
2428static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_FIXED = 2; //!< @todo documentation
2429static constexpr double UBX_NAV_STATUS_V0_TTFF_SCALE = 1e-3; //!< @todo documentation
2430static constexpr double UBX_NAV_STATUS_V0_MSSS_SCALE = 1e-3; //!< @todo documentation
2431// clang-format on
2432
2433///@}
2434// ---------------------------------------------------------------------------------------------------------------------
2435/**
2436 * @name UBX-NAV-TIMEGPS message
2437 * @{
2438 */
2439
2440//! UBX-NAV-TIMEGPS payload
2441struct UBX_NAV_TIMEGPS_V0_GROUP0 // clang-format off
2442{
2443 uint32_t iTow; //!< @todo documentation
2444 int32_t fTOW; //!< @todo documentation
2445 int16_t week; //!< @todo documentation
2446 int8_t leapS; //!< @todo documentation
2447 uint8_t valid; //!< @todo documentation
2448 uint32_t tAcc; //!< @todo documentation
2449}; // clang-format on
2450
2451static_assert(sizeof(UBX_NAV_TIMEGPS_V0_GROUP0) == 16, "");
2452
2453// clang-format off
2454static constexpr std::size_t UBX_NAV_TIMEGPS_V0_SIZE = sizeof(UBX_NAV_TIMEGPS_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2455static constexpr double UBX_NAV_TIMEGPS_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2456static constexpr double UBX_NAV_TIMEGPS_V0_FTOW_SCALE = 1e-9; //!< @todo documentation
2457static constexpr double UBX_NAV_TIMEGPS_V0_TACC_SCALE = 1e-9; //!< @todo documentation
2458static constexpr bool UBX_NAV_TIMEGPS_V0_VALID_TOWVALID(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2459static constexpr bool UBX_NAV_TIMEGPS_V0_VALID_WEEKVALID(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2460static constexpr bool UBX_NAV_TIMEGPS_V0_VALID_LEAPSVALID(const uint8_t valid) { return (valid & 0x04) == 0x04; } //!< @todo documentation
2461// clang-format on
2462
2463///@}
2464// ---------------------------------------------------------------------------------------------------------------------
2465/**
2466 * @name UBX-NAV-TIMEGAL message
2467 * @{
2468 */
2469
2470//! UBX-NAV-TIMEGAL payload
2471struct UBX_NAV_TIMEGAL_V0_GROUP0 // clang-format off
2472{
2473 uint32_t iTow; //!< @todo documentation
2474 uint32_t galTow; //!< @todo documentation
2475 int32_t fGalTow; //!< @todo documentation
2476 int16_t galWno; //!< @todo documentation
2477 int8_t leapS; //!< @todo documentation
2478 uint8_t valid; //!< @todo documentation
2479 uint32_t tAcc; //!< @todo documentation
2480}; // clang-format on
2481
2482static_assert(sizeof(UBX_NAV_TIMEGAL_V0_GROUP0) == 20, "");
2483
2484// clang-format off
2485static constexpr std::size_t UBX_NAV_TIMEGAL_V0_SIZE = sizeof(UBX_NAV_TIMEGAL_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2486static constexpr double UBX_NAV_TIMEGAL_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2487static constexpr double UBX_NAV_TIMEGAL_V0_FGALTOW_SCALE = 1e-9; //!< @todo documentation
2488static constexpr double UBX_NAV_TIMEGAL_V0_TACC_SCALE = 1e-9; //!< @todo documentation
2489static constexpr bool UBX_NAV_TIMEGAL_V0_VALID_GALTOWVALID(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2490static constexpr bool UBX_NAV_TIMEGAL_V0_VALID_GALWNOVALID(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2491static constexpr bool UBX_NAV_TIMEGAL_V0_VALID_LEAPSVALID(const uint8_t valid) { return (valid & 0x04) == 0x04; } //!< @todo documentation
2492// clang-format on
2493
2494///@}
2495// ---------------------------------------------------------------------------------------------------------------------
2496/**
2497 * @name UBX-NAV-TIMEBDS message
2498 * @{
2499 */
2500
2501//! UBX-NAV-TIMEBDS payload
2502struct UBX_NAV_TIMEBDS_V0_GROUP0 // clang-format off
2503{
2504 uint32_t iTow; //!< @todo documentation
2505 uint32_t SOW; //!< @todo documentation
2506 int32_t fSOW; //!< @todo documentation
2507 int16_t week; //!< @todo documentation
2508 int8_t leapS; //!< @todo documentation
2509 uint8_t valid; //!< @todo documentation
2510 uint32_t tAcc; //!< @todo documentation
2511}; // clang-format on
2512
2513static_assert(sizeof(UBX_NAV_TIMEBDS_V0_GROUP0) == 20, "");
2514
2515// clang-format off
2516static constexpr std::size_t UBX_NAV_TIMEBDS_V0_SIZE = sizeof(UBX_NAV_TIMEBDS_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2517static constexpr double UBX_NAV_TIMEBDS_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2518static constexpr double UBX_NAV_TIMEBDS_V0_FSOW_SCALE = 1e-9; //!< @todo documentation
2519static constexpr double UBX_NAV_TIMEBDS_V0_TACC_SCALE = 1e-9; //!< @todo documentation
2520static constexpr bool UBX_NAV_TIMEBDS_V0_VALID_SOWVALID(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2521static constexpr bool UBX_NAV_TIMEBDS_V0_VALID_WEEKVALID(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2522static constexpr bool UBX_NAV_TIMEBDS_V0_VALID_LEAPSVALID(const uint8_t valid) { return (valid & 0x04) == 0x04; } //!< @todo documentation
2523// clang-format on
2524
2525///@}
2526// ---------------------------------------------------------------------------------------------------------------------
2527/**
2528 * @name UBX-NAV-TIMEGLO message
2529 * @{
2530 */
2531
2532//! UBX-NAV-TIMEGLO payload
2533struct UBX_NAV_TIMEGLO_V0_GROUP0 // clang-format off
2534{
2535 uint32_t iTow; //!< @todo documentation
2536 uint32_t TOD; //!< @todo documentation
2537 int32_t fTOD; //!< @todo documentation
2538 uint16_t Nt; //!< @todo documentation
2539 uint8_t N4; //!< @todo documentation
2540 uint8_t valid; //!< @todo documentation
2541 uint32_t tAcc; //!< @todo documentation
2542}; // clang-format on
2543
2544static_assert(sizeof(UBX_NAV_TIMEGLO_V0_GROUP0) == 20, "");
2545
2546// clang-format off
2547static constexpr std::size_t UBX_NAV_TIMEGLO_V0_SIZE = sizeof(UBX_NAV_TIMEGLO_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2548static constexpr double UBX_NAV_TIMEGLO_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2549static constexpr double UBX_NAV_TIMEGLO_V0_FTOD_SCALE = 1e-9; //!< @todo documentation
2550static constexpr double UBX_NAV_TIMEGLO_V0_TACC_SCALE = 1e-9; //!< @todo documentation
2551static constexpr bool UBX_NAV_TIMEGLO_V0_VALID_TODVALID(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2552static constexpr bool UBX_NAV_TIMEGLO_V0_VALID_DATEVALID(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2553// clang-format on
2554
2555///@}
2556// ---------------------------------------------------------------------------------------------------------------------
2557/**
2558 * @name UBX-NAV-TIMEUTC message
2559 * @{
2560 */
2561
2562//! UBX-NAV-TIMEUTC payload
2563struct UBX_NAV_TIMEUTC_V0_GROUP0 // clang-format off
2564 {
2565 uint32_t iTow; //!< @todo documentation
2566 uint32_t tAcc; //!< @todo documentation
2567 int32_t nano; //!< @todo documentation
2568 uint16_t year; //!< @todo documentation
2569 uint8_t month; //!< @todo documentation
2570 uint8_t day; //!< @todo documentation
2571 uint8_t hour; //!< @todo documentation
2572 uint8_t min; //!< @todo documentation
2573 uint8_t sec; //!< @todo documentation
2574 uint8_t valid; //!< @todo documentation
2575}; // clang-format on
2576
2577static_assert(sizeof(UBX_NAV_TIMEUTC_V0_GROUP0) == 20, "");
2578
2579// clang-format off
2580static constexpr std::size_t UBX_NAV_TIMEUTC_V0_SIZE = sizeof(UBX_NAV_TIMEUTC_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2581static constexpr double UBX_NAV_TIMEUTC_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2582static constexpr double UBX_NAV_TIMEUTC_V0_TACC_SCALE = 1e-9; //!< @todo documentation
2583static constexpr double UBX_NAV_TIMEUTC_V0_NANO_SCALE = 1e-9; //!< @todo documentation
2584static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_VALIDTOW(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2585static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_VALIDWKN(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2586static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_VALIDUTC(const uint8_t valid) { return (valid & 0x04) == 0x04; } //!< @todo documentation
2587static constexpr bool UBX_NAV_TIMEUTC_V0_VALID_AUTHSTATUS(const uint8_t valid) { return (valid & 0x08) == 0x08; } //!< @todo documentation
2588static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD(const uint8_t valid) { return (valid >> 4) & 0x0f; } //!< @todo documentation
2589static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_INFONA = 0; //!< @todo documentation
2590static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_CRL = 1; //!< @todo documentation
2591static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_NIST = 2; //!< @todo documentation
2592static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_USNO = 3; //!< @todo documentation
2593static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_BIPM = 4; //!< @todo documentation
2594static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_EU = 5; //!< @todo documentation
2595static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_SU = 6; //!< @todo documentation
2596static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_NTSC = 7; //!< @todo documentation
2597static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_NPLI = 8; //!< @todo documentation
2598static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_UNNOWN = 15; //!< @todo documentation
2600 types::IxToStr(UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD(valid), "INFONA", "CRL", "NIST", "USNO", "BIPM", "EU", "SU", "NTSC", "NPLI"); } //!< @todo documentation
2601// clang-format on
2602
2603///@}
2604// ---------------------------------------------------------------------------------------------------------------------
2605/**
2606 * @name UBX-NAV-TIMELS message
2607 * @{
2608 */
2609
2610//! UBX-NAV-TIMELS payload
2611struct UBX_NAV_TIMELS_V0_GROUP0 // clang-format off
2612{
2613 uint32_t iTOW; //!< @todo documentation
2614 uint8_t version; //!< @todo documentation
2615 uint8_t reserved0[3]; //!< @todo documentation
2616 uint8_t srcOfCurrLs; //!< @todo documentation
2617 int8_t currLs; //!< @todo documentation
2618 uint8_t srcOfLsChange; //!< @todo documentation
2619 int8_t lsChange; //!< @todo documentation
2620 int32_t timeToLsEvent; //!< @todo documentation
2621 uint16_t dateOfLsGpsWn; //!< @todo documentation
2622 uint16_t dateOfLsGpsDn; //!< @todo documentation
2623 uint8_t reserved1[3]; //!< @todo documentation
2624 uint8_t valid; //!< @todo documentation
2625}; // clang-format on
2626
2627static_assert(sizeof(UBX_NAV_TIMELS_V0_GROUP0) == 24, "");
2628
2629// clang-format off
2630static constexpr std::size_t UBX_NAV_TIMELS_V0_SIZE = sizeof(UBX_NAV_TIMELS_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2631static constexpr double UBX_NAV_TIMELS_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2632static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_DEFAULT = 0; //!< @todo documentation
2633static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_GPSGLO = 1; //!< @todo documentation
2634static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_GPS = 2; //!< @todo documentation
2635static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_SBAS = 3; //!< @todo documentation
2636static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_BDS = 4; //!< @todo documentation
2637static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_GAL = 5; //!< @todo documentation
2638static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_CONFIG = 7; //!< @todo documentation
2639static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_UNKNOWN = 255; //!< @todo documentation
2640inline const char * UBX_NAV_TIMELS_V0_SRCOFCURRLS_STR(const uint8_t srcOfCurrLs) { return srcOfCurrLs == UBX_NAV_TIMELS_V0_SRCOFCURRLS_UNKNOWN ? "UNKNOWN" : types::IxToStr(srcOfCurrLs, "DEFAULT", "GPSGLO", "GPS", "SBAS", "BDS", "GAL", "?", "CONFIG"); } //!< @todo documentation
2641static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_NONE = 0; //!< @todo documentation
2642static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_GPS = 2; //!< @todo documentation
2643static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_SBAS = 3; //!< @todo documentation
2644static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_BDS = 4; //!< @todo documentation
2645static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_GAL = 5; //!< @todo documentation
2646static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_GLO = 6; //!< @todo documentation
2647inline const char * UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_STR(const uint8_t srcOfLsChange) { return types::IxToStr(srcOfLsChange, "NONE", "?", "GPS", "SBAS", "BDS", "GAL", "GLO"); } //!< @todo documentation
2648static constexpr bool UBX_NAV_TIMELS_V0_VALID_CURRLSVALID(const uint8_t valid) { return (valid & 0x01) == 0x01; } //!< @todo documentation
2649static constexpr bool UBX_NAV_TIMELS_V0_VALID_TIMETOLSEVENTVALID(const uint8_t valid) { return (valid & 0x02) == 0x02; } //!< @todo documentation
2650// clang-format on
2651
2652///@}
2653// ---------------------------------------------------------------------------------------------------------------------
2654/**
2655 * @name UBX-NAV-VELECEF message
2656 * @{
2657 */
2658
2659//! UBX-NAV-VELECEF payload
2660struct UBX_NAV_VELECEF_V0_GROUP0 // clang-format off
2661{
2662 uint32_t iTOW; //!< @todo documentation
2663 int32_t ecefVX; //!< @todo documentation
2664 int32_t ecefVY; //!< @todo documentation
2665 int32_t ecefVZ; //!< @todo documentation
2666 uint32_t sAcc; //!< @todo documentation
2667}; // clang-format on
2668
2669static_assert(sizeof(UBX_NAV_VELECEF_V0_GROUP0) == 20, "");
2670
2671// clang-format off
2672static constexpr std::size_t UBX_NAV_VELECEF_V0_SIZE = sizeof(UBX_NAV_VELECEF_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2673static constexpr double UBX_NAV_VELECEF_V0_ITOW_SCALE = 1e-3; //!< @todo documentation
2674static constexpr double UBX_NAV_VELECEF_V0_ECEF_XYZ_SCALE = 1e-2; //!< @todo documentation
2675static constexpr double UBX_NAV_VELECEF_V0_SACC_SCALE = 1e-2; //!< @todo documentation
2676// clang-format on
2677
2678///@}
2679
2680// ---------------------------------------------------------------------------------------------------------------------
2681/**
2682 * @name UBX-RXM-RAWX message
2683 * @{
2684 */
2685
2686//! UBX-RXM-RAWX (version 1, output) payload head
2687struct UBX_RXM_RAWX_V1_GROUP0 // clang-format off
2688{
2689 double rcvTow; //!< @todo documentation
2690 uint16_t week; //!< @todo documentation
2691 int8_t leapS; //!< @todo documentation
2692 uint8_t numMeas; //!< @todo documentation
2693 uint8_t recStat; //!< @todo documentation
2694 uint8_t version; //!< @todo documentation
2695 uint8_t reserved[2]; //!< @todo documentation
2696}; // clang-format on
2697
2698static_assert(sizeof(UBX_RXM_RAWX_V1_GROUP0) == 16, "");
2699
2700//! UBX-RXM-RAWX (version 1, output) payload repeated group
2701struct UBX_RXM_RAWX_V1_GROUP1 // clang-format off
2702{
2703 double prMeas; //!< @todo documentation
2704 double cpMeas; //!< @todo documentation
2705 float doMeas; //!< @todo documentation
2706 uint8_t gnssId; //!< @todo documentation
2707 uint8_t svId; //!< @todo documentation
2708 uint8_t sigId; //!< @todo documentation
2709 uint8_t freqId; //!< @todo documentation
2710 uint16_t locktime; //!< @todo documentation
2711 uint8_t cno; //!< @todo documentation
2712 uint8_t prStdev; //!< @todo documentation
2713 uint8_t cpStdev; //!< @todo documentation
2714 uint8_t doStdev; //!< @todo documentation
2715 uint8_t trkStat; //!< @todo documentation
2716 uint8_t reserved[1]; //!< @todo documentation
2717}; // clang-format on
2718
2719static_assert(sizeof(UBX_RXM_RAWX_V1_GROUP1) == 32, "");
2720
2721// clang-format off
2722static constexpr uint8_t UBX_RXM_RAWX_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + 13]; } //!< @todo documentation
2723static constexpr uint8_t UBX_RXM_RAWX_V1_VERSION = 0x01; //!< @todo documentation
2724static constexpr std::size_t UBX_RXM_RAWX_V1_MIN_SIZE = sizeof(UBX_RXM_RAWX_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2725static constexpr bool UBX_RXM_RAWX_V1_RECSTAT_LEAPSEC(const uint8_t recStat) { return (recStat & 0x01) == 0x01; } //!< @todo documentation
2726static constexpr bool UBX_RXM_RAWX_V1_RECSTAT_CLKRESET(const uint8_t recStat) { return (recStat & 0x02) == 0x02; } //!< @todo documentation
2727static constexpr uint8_t UBX_RXM_RAWX_V1_PRSTDEV_PRSTD(const uint8_t prStdev) { return prStdev & 0x0f; } //!< @todo documentation
2728static constexpr double UBX_RXM_RAWX_V1_PRSTD_SCALE(const double prStd) { return 0.01 * std::exp2(prStd); } //!< @todo documentation
2729static constexpr uint8_t UBX_RXM_RAWX_V1_CPSTDEV_CPSTD(const uint8_t cpStdev) { return cpStdev & 0x0f; } //!< @todo documentation
2730static constexpr double UBX_RXM_RAWX_V1_CPSTD_SCALE(const double cpStd) { return 0.004 * cpStd; } //!< @todo documentation
2731static constexpr uint8_t UBX_RXM_RAWX_V1_DOSTDEV_DOSTD(const uint8_t doStdev) { return doStdev & 0x0f; } //!< @todo documentation
2732static constexpr double UBX_RXM_RAWX_V1_DOSTD_SCALE(const double doStd) { return 0.002 * std::exp2(doStd); } //!< @todo documentation
2733static constexpr double UBX_RXM_RAWX_V1_LOCKTIME_SCALE = 1e-3; //!< @todo documentation
2734static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_PRVALID(const uint8_t trkStat) { return (trkStat & 0x01) == 0x01; } //!< @todo documentation
2735static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_CPVALID(const uint8_t trkStat) { return (trkStat & 0x02) == 0x02; } //!< @todo documentation
2736static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_HALFCYC(const uint8_t trkStat) { return (trkStat & 0x04) == 0x04; } //!< @todo documentation
2737static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_SUBHALFCYC(const uint8_t trkStat) { return (trkStat & 0x08) == 0x08; } //!< @todo documentation
2738static constexpr int UBX_RXM_RAWX_V1_GROUP1_FREQID_TO_SLOT(const uint8_t freqId) { return (int)freqId - 7; } //!< @todo documentation
2739static constexpr std::size_t UBX_RXM_RAWX_V1_SIZE(const uint8_t *msg) { return
2740 ((sizeof(UBX_RXM_RAWX_V1_GROUP0) + UBX_FRAME_SIZE + (((const uint8_t *)(msg))[UBX_HEAD_SIZE + 11] * sizeof(UBX_RXM_RAWX_V1_GROUP1)))); } //!< @todo documentation
2741
2742// clang-format on
2743
2744///@}
2745// ---------------------------------------------------------------------------------------------------------------------
2746/**
2747 * @name UBX-RXM-RTCM message
2748 * @{
2749 */
2750
2751//! UBX-RXM-RTCM (version 2, output)
2752struct UBX_RXM_RTCM_V2_GROUP0 // clang-format off
2753{
2754 uint8_t version; //!< @todo documentation
2755 uint8_t flags; //!< @todo documentation
2756 uint16_t subType; //!< @todo documentation
2757 uint16_t refStation; //!< @todo documentation
2758 uint16_t msgType; //!< @todo documentation
2759}; // clang-format on
2760
2761static_assert(sizeof(UBX_RXM_RTCM_V2_GROUP0) == 8, "");
2762
2763// clang-format off
2764static constexpr uint8_t UBX_RXM_RTCM_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
2765static constexpr uint8_t UBX_RXM_RTCM_V2_VERSION = 0x02; //!< @todo documentation
2766static constexpr std::size_t UBX_RXM_RTCM_V2_SIZE = sizeof(UBX_RXM_RTCM_V2_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2767static constexpr bool UBX_RXM_RTCM_V2_FLAGS_CRCFAILED(const uint8_t flags) { return (flags & 0x01) == 0x01; } //!< @todo documentation
2768static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED(const uint8_t flags) { return (flags >> 1) & 0x03; } //!< @todo documentation
2769inline const char * UBX_RXM_RTCM_V2_FLAGS_MSGUSED_STR(const uint8_t flags) { return types::IxToStr(UBX_RXM_RTCM_V2_FLAGS_MSGUSED(flags), "UNKNOWN", "UNUSED", "USED"); } //!< @todo documentation
2770static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED_UNKNOWN = 0x00; //!< @todo documentation
2771static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED_UNUSED = 0x01; //!< @todo documentation
2772static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED_USED = 0x02; //!< @todo documentation
2773// clang-format on
2774
2775///@}
2776// ---------------------------------------------------------------------------------------------------------------------
2777/**
2778 * @name UBX-RXM-SFRBX message
2779 * @{
2780 */
2781
2782//! UBX-RXM-SFRBX (version 2, output) payload head
2783struct UBX_RXM_SFRBX_V2_GROUP0 // clang-format off
2784{
2785 uint8_t gnssId; //!< @todo documentation
2786 uint8_t svId; //!< @todo documentation
2787 uint8_t sigId; //!< interface description says "reserved", but u-center says "sigId"...
2788 uint8_t freqId; //!< @todo documentation
2789 uint8_t numWords; //!< @todo documentation
2790 uint8_t chn; //!< @todo documentation
2791 uint8_t version; //!< @todo documentation
2792 uint8_t reserved1; //!< @todo documentation
2793}; // clang-format on
2794
2795static_assert(sizeof(UBX_RXM_SFRBX_V2_GROUP0) == 8, "");
2796
2797//! UBX-RXM-SFRBX (version 2, output) payload repeated group
2798struct UBX_RXM_SFRBX_V2_GROUP1 // clang-format off
2799{
2800 uint32_t dwrd; //!< @todo documentation
2801}; // clang-format on
2802
2803static_assert(sizeof(UBX_RXM_SFRBX_V2_GROUP1) == 4, "");
2804
2805// clang-format off
2806static constexpr uint8_t UBX_RXM_SFRBX_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE + 6]; } //!< @todo documentation
2807static constexpr uint8_t UBX_RXM_SFRBX_V2_VERSION = 0x02; //!< @todo documentation
2808static constexpr std::size_t UBX_RXM_SFRBX_V2_MIN_SIZE = sizeof(UBX_RXM_SFRBX_V2_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2809static constexpr int UBX_RXM_SFRBX_V2_GROUP0_FREQID_TO_SLOT(const uint8_t freqId) { return (int)freqId - 7; } //!< @todo documentation
2810// clang-format on
2811
2812///@}
2813
2814// ---------------------------------------------------------------------------------------------------------------------
2815/**
2816 * @name UBX-RXM-SPARTN message
2817 * @{
2818 */
2819
2820//! UBX-RXM-SPARTN (version 1, output)
2821struct UBX_RXM_SPARTN_V1_GROUP0 // clang-format off
2822{
2823 uint8_t version; //!< @todo documentation
2824 uint8_t flags; //!< @todo documentation
2825 uint16_t subType; //!< @todo documentation
2826 uint8_t reserved[2]; //!< @todo documentation
2827 uint16_t msgType; //!< @todo documentation
2828}; // clang-format on
2829
2830// clang-format off
2831static constexpr uint8_t UBX_RXM_SPARTN_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
2832static constexpr uint8_t UBX_RXM_SPARTN_V1_VERSION = 0x01; //!< @todo documentation
2833static constexpr std::size_t UBX_RXM_SPARTN_V1_SIZE = sizeof(UBX_RXM_SPARTN_V1_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2834static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED(const uint8_t flags) { return (flags >> 1) & 0x03; } //!< @todo documentation
2835inline const char * UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_STR(const uint8_t flags) { return types::IxToStr(UBX_RXM_SPARTN_V1_FLAGS_MSGUSED(flags), "UNKNOWN", "UNUSED", "USED"); } //!< @todo documentation
2836static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_UNKNOWN = 0x00; //!< @todo documentation
2837static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_UNUSED = 0x01; //!< @todo documentation
2838static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_USED = 0x02; //!< @todo documentation
2839// clang-format on
2840
2841///@}
2842// ---------------------------------------------------------------------------------------------------------------------
2843/**
2844 * @name UBX-SEC-OSNMA message
2845 * @{
2846 */
2847
2848//! UBX-SEC-OSNMA (version 3, output) payload head
2849struct UBX_SEC_OSNMA_V3_GROUP0 // clang-format off
2850{
2851 uint8_t version; //!< @todo documentation
2852 uint8_t nmaHeader; //!< @todo documentation
2853 uint16_t osnmaMonitoring; //!< @todo documentation
2854 uint8_t timSyncReq; //!< @todo documentation
2855 uint8_t reserved0[3]; //!< @todo documentation
2856 int32_t timSyncReqDiff; //!< @todo documentation
2857 uint8_t reserved1[4]; //!< @todo documentation
2858 uint32_t dsmAuthentication; //!< @todo documentation
2859 uint32_t teslaKey; //!< @todo documentation
2860 uint32_t generalAndTiming; //!< @todo documentation
2861}; // clang-format on
2862
2863static_assert(sizeof(UBX_SEC_OSNMA_V3_GROUP0) == 28, "");
2864
2865//! UBX-SEC-OSNMA (version 3, output) payload repeated group (per authenticated SV)
2866struct UBX_SEC_OSNMA_V3_GROUP1 // clang-format off
2867{
2868 uint16_t bitfield1; //!< @todo documentation
2869 uint8_t svId; //!< @todo documentation
2870 uint8_t reserved2; //!< @todo documentation
2871}; // clang-format on
2872
2873static_assert(sizeof(UBX_SEC_OSNMA_V3_GROUP1) == 4, "");
2874
2875// clang-format off
2876static constexpr uint8_t UBX_SEC_OSNMA_VERSION(const uint8_t* msg) { return msg[UBX_HEAD_SIZE]; } //!< @todo documentation
2877static constexpr uint8_t UBX_SEC_OSNMA_V3_VERSION = 0x03; //!< @todo documentation
2878static constexpr std::size_t UBX_SEC_OSNMA_V3_MIN_SIZE = sizeof(UBX_SEC_OSNMA_V3_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
2879static constexpr bool UBX_SEC_OSNMA_V3_NMAHEADER_HEADERAUTHSTATUS(const uint8_t nmaHeader) { return (nmaHeader & 0x01) == 0x01; } //!< @todo documentation
2880static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS(const uint8_t nmaHeader) { return (nmaHeader >> 1) & 0x03; } //!< @todo documentation
2881inline const char * UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_STR(const uint8_t nmaHeader) { return types::IxToStr(UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS(nmaHeader), "NOTAUTHENTICATED", "TEST", "OPERATIONAL", "INVALID"); } //!< @todo documentation
2882static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_NOTAUTHENTICATED = 0; //!< @todo documentation
2883static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_TEST = 1; //!< @todo documentation
2884static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_OPERATIONAL = 2; //!< @todo documentation
2885static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_INVALID = 3; //!< @todo documentation
2886static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CHAININFORCE(const uint8_t nmaHeader) { return (nmaHeader >> 3) & 0x03; } //!< @todo documentation
2887static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS(const uint8_t nmaHeader) { return (nmaHeader >> 5) & 0x07; } //!< @todo documentation
2888inline const char * UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_STR(const uint8_t nmaHeader) { return types::IxToStr(UBX_SEC_OSNMA_V3_NMAHEADER_CPKS(nmaHeader), "NOTAPPLICABLE", "NOMINAL", "EOC", "CREV", "NPK", "PKREV", "NMT", "AM"); } //!< @todo documentation
2889static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NOTAPPLICABLE = 0; //!< @todo documentation
2890static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NOMINAL = 1; //!< @todo documentation
2891static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_EOC = 2; //!< @todo documentation
2892static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_CREV = 3; //!< @todo documentation
2893static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NPK = 4; //!< @todo documentation
2894static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_PKREV = 5; //!< @todo documentation
2895static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NMT = 6; //!< @todo documentation
2896static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_AM = 7; //!< @todo documentation
2897static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_OSNMAENABLED(const uint16_t osnmaMonitoring) { return (osnmaMonitoring & 0x0001) == 0x0001; } //!< @todo documentation
2898static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NUMBERSVS(const uint16_t osnmaMonitoring) { return (osnmaMonitoring >> 1) & 0x1f; } //!< @todo documentation
2899static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE(const uint16_t osnmaMonitoring) { return (osnmaMonitoring >> 6) & 0x03; } //!< @todo documentation
2900inline const char * UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_STR(const uint16_t osnmaMonitoring) { return types::IxToStr(UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE(osnmaMonitoring), "SAME", "HEALTHY", "PROBLEM"); } //!< @todo documentation
2901static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_SAME = 0; //!< @todo documentation
2902static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_HEALTHY = 1; //!< @todo documentation
2903static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_PROBLEM = 2; //!< @todo documentation
2904static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_NODATA(const uint16_t osnmaMonitoring) { return (osnmaMonitoring & 0x0100) == 0x0100; } //!< @todo documentation
2905static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_WRONGDATA(const uint16_t osnmaMonitoring) { return (osnmaMonitoring & 0x0200) == 0x0200; } //!< @todo documentation
2906static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_WRONGFLXMAC(const uint16_t osnmaMonitoring) { return (osnmaMonitoring & 0x0400) == 0x0400; } //!< @todo documentation
2907static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_WRONGMACLT(const uint16_t osnmaMonitoring) { return (osnmaMonitoring & 0x0800) == 0x0800; } //!< @todo documentation
2908static constexpr bool UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCENABLED(const uint8_t timSyncReq) { return (timSyncReq & 0x01) == 0x01; } //!< @todo documentation
2909static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS(const uint8_t timSyncReq) { return (timSyncReq >> 1) & 0x07; } //!< @todo documentation
2910inline const char * UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_STR(const uint8_t timSyncReq) { return types::IxToStr(UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS(timSyncReq), "NOTPERFORMED", "NOTRUSTEDTIME", "NOTACCURATE", "PASSED", "FAILED"); } //!< @todo documentation
2911static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_NOTPERFORMED = 0; //!< @todo documentation
2912static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_NOTRUSTEDTIME = 1; //!< @todo documentation
2913static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_NOTACCURATE = 2; //!< @todo documentation
2914static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_PASSED = 3; //!< @todo documentation
2915static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_FAILED = 4; //!< @todo documentation
2916static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS(const uint32_t dsmAuthentication) { return dsmAuthentication & 0x0000003f; } //!< @todo documentation
2917inline const char * UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_STR(const uint32_t dsmAuthentication) { return types::IxToStr(UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS(dsmAuthentication), "NONE", "KROOT", "PKR", "ALERT", "KROOTFAILED", "PKRFAILED", "UNKNOWNPUBKEY", "DECOMPRESSFAILED", "UNSUPPORTEDCONFIG", "MISSINGMERKLEROOT"); } //!< @todo documentation
2918static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_NONE = 0; //!< @todo documentation
2919static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_KROOT = 1; //!< @todo documentation
2920static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_PKR = 2; //!< @todo documentation
2921static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_ALERT = 3; //!< @todo documentation
2922static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_KROOTFAILED = 4; //!< @todo documentation
2923static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_PKRFAILED = 5; //!< @todo documentation
2924static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_UNKNOWNPUBKEY = 6; //!< @todo documentation
2925static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_DECOMPRESSFAILED = 7; //!< @todo documentation
2926static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_UNSUPPORTEDCONFIG = 8; //!< @todo documentation
2927static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_MISSINGMERKLEROOT = 9; //!< @todo documentation
2928static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_HASHFUNCTION(const uint32_t dsmAuthentication) { return (dsmAuthentication >> 6) & 0x03; } //!< @todo documentation
2929static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_MACFUNCTION(const uint32_t dsmAuthentication) { return (dsmAuthentication >> 8) & 0x03; } //!< @todo documentation
2930static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_PUBKEYID(const uint32_t dsmAuthentication) { return (dsmAuthentication >> 10) & 0x0f; } //!< @todo documentation
2931static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_MACLOOKUPTABLE(const uint32_t dsmAuthentication) { return (dsmAuthentication >> 14) & 0xff; } //!< @todo documentation
2932static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_KEYSIZE(const uint32_t dsmAuthentication) { return (dsmAuthentication >> 22) & 0x0f; } //!< @todo documentation
2933static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_MACSIZE(const uint32_t dsmAuthentication) { return (dsmAuthentication >> 26) & 0x0f; } //!< @todo documentation
2934static constexpr bool UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_FROMNVS(const uint32_t dsmAuthentication) { return (dsmAuthentication & 0x40000000) == 0x40000000; } //!< @todo documentation
2935static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS(const uint32_t teslaKey) { return teslaKey & 0x00000007; } //!< @todo documentation
2936inline const char * UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_STR(const uint32_t teslaKey) { return types::IxToStr(UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS(teslaKey), "NONE", "AUTHENTICATED", "FAILED", "ONGOING", "KEYINPAST", "ROOTKEYTOOOLD"); } //!< @todo documentation
2937static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_NONE = 0; //!< @todo documentation
2938static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_AUTHENTICATED = 1; //!< @todo documentation
2939static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_FAILED = 2; //!< @todo documentation
2940static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_ONGOING = 3; //!< @todo documentation
2941static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_KEYINPAST = 4; //!< @todo documentation
2942static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_ROOTKEYTOOOLD = 5; //!< @todo documentation
2943static constexpr uint16_t UBX_SEC_OSNMA_V3_TESLAKEY_WNSF(const uint32_t teslaKey) { return (teslaKey >> 3) & 0x0fff; } //!< @todo documentation
2944static constexpr uint16_t UBX_SEC_OSNMA_V3_TESLAKEY_TOWSF(const uint32_t teslaKey) { return (teslaKey >> 15) & 0x7fff; } //!< @todo documentation
2945static constexpr double UBX_SEC_OSNMA_V3_TESLAKEY_TOWSF_SCALE = 30.0; //!< towSf is seconds of week divided by 30s (subframe length)
2946static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_CHAINID(const uint32_t teslaKey) { return (teslaKey >> 30) & 0x03; } //!< @todo documentation
2947static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_AUTHSVS(const uint32_t generalAndTiming) { return generalAndTiming & 0x0000003f; } //!< @todo documentation
2948static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_AUTHNUMTIM(const uint32_t generalAndTiming) { return (generalAndTiming >> 6) & 0x3f; } //!< @todo documentation
2949static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT(const uint32_t generalAndTiming) { return (generalAndTiming >> 12) & 0x03; } //!< @todo documentation
2950inline const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_STR(const uint32_t generalAndTiming) { return types::IxToStr(UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT(generalAndTiming), "NONE", "AUTHENTICATED", "FAILED"); } //!< @todo documentation
2951static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_NONE = 0; //!< @todo documentation
2952static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_AUTHENTICATED = 1; //!< @todo documentation
2953static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_FAILED = 2; //!< @todo documentation
2954static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE(const uint32_t generalAndTiming) { return (generalAndTiming >> 14) & 0x01; } //!< @todo documentation
2955inline const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE_STR(const uint32_t generalAndTiming) { return types::IxToStr(UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE(generalAndTiming), "FAST", "SLOW"); } //!< @todo documentation
2956static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE_FAST = 0; //!< @todo documentation
2957static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE_SLOW = 1; //!< @todo documentation
2958static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC(const uint32_t generalAndTiming) { return (generalAndTiming >> 15) & 0x03; } //!< @todo documentation
2959inline const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_STR(const uint32_t generalAndTiming) { return types::IxToStr(UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC(generalAndTiming), "FACTORY", "SATELLITES", "AIDED", "NVS"); } //!< @todo documentation
2960static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_FACTORY = 0; //!< @todo documentation
2961static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_SATELLITES = 1; //!< @todo documentation
2962static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_AIDED = 2; //!< @todo documentation
2963static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_NVS = 3; //!< @todo documentation
2964static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC(const uint32_t generalAndTiming) { return (generalAndTiming >> 17) & 0x03; } //!< @todo documentation
2965inline const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_STR(const uint32_t generalAndTiming) { return types::IxToStr(UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC(generalAndTiming), "FACTORY", "?", "AIDED", "NVS"); } //!< @todo documentation
2966static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_FACTORY = 0; //!< @todo documentation
2967static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_AIDED = 2; //!< @todo documentation
2968static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_NVS = 3; //!< @todo documentation
2969static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTVAL(const uint32_t generalAndTiming) { return (generalAndTiming & 0x00080000) == 0x00080000; } //!< @todo documentation
2970static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREMERKLEROOTSRC(const uint32_t generalAndTiming) { return (generalAndTiming >> 20) & 0x03; } //!< @todo documentation
2971inline const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREMERKLEROOTSRC_STR(const uint32_t generalAndTiming) { return types::IxToStr(UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREMERKLEROOTSRC(generalAndTiming), "FACTORY", "?", "AIDED", "NVS"); } //!< @todo documentation
2972static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREMERKLEROOTVAL(const uint32_t generalAndTiming) { return (generalAndTiming & 0x00400000) == 0x00400000; } //!< @todo documentation
2973static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYVAL(const uint32_t generalAndTiming) { return (generalAndTiming & 0x00800000) == 0x00800000; } //!< @todo documentation
2974static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYVAL(const uint32_t generalAndTiming) { return (generalAndTiming & 0x01000000) == 0x01000000; } //!< @todo documentation
2975static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYSRC(const uint32_t generalAndTiming) { return (generalAndTiming >> 25) & 0x03; } //!< @todo documentation
2976inline const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYSRC_STR(const uint32_t generalAndTiming) { return types::IxToStr(UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYSRC(generalAndTiming), "FACTORY", "SATELLITES", "AIDED", "NVS"); } //!< @todo documentation
2977static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYID(const uint32_t generalAndTiming) { return (generalAndTiming >> 27) & 0x0f; } //!< @todo documentation
2978static constexpr uint16_t UBX_SEC_OSNMA_V3_GROUP1_BITFIELD1_IODE(const uint16_t bitfield1) { return bitfield1 & 0x03ff; } //!< @todo documentation
2979static constexpr uint8_t UBX_SEC_OSNMA_V3_GROUP1_BITFIELD1_AUTHNUM(const uint16_t bitfield1) { return (bitfield1 >> 10) & 0x1f; } //!< @todo documentation
2980static constexpr bool UBX_SEC_OSNMA_V3_GROUP1_BITFIELD1_AUTHSTATUS(const uint16_t bitfield1) { return (bitfield1 & 0x8000) == 0x8000; } //!< @todo documentation
2981static constexpr std::size_t UBX_SEC_OSNMA_V3_SIZE(const uint8_t* msg) { return //!< @todo documentation
2982 sizeof(UBX_SEC_OSNMA_V3_GROUP0) + UBX_FRAME_SIZE + (UBX_SEC_OSNMA_V3_GENERALANDTIMING_AUTHSVS(((const uint8_t *)(msg))[UBX_HEAD_SIZE + 24]) * sizeof(UBX_SEC_OSNMA_V3_GROUP1)); } //!< @todo documentation
2983// clang-format on
2984
2985///@}
2986// ---------------------------------------------------------------------------------------------------------------------
2987/**
2988 * @name UBX-TIM-SVIN message
2989 * @{
2990 */
2991
2992//! UBX-TIM_SVIN payload
2993struct UBX_TIM_SVIN_V0_GROUP0 // clang-format off
2994{
2995 uint32_t dur; //!< @todo documentation
2996 int32_t meanX; //!< @todo documentation
2997 int32_t meanY; //!< @todo documentation
2998 int32_t meanZ; //!< @todo documentation
2999 uint32_t meanV; //!< @todo documentation
3000 uint32_t obs; //!< @todo documentation
3001 uint8_t valid; //!< @todo documentation
3002 uint8_t active; //!< @todo documentation
3003 uint16_t reserved; //!< @todo documentation
3004}; // clang-format on
3005
3006static_assert(sizeof(UBX_TIM_SVIN_V0_GROUP0) == 28, "");
3007
3008// clang-format off
3009static constexpr std::size_t UBX_TIM_SVIN_V0_SIZE = sizeof(UBX_TIM_SVIN_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
3010// clang-format on
3011
3012///@}
3013// ---------------------------------------------------------------------------------------------------------------------
3014/**
3015 * @name UBX-TIM-TM2 message
3016 * @{
3017 */
3018
3019//! UBX-TIM-TM2 payload
3020struct UBX_TIM_TM2_V0_GROUP0 // clang-format off
3021{
3022 uint8_t ch; //!< @todo documentation
3023 uint8_t flags; //!< @todo documentation
3024 uint16_t count; //!< @todo documentation
3025 uint16_t wnR; //!< @todo documentation
3026 uint16_t wnF; //!< @todo documentation
3027 uint32_t towMsR; //!< @todo documentation
3028 uint32_t towSubMsR; //!< @todo documentation
3029 uint32_t towMsF; //!< @todo documentation
3030 uint32_t towSubMsF; //!< @todo documentation
3031 uint32_t accEst; //!< @todo documentation
3032}; // clang-format on
3033
3034static_assert(sizeof(UBX_TIM_TM2_V0_GROUP0) == 28, "");
3035
3036// clang-format off
3037static constexpr std::size_t UBX_TIM_TM2_V0_SIZE = sizeof(UBX_TIM_TM2_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
3038static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_MODE(const uint8_t flags) { return flags & 0x01; } //!< @todo documentation
3039inline const char * UBX_TIM_TM2_V0_FLAGS_MODE_STR(const uint8_t flags) { return types::IxToStr(UBX_TIM_TM2_V0_FLAGS_MODE(flags), "SINGLE", "RUNNING"); } //!< @todo documentation
3040static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_MODE_SINGLE = 0; //!< @todo documentation
3041static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_MODE_RUNNING = 1; //!< @todo documentation
3042static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_RUN(const uint8_t flags) { return (flags >> 1) & 0x01; } //!< @todo documentation
3043inline const char * UBX_TIM_TM2_V0_FLAGS_RUN_STR(const uint8_t flags) { return types::IxToStr(UBX_TIM_TM2_V0_FLAGS_RUN(flags), "ARMED", "STOPPED"); } //!< @todo documentation
3044static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_RUN_ARMED = 0; //!< @todo documentation
3045static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_RUN_STOPPED = 1; //!< @todo documentation
3046static constexpr bool UBX_TIM_TM2_V0_FLAGS_NEWFALLINGEDGE(const uint8_t flags) { return (flags & 0x04) == 0x04; } //!< @todo documentation
3047static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE(const uint8_t flags) { return (flags >> 3) & 0x03; } //!< @todo documentation
3048inline const char * UBX_TIM_TM2_V0_FLAGS_TIMEBASE_STR(const uint8_t flags) { return types::IxToStr(UBX_TIM_TM2_V0_FLAGS_TIMEBASE(flags), "RX", "GNSS", "UTC"); } //!< @todo documentation
3049static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE_RX = 0; //!< @todo documentation
3050static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE_GNSS = 1; //!< @todo documentation
3051static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE_UTC = 2; //!< @todo documentation
3052static constexpr bool UBX_TIM_TM2_V0_FLAGS_UTCACAVAIL(const uint8_t flags) { return (flags & 0x20) == 0x20; } //!< @todo documentation
3053static constexpr bool UBX_TIM_TM2_V0_FLAGS_TIMEVALID(const uint8_t flags) { return (flags & 0x40) == 0x40; } //!< @todo documentation
3054static constexpr bool UBX_TIM_TM2_V0_FLAGS_NEWRISINGEDGE(const uint8_t flags) { return (flags & 0x80) == 0x80; } //!< @todo documentation
3055static constexpr double UBX_TIM_TM2_V0_TOW_SCALE = 1e-3; //!< @todo documentation
3056static constexpr double UBX_TIM_TM2_V0_SUBMS_SCALE = 1e-9; //!< @todo documentation
3057static constexpr double UBX_TIM_TM2_V0_ACCEST_SCALE = 1e-9; //!< @todo documentation
3058// clang-format on
3059
3060///@}
3061// ---------------------------------------------------------------------------------------------------------------------
3062/**
3063 * @name UBX-TIM_TP message
3064 * @{
3065 */
3066
3067//! UBX-TIM-TP payload
3068struct UBX_TIM_TP_V0_GROUP0 // clang-format off
3069{
3070 uint32_t towMs; //!< @todo documentation
3071 uint32_t towSubMs; //!< @todo documentation
3072 int32_t qErr; //!< @todo documentation
3073 uint16_t week; //!< @todo documentation
3074 uint8_t flags; //!< @todo documentation
3075 uint8_t refInfo; //!< @todo documentation
3076}; // clang-format on
3077
3078static_assert(sizeof(UBX_TIM_TP_V0_GROUP0) == 16, "");
3079
3080// clang-format off
3081static constexpr std::size_t UBX_TIM_TP_V0_SIZE = sizeof(UBX_TIM_TP_V0_GROUP0) + UBX_FRAME_SIZE; //!< @todo documentation
3082static constexpr double UBX_TIM_TP_V0_TOWMS_SCALE = 1e-3; //!< @todo documentation
3083static constexpr double UBX_TIM_TP_V0_TOWSUBMS_SCALE = 0x1.0624dd2f1a9fcp-42; //!< perl -e 'printf "%a", 2**-32 * 1e-3'
3084static constexpr double UBX_TIM_TP_V0_TOWSUBMS_SCALE_APPROX = 2.3283064365386963e-18; //!< perl -e 'printf "%.18g", 2**-32 * 1e-8'
3085static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_TIMEBASE(const uint8_t flags) { return flags & 0x01; } //!< @todo documentation
3086inline const char * UBX_TIM_TP_V0_FLAGS_TIMEBASE_STR(const uint8_t flags) { return types::IxToStr(UBX_TIM_TP_V0_FLAGS_TIMEBASE(flags), "GNSS", "UTC"); } //!< @todo documentation
3087static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_TIMEBASE_GNSS = 0; //!< @todo documentation
3088static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_TIMEBASE_UTC = 1; //!< @todo documentation
3089static constexpr bool UBX_TIM_TP_V0_FLAGS_UTC(const uint8_t flags) { return (flags & 0x02) == 0x02; } //!< @todo documentation
3090static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM(const uint8_t flags) { return (flags >> 2) & 0x03; } //!< @todo documentation
3091inline const char * UBX_TIM_TP_V0_FLAGS_RAIM_STR(const uint8_t flags) { return types::IxToStr(UBX_TIM_TP_V0_FLAGS_RAIM(flags), "NA", "INACTIVE", "ACTIVE"); } //!< @todo documentation
3092static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM_NA = 0; //!< @todo documentation
3093static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM_INACTIVE = 1; //!< @todo documentation
3094static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM_ACTIVE = 2; //!< @todo documentation
3095static constexpr bool UBX_TIM_TP_V0_FLAGS_QERRINVALID(const uint8_t flags) { return (flags & 0x10) == 0x10; } //!< @todo documentation
3096static constexpr bool UBX_TIM_TP_V0_FLAGS_TPNOTLOCKED(const uint8_t flags) { return (flags & 0x20) == 0x20; } //!< @todo documentation
3097static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS(const uint8_t refInfo) { return refInfo & 0x0f; } //!< @todo documentation
3098static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_GPS = 0; //!< @todo documentation
3099static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_GLO = 1; //!< @todo documentation
3100static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_BDS = 2; //!< @todo documentation
3101static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_GAL = 3; //!< @todo documentation
3102static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_NAVIC = 4; //!< @todo documentation
3103static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_UNKNOWN = 15; //!< @todo documentation
3104inline const char * UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_STR(const uint8_t refInfo) { return UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS(refInfo) == UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_UNKNOWN ? "UNKNOWN" : \
3105 types::IxToStr(UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS(refInfo), "GPS", "GLO", "BDS", "GAL", "NAVIC"); } //!< @todo documentation
3106static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD(const uint8_t refInfo) { return (refInfo >> 4) & 0x0f; } //!< @todo documentation
3107static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_INFONA = 0; //!< @todo documentation
3108static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_CRL = 1; //!< @todo documentation
3109static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_NIST = 2; //!< @todo documentation
3110static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_USNO = 3; //!< @todo documentation
3111static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_BIPM = 4; //!< @todo documentation
3112static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_EU = 5; //!< @todo documentation
3113static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_SU = 6; //!< @todo documentation
3114static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_NTSC = 7; //!< @todo documentation
3115static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_NPLI = 8; //!< @todo documentation
3116static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_UNNOWN = 15; //!< @todo documentation
3117inline const char * UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_STR(const uint8_t refInfo) { return UBX_TIM_TP_V0_REFINFO_UTCSTANDARD(refInfo) == UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_UNNOWN ? "UNNOWN" : \
3118 types::IxToStr(UBX_TIM_TP_V0_REFINFO_UTCSTANDARD(refInfo), "INFONA", "CRL", "NIST", "USNO", "BIPM", "EU", "SU", "NTSC", "NPLI"); } //!< @todo documentation
3119// clang-format on
3120
3121///@}
3122// ---------------------------------------------------------------------------------------------------------------------
3123
3124#undef UBX_PACKED
3125
3126/* ****************************************************************************************************************** */
3127} // namespace ubx
3128} // namespace parser
3129} // namespace common
3130} // namespace fpsdk
3131#endif // __FPSDK_COMMON_PARSER_UBX_HPP__
Parser UBX routines and types.
Definition ubx.hpp:51
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_COLDSTART
Coldstart (erase all data).
Definition ubx.hpp:963
static constexpr bool UBX_MGA_INI_TIME_UTC_V0_BITFIELD0_TRUSTEDSOURCE(const uint8_t bitfield0)
Definition ubx.hpp:1255
static constexpr uint8_t UBX_ACK_NAK_MSGID
UBX-ACK-NAK message ID.
Definition ubx.hpp:229
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_CALIBRATED1
Definition ubx.hpp:1137
static constexpr uint8_t UBX_NAV_VELECEF_MSGID
UBX-NAV-VELECEF message ID.
Definition ubx.hpp:397
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_INACTIVE
Definition ubx.hpp:2417
static constexpr bool UBX_ESF_MEAS_V0_FLAGS_CALIBTTAGVALID(const uint16_t flags)
Definition ubx.hpp:1052
static constexpr const char * UBX_TIM_TM2_STRID
UBX-TIM-TM2 message name.
Definition ubx.hpp:482
static constexpr uint8_t UBX_RXM_SPARTN_V1_VERSION
Definition ubx.hpp:2832
static constexpr uint8_t UBX_SEC_OSNMA_VERSION(const uint8_t *msg)
Definition ubx.hpp:2876
static constexpr uint8_t UBX_RXM_RTCM_V2_VERSION
Definition ubx.hpp:2765
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_G
Definition ubx.hpp:1513
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VCOREHIGHFAIL
Boot type: V_CORE_HIGH fail.
Definition ubx.hpp:1676
const char * UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_STR(const uint8_t flags2)
Definition ubx.hpp:2419
static constexpr double UBX_NAV_TIMEBDS_V0_ITOW_SCALE
Definition ubx.hpp:2517
static constexpr uint8_t UBX_NAV_HPPOSLLH_V0_VERSION
Definition ubx.hpp:1973
static constexpr double UBX_NAV_SIG_V0_PRRES_SCALE
Definition ubx.hpp:2324
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_60_TO_90_SEC
Definition ubx.hpp:2102
static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_UART2
Definition ubx.hpp:1355
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_SU
Definition ubx.hpp:3113
static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_PROBLEM
Definition ubx.hpp:2903
const char * UBX_GNSSID_STR(const uint8_t gnssId)
Definition ubx.hpp:660
static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREMERKLEROOTVAL(const uint32_t generalAndTiming)
Definition ubx.hpp:2972
const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREMERKLEROOTSRC_STR(const uint32_t generalAndTiming)
Definition ubx.hpp:2971
static constexpr uint8_t UBX_ESF_STATUS_V2_VERSION
Definition ubx.hpp:1097
static constexpr const char * UBX_ESF_ALG_STRID
UBX-ESF-ALG message name.
Definition ubx.hpp:244
static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_NONE
Definition ubx.hpp:2296
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_FACTORY
Definition ubx.hpp:2960
static constexpr uint8_t UBX_NUM_QZSS
Q01-Q10 ("Jxx" in RINEX).
Definition ubx.hpp:673
static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_RAM
UBX-CFG-VALGET.layers value: layer RAM.
Definition ubx.hpp:871
static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_UNKNOWN
Definition ubx.hpp:1411
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_RELPOSHEADINGVALID(const uint32_t flags)
Definition ubx.hpp:2187
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_CHAINID(const uint32_t teslaKey)
Definition ubx.hpp:2946
static constexpr double UBX_NAV_CLOCK_V0_FACC_SCALE
Definition ubx.hpp:1788
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_WARMSTART
Warmstart (clear ephemerides).
Definition ubx.hpp:962
static constexpr const char * UBX_NAV2_POSECEF_STRID
UBX-NAV2-POSECEF message name.
Definition ubx.hpp:412
static constexpr uint8_t UBX_NAV_PVAT_MSGID
UBX-NAV-PVAT message ID.
Definition ubx.hpp:357
static constexpr uint8_t UBX_RXM_COR_MSGID
UBX-RXM-COR message ID.
Definition ubx.hpp:449
static constexpr uint8_t UBX_NAV_SBAS_MSGID
UBX-NAV-SBAS message ID.
Definition ubx.hpp:367
static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_3D_DR
Definition ubx.hpp:2067
static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_NO
Definition ubx.hpp:2181
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_QZSS_SLAS
Definition ubx.hpp:2321
static constexpr const char * UBX_NAV2_STRID
UBX-NAV2 class name.
Definition ubx.hpp:209
static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_VERSION
Definition ubx.hpp:1174
static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_NODATA(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2904
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_SWBACKUP
Boot type: software backup.
Definition ubx.hpp:1671
static constexpr const char * UBX_CFG_VALDEL_STRID
UBX-CFG-VALDEL message name.
Definition ubx.hpp:238
static constexpr uint8_t UBX_TIM_VRFY_MSGID
UBX-TIM-VRFY message ID.
Definition ubx.hpp:485
static constexpr uint8_t UBX_FIRST_GPS
G01.
Definition ubx.hpp:676
static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED_UNUSED
Definition ubx.hpp:2771
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VIOFAIL
Boot type: VIO fail.
Definition ubx.hpp:1673
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CARRLOCK2
Definition ubx.hpp:2293
static constexpr bool UBX_NAV_STATUS_V0_FIXSTAT_DIFFCORR(const uint8_t fixStat)
Definition ubx.hpp:2410
static constexpr uint8_t UBX_RTCM3_TYPE1074_MSGID
UBX-RTCM3-TYPE1074 message ID.
Definition ubx.hpp:571
static constexpr const char * UBX_RTCM3_TYPE4072_1_STRID
UBX-RTCM3-TYPE4072_1 message name.
Definition ubx.hpp:600
static constexpr const char * UBX_NAV_RESETODO_STRID
UBX-NAV-RESETODO message name.
Definition ubx.hpp:364
static constexpr double UBX_NAV_TIMETRUSTED_V1_ITOW_SCALE
Definition ubx.hpp:2367
static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_SW
Controlled software reset.
Definition ubx.hpp:965
static constexpr std::size_t UBX_NAV_HPPOSLLH_V0_SIZE
Definition ubx.hpp:1974
static constexpr const char * UBX_INF_DEBUG_STRID
UBX-INF-DEBUG message name.
Definition ubx.hpp:254
static constexpr uint8_t UBX_MON_HW3_MSGID
UBX-MON-HW3 message ID.
Definition ubx.hpp:305
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_UNKNOWN
Boot type: unknown.
Definition ubx.hpp:1666
const char * UBX_SIGID_GPS_STR(const uint8_t sigId)
Definition ubx.hpp:697
static constexpr uint8_t UBX_NMEA_STANDARD_TXT_MSGID
UBX-NMEA-STANDARD_TXT message ID.
Definition ubx.hpp:529
static constexpr uint8_t UBX_CFG_RST_V0_RESERVED
Reserved.
Definition ubx.hpp:971
static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS(const uint8_t timSyncReq)
Definition ubx.hpp:2909
static constexpr uint8_t UBX_NMEA_STANDARD_GRS_MSGID
UBX-NMEA-STANDARD_GRS message ID.
Definition ubx.hpp:517
static constexpr const char * UBX_NAV2_SVIN_STRID
UBX-NAV2-SVIN message name.
Definition ubx.hpp:428
static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_USB
Definition ubx.hpp:1356
static constexpr uint8_t UBX_SIGID_GLO_L2OF
GLONASS L2 OF.
Definition ubx.hpp:729
static constexpr uint8_t UBX_NAV_RELPOSNED_MSGID
UBX-NAV-RELPOSNED message ID.
Definition ubx.hpp:361
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_INFONA
Definition ubx.hpp:3107
static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_TIMEBASE_UTC
Definition ubx.hpp:3088
static constexpr uint8_t UBX_MON_SYS_MSGID
UBX-MON-SYS message ID.
Definition ubx.hpp:321
static constexpr uint8_t UBX_CFG_VALSET_V0_LAYERS_RAM
UBX-CFG-VALSET.layers flag: layer RAM.
Definition ubx.hpp:815
static constexpr uint8_t UBX_NAV2_TIMEGLO_MSGID
UBX-NAV2-TIMEGLO message ID.
Definition ubx.hpp:433
static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_PRVALID(const uint8_t trkStat)
Definition ubx.hpp:2734
static constexpr std::size_t UBX_CFG_VALSET_V1_MIN_SIZE
Definition ubx.hpp:824
static constexpr const char * UBX_MON_SPAN_STRID
UBX-MON-SPAN message name.
Definition ubx.hpp:320
static constexpr const char * UBX_NAV_TIMETRUSTED_STRID
UBX-NAV-TIMETRUSTED message name.
Definition ubx.hpp:394
static constexpr const char * UBX_NMEA_STANDARD_GSV_STRID
UBX-NMEA-STANDARD_GSV message name.
Definition ubx.hpp:524
static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_HALFCYC(const uint8_t trkStat)
Definition ubx.hpp:2736
static constexpr const char * UBX_MON_HW_STRID
UBX-MON-HW message name.
Definition ubx.hpp:302
static constexpr const char * UBX_MON_TXBUF_STRID
UBX-MON-TXBUF message name.
Definition ubx.hpp:326
static constexpr uint8_t UBX_RTCM3_TYPE1094_MSGID
UBX-RTCM3-TYPE1094 message ID.
Definition ubx.hpp:583
static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_NOTRUSTEDTIME
Definition ubx.hpp:2912
static constexpr uint8_t UBX_MON_RF_V0_ANTPOWER_OFF
Definition ubx.hpp:1583
static constexpr std::size_t UBX_CFG_VALDEL_V1_KEYS_MAX_SIZE
UBX-CFG-VALDEL.keys maximum size.
Definition ubx.hpp:927
static constexpr bool UBX_NAV_PVT_V1_FLAGS2_CONFTIME(const uint8_t flags2)
Definition ubx.hpp:2088
static constexpr const char * UBX_NMEA_PUBX_POSITION_STRID
UBX-NMEA-PUBX_POSITION message name.
Definition ubx.hpp:540
const char * UBX_CFG_VALGET_V0_LAYER_STR(const uint8_t layer)
Definition ubx.hpp:875
static constexpr uint8_t UBX_NMEA_STANDARD_GSA_MSGID
UBX-NMEA-STANDARD_GSA message ID.
Definition ubx.hpp:519
static constexpr const char * UBX_NAV_ODO_STRID
UBX-NAV-ODO message name.
Definition ubx.hpp:348
static constexpr bool UBX_NAV_TIMEBDS_V0_VALID_WEEKVALID(const uint8_t valid)
Definition ubx.hpp:2521
static constexpr const char * UBX_MON_VER_STRID
UBX-MON-VER message name.
Definition ubx.hpp:328
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS(const uint8_t initStatus1)
Definition ubx.hpp:1102
static constexpr uint8_t UBX_SIGID_SBAS_L1CA
SBAS L1 C/A.
Definition ubx.hpp:698
static constexpr std::size_t UBX_CFG_VALGET_V1_MAX_SIZE
Definition ubx.hpp:893
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_WATCHDOG
Boot type: watchdog.
Definition ubx.hpp:1668
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_AM
Definition ubx.hpp:2896
static constexpr uint8_t UBX_NAV_SVIN_MSGID
UBX-NAV-SVIN message ID.
Definition ubx.hpp:377
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_RTC
RTC.
Definition ubx.hpp:959
static constexpr std::size_t UBX_MGA_GAL_OSNMA_MERKLE_V0_SIZE
Definition ubx.hpp:1206
static constexpr uint8_t UBX_CFG_RST_MSGID
UBX-CFG-RST message ID.
Definition ubx.hpp:235
static constexpr std::size_t UBX_TIM_SVIN_V0_SIZE
Definition ubx.hpp:3009
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_GAL
Definition ubx.hpp:3101
static constexpr double UBX_NAV_STATUS_V0_TTFF_SCALE
Definition ubx.hpp:2429
static constexpr uint8_t UBX_MON_HW_V0_APOWER_UNKNOWN
Definition ubx.hpp:1418
static constexpr bool UBX_MON_HW3_V0_PINMASK_VPMANAGER(const uint16_t pinMask)
Definition ubx.hpp:1520
static constexpr const char * UBX_MON_TEMP_STRID
UBX-MON-TEMP message name.
Definition ubx.hpp:324
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_VALIDUTC(const uint8_t valid)
Definition ubx.hpp:2586
static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_PIN
Definition ubx.hpp:1453
static constexpr std::size_t UBX_CFG_VALSET_V0_MAX_SIZE
Definition ubx.hpp:821
static constexpr std::size_t UBX_SEC_OSNMA_V3_SIZE(const uint8_t *msg)
Definition ubx.hpp:2981
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT(const uint32_t generalAndTiming)
Definition ubx.hpp:2949
static constexpr const char * UBX_MGA_INI_TIME_UTC_STRID
Definition ubx.hpp:1244
static constexpr const char * UBX_NAV_TIMEGAL_STRID
UBX-NAV-TIMEGAL message name.
Definition ubx.hpp:382
static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_WRONGMACLT(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2907
static constexpr uint8_t UBX_CFG_VALSET_V1_RESERVED
UBX-CFG-VALSET.reserved value.
Definition ubx.hpp:833
static constexpr uint8_t UBX_NAV_VELNED_MSGID
UBX-NAV-VELNED message ID.
Definition ubx.hpp:399
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE(const uint16_t flags3)
Definition ubx.hpp:2090
static constexpr std::size_t UBX_MGA_INI_TIME_UTC_V0_SIZE
Definition ubx.hpp:1246
static constexpr const char * UBX_NAV_POSLLH_STRID
UBX-NAV-POSLLH message name.
Definition ubx.hpp:356
static constexpr const char * UBX_NAV_EELL_STRID
UBX-NAV-EELL message name.
Definition ubx.hpp:338
static constexpr uint8_t UBX_MON_CLSID
UBX-MON class ID.
Definition ubx.hpp:204
static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_GNSS_STOP
Stop GNSS.
Definition ubx.hpp:968
static constexpr bool UBX_MON_COMMS_V0_TXERRORS_MEM(const uint8_t txErrors)
Definition ubx.hpp:1348
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYSRC(const uint32_t generalAndTiming)
Definition ubx.hpp:2975
static constexpr double UBX_NAV_HPPOSECEF_V0_PACC_SCALE
Definition ubx.hpp:1939
static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_RAM
UBX-CFG-VALGET.layers value: layer RAM.
Definition ubx.hpp:884
static constexpr const char * UBX_NMEA_PUBX_RATE_STRID
UBX-NMEA-PUBX_RATE message name.
Definition ubx.hpp:542
static constexpr const char * UBX_UPD_FLDET_STRID
UBX-UPD-FLDET message name.
Definition ubx.hpp:488
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_ONGOING
Definition ubx.hpp:2940
static constexpr uint8_t UBX_CFG_VALDEL_MSGID
UBX-CFG-VALDEL message ID.
Definition ubx.hpp:237
static constexpr const char * UBX_NAV2_TIMEGAL_STRID
UBX-NAV2-TIMEGAL message name.
Definition ubx.hpp:432
static constexpr uint8_t UBX_RXM_MEASX_MSGID
UBX-RXM-MEASX message ID.
Definition ubx.hpp:451
static constexpr const char * UBX_NAV_PVAT_STRID
UBX-NAV-PVAT message name.
Definition ubx.hpp:358
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_NONE
Definition ubx.hpp:2951
static constexpr const char * UBX_RTCM3_TYPE1097_STRID
UBX-RTCM3-TYPE1097 message name.
Definition ubx.hpp:588
static constexpr uint8_t UBX_RTCM3_TYPE1004_MSGID
UBX-RTCM3-TYPE1004 message ID.
Definition ubx.hpp:553
static constexpr uint8_t UBX_NMEA_PUBX_RATE_MSGID
UBX-NMEA-PUBX_RATE message ID.
Definition ubx.hpp:541
static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM_INACTIVE
Definition ubx.hpp:3093
static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_FIXED
Definition ubx.hpp:2183
static constexpr const char * UBX_RTCM3_TYPE1125_STRID
UBX-RTCM3-TYPE1125 message name.
Definition ubx.hpp:592
const char * UBX_MON_RF_V0_ANTSTATUS_STR(const uint8_t antStatus)
Definition ubx.hpp:1582
static constexpr uint8_t UBX_SIGID_QZSS_L2CL
QZSS L2 CL.
Definition ubx.hpp:724
static constexpr uint8_t UBX_RTCM3_TYPE1087_MSGID
UBX-RTCM3-TYPE1087 message ID.
Definition ubx.hpp:581
static constexpr double UBX_NAV_TIMETRUSTED_V1_PROPTOW_SCALE
Definition ubx.hpp:2369
static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSHEADING_SCALE
Definition ubx.hpp:2170
static constexpr const char * UBX_NAV_TIMEUTC_STRID
UBX-NAV-TIMEUTC message name.
Definition ubx.hpp:396
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NMT
Definition ubx.hpp:2895
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_NONE
Definition ubx.hpp:2937
static constexpr uint8_t UBX_TIM_SVIN_MSGID
UBX-TIM-SVIN message ID.
Definition ubx.hpp:479
static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_CONTINUE
UBX-CFG-VALSET.transaction value: transaction continue.
Definition ubx.hpp:830
static constexpr const char * UBX_INF_NOTICE_STRID
UBX-INF-NOTICE message name.
Definition ubx.hpp:258
const char * UBX_NAV_STATUS_V0_GPSFIX_STR(const uint8_t gpsFix)
Definition ubx.hpp:2399
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_NONE
Nothing.
Definition ubx.hpp:950
static constexpr bool UBX_NAV_PVT_V1_FLAGS3_AUTHTIME(const uint16_t flags3)
Definition ubx.hpp:2105
static constexpr const char * UBX_MGA_GAL_STRID
UBX-MGA-GAL message name.
Definition ubx.hpp:288
static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_TIMEBASE(const uint8_t flags)
Definition ubx.hpp:3085
static constexpr const char * UBX_RTCM3_TYPE1087_STRID
UBX-RTCM3-TYPE1087 message name.
Definition ubx.hpp:582
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_EOC
Definition ubx.hpp:2891
static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_OK
Definition ubx.hpp:1574
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_PKREV
Definition ubx.hpp:2894
const char * UBX_ESF_STATUS_V2_FUSIONMODE_STR(const uint8_t fusionMode)
Definition ubx.hpp:1129
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_RTCCALIB
Definition ubx.hpp:1401
static constexpr uint8_t UBX_SIGID_BDS_B1ID1
BeiDou B1I D1.
Definition ubx.hpp:710
static constexpr uint8_t UBX_INF_CLSID
UBX-INF class ID.
Definition ubx.hpp:198
static constexpr double UBX_NAV_TIMEGLO_V0_ITOW_SCALE
Definition ubx.hpp:2548
const char * UBX_NAV_SIG_V0_IONOMODEL_STR(const uint8_t ionoModel)
Definition ubx.hpp:2301
static constexpr uint8_t UBX_INF_NOTICE_MSGID
UBX-INF-NOTICE message ID.
Definition ubx.hpp:257
static constexpr double UBX_TIM_TM2_V0_ACCEST_SCALE
Definition ubx.hpp:3057
static constexpr const char * UBX_NAV_SOL_STRID
UBX-NAV-SOL message name.
Definition ubx.hpp:374
static constexpr uint8_t UBX_NAV_SAT_V1_VERSION
Definition ubx.hpp:2225
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_POS
Position.
Definition ubx.hpp:955
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_INDICATED
Definition ubx.hpp:2422
static constexpr uint8_t UBX_RXM_RAWX_V1_DOSTDEV_DOSTD(const uint8_t doStdev)
Definition ubx.hpp:2731
static constexpr uint8_t UBX_MON_IO_MSGID
UBX-MON-IO message ID.
Definition ubx.hpp:307
static constexpr double UBX_NAV_ATT_V0_ITOW_SCALE
Definition ubx.hpp:1760
static constexpr uint8_t UBX_NAV_TIMEGLO_MSGID
UBX-NAV-TIMEGLO message ID.
Definition ubx.hpp:383
static constexpr std::size_t UBX_SEC_OSNMA_V3_MIN_SIZE
Definition ubx.hpp:2878
static constexpr uint8_t UBX_MON_RF_V0_JAMIND_MAX
Definition ubx.hpp:1589
static constexpr uint8_t UBX_NMEA_STANDARD_GST_MSGID
UBX-NMEA-STANDARD_GST message ID.
Definition ubx.hpp:521
static constexpr uint8_t UBX_NAV2_TIMELS_MSGID
UBX-NAV2-TIMELS message ID.
Definition ubx.hpp:437
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_INACTIVE
Definition ubx.hpp:2079
static constexpr uint8_t UBX_SIGID_QZSS_L5Q
QZSS L5 Q.
Definition ubx.hpp:726
static constexpr std::size_t UBX_NAV_TIMETRUSTED_V1_SIZE
Definition ubx.hpp:2358
static constexpr uint8_t UBX_MON_TEMP_V0_VERSION
Definition ubx.hpp:1702
static constexpr uint8_t UBX_LOG_INFO_MSGID
UBX-LOG-INFO message ID.
Definition ubx.hpp:269
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_NIST
Definition ubx.hpp:3109
static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_UNUSED
Definition ubx.hpp:2837
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PERIPHPIO_PIO
Definition ubx.hpp:1504
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_DIFFSOLN(const uint32_t flags)
Definition ubx.hpp:2177
static constexpr uint8_t UBX_ESF_CLSID
UBX-ESF class ID.
Definition ubx.hpp:196
static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_FUSION
Definition ubx.hpp:1126
static constexpr uint32_t UBX_ESF_MEAS_V0_DATA_DATAFIELD(const uint32_t data)
Definition ubx.hpp:1054
static constexpr bool UBX_TIM_TM2_V0_FLAGS_TIMEVALID(const uint8_t flags)
Definition ubx.hpp:3053
static constexpr const char * UBX_RTCM3_TYPE1005_STRID
UBX-RTCM3-TYPE1005 message name.
Definition ubx.hpp:556
static constexpr bool UBX_NAV_TIMEUTC_V0_VALID_AUTHSTATUS(const uint8_t valid)
Definition ubx.hpp:2587
static constexpr uint8_t UBX_SIGID_GAL_E1C
Galileo E1 C.
Definition ubx.hpp:700
static constexpr const char * UBX_RTCM3_TYPE1095_STRID
UBX-RTCM3-TYPE1095 message name.
Definition ubx.hpp:586
static constexpr uint8_t UBX_SIGID_BDS_B2AP
BeiDou B2 ap (pilot).
Definition ubx.hpp:718
static constexpr std::size_t UBX_ESF_MEAS_V0_FLAGS_NUMMEAS(const uint16_t flags)
Definition ubx.hpp:1053
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE(const uint8_t flags2)
Definition ubx.hpp:2412
static constexpr double UBX_NAV_EELL_V0_ELLIPSEMINOR_SCALE
Definition ubx.hpp:1884
static constexpr uint8_t UBX_GNSSID_SBAS
SBAS.
Definition ubx.hpp:654
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_MISSINGMERKLEROOT
Definition ubx.hpp:2927
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_HOTSTART
Hostsart (keep all data).
Definition ubx.hpp:961
static constexpr uint8_t UBX_MON_SPAN_V0_VERSION
Definition ubx.hpp:1627
static constexpr const char * UBX_NMEA_STANDARD_GLQ_STRID
UBX-NMEA-STANDARD_GLQ message name.
Definition ubx.hpp:508
static constexpr const char * UBX_NAV2_TIMEUTC_STRID
UBX-NAV2-TIMEUTC message name.
Definition ubx.hpp:444
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_F
Definition ubx.hpp:1512
static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_2D
Definition ubx.hpp:2065
static constexpr uint8_t UBX_NAV_TIMETRUSTED_MSGID
UBX-NAV-TIMETRUSTED message ID.
Definition ubx.hpp:393
static constexpr uint8_t UBX_SEC_OSNMA_MSGID
UBX-SEC-OSNMA message ID.
Definition ubx.hpp:471
static constexpr uint8_t UBX_LOG_FINDTIME_MSGID
UBX-LOG-FINDTIME message ID.
Definition ubx.hpp:267
static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_NOTPERFORMED
Definition ubx.hpp:2911
static constexpr uint8_t UBX_RTCM3_TYPE1012_MSGID
UBX-RTCM3-TYPE1012 message ID.
Definition ubx.hpp:567
static constexpr const char * UBX_NAV_VELNED_STRID
UBX-NAV-VELNED message name.
Definition ubx.hpp:400
static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE(const uint8_t ref)
Definition ubx.hpp:1289
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_NOTAUTHENTICATED
Definition ubx.hpp:2882
static constexpr uint8_t UBX_NAV_HPPOSECEF_VERSION(const uint8_t *msg)
Definition ubx.hpp:1933
static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSHPLENGTH_SCALE
Definition ubx.hpp:2172
const char * UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_STR(const uint8_t flags)
Definition ubx.hpp:1572
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_NPLI
Definition ubx.hpp:2597
static constexpr const char * UBX_NMEA_STANDARD_GGA_STRID
UBX-NMEA-STANDARD_GGA message name.
Definition ubx.hpp:504
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_OTHER2
Definition ubx.hpp:2237
static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE(const uint8_t ref)
Definition ubx.hpp:1247
static constexpr const char * UBX_UPD_STRID
UBX-UPD class name.
Definition ubx.hpp:217
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_AUTH_STATUS(const uint16_t sigFlags)
Definition ubx.hpp:2314
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_AUTHTIME_NOT_AUTHENTICATED
Definition ubx.hpp:2107
static constexpr uint8_t UBX_SIGID_GAL_E1B
Galileo E1 B.
Definition ubx.hpp:701
static constexpr uint32_t UBX_CFG_VALGET_V1_GROUP_WILDCARD(const uint32_t groupId)
UBX-CFG-VALGET.keys group wildcard.
Definition ubx.hpp:891
static constexpr std::size_t UBX_MON_HW3_V0_MIN_SIZE
Definition ubx.hpp:1495
static constexpr double UBX_NAV_HPPOSLLH_V0_ACC_SCALE
Definition ubx.hpp:1981
static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_HEALTHY
Definition ubx.hpp:2305
static constexpr double UBX_NAV_TIMELS_V0_ITOW_SCALE
Definition ubx.hpp:2631
static constexpr double UBX_NAV_PVT_V1_HEADMOT_SCALE
Definition ubx.hpp:2120
static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_USED
Definition ubx.hpp:2838
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_MACSIZE(const uint32_t dsmAuthentication)
Definition ubx.hpp:2933
static constexpr uint8_t UBX_MON_SYS_VERSION(const uint8_t *msg)
Definition ubx.hpp:1663
static constexpr uint8_t UBX_MON_RF_VERSION(const uint8_t *msg)
Definition ubx.hpp:1566
static constexpr uint8_t UBX_SEC_SIG_MSGID
UBX-SEC-SIG message ID.
Definition ubx.hpp:473
const char * UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME_STR(const uint8_t bitfield0)
Definition ubx.hpp:1208
static constexpr bool UBX_NAV_TIMETRUSTED_V1_VALID_TRUSTEDTIMEVALID(const uint8_t valid)
Definition ubx.hpp:2365
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VDDXFAIL
Boot type: VDD_X fail.
Definition ubx.hpp:1674
static constexpr std::size_t UBX_CFG_VALDEL_V1_MIN_SIZE
Definition ubx.hpp:917
static constexpr const char * UBX_NMEA_STANDARD_ZDA_STRID
UBX-NMEA-STANDARD_ZDA message name.
Definition ubx.hpp:536
static constexpr uint8_t UBX_RXM_SPARTNKEY_MSGID
UBX-RXM-SPARTNKEY message ID.
Definition ubx.hpp:469
static constexpr double UBX_NAV_HPPOSECEF_V0_ITOW_SCALE
Definition ubx.hpp:1936
static constexpr std::size_t UBX_CFG_VALSET_V1_CFGDATA_MAX_SIZE
UBX-CFG-VALSET.cfgData maximum size.
Definition ubx.hpp:835
static constexpr const char * UBX_NAV2_ODO_STRID
UBX-NAV2-ODO message name.
Definition ubx.hpp:410
static constexpr const char * UBX_RXM_SPARTNKEY_STRID
UBX-RXM-SPARTNKEY message name.
Definition ubx.hpp:470
static constexpr std::size_t UBX_CFG_VALSET_V0_MIN_SIZE
Definition ubx.hpp:814
static constexpr const char * UBX_MGA_GLO_STRID
UBX-MGA-GLO message name.
Definition ubx.hpp:290
static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_FLASH
Definition ubx.hpp:1454
static constexpr uint8_t UBX_UPD_CLSID
UBX-UPD class ID.
Definition ubx.hpp:216
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE_SLOW
Definition ubx.hpp:2957
static constexpr uint8_t UBX_NAV_PL_MSGID
UBX-NAV-PL message ID.
Definition ubx.hpp:351
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NOMINAL
Definition ubx.hpp:2890
static constexpr uint8_t UBX_NMEA_STANDARD_GPQ_MSGID
UBX-NMEA-STANDARD_GPQ message ID.
Definition ubx.hpp:513
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_HEALTH
Health.
Definition ubx.hpp:953
const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE_STR(const uint32_t generalAndTiming)
Definition ubx.hpp:2955
static constexpr double UBX_SEC_OSNMA_V3_TESLAKEY_TOWSF_SCALE
towSf is seconds of week divided by 30s (subframe length)
Definition ubx.hpp:2945
static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYVAL(const uint32_t generalAndTiming)
Definition ubx.hpp:2973
static constexpr uint8_t UBX_CFG_VALDEL_V1_RESERVED
UBX-CFG-VALDEL.reserved value.
Definition ubx.hpp:925
static constexpr uint8_t UBX_NMEA_STANDARD_DTM_MSGID
UBX-NMEA-STANDARD_DTM message ID.
Definition ubx.hpp:495
static constexpr double UBX_ESF_STATUS_V2_ITOW_SCALE
Definition ubx.hpp:1101
static constexpr uint8_t UBX_MGA_GAL_MSGID
UBX-MGA-GAL message ID.
Definition ubx.hpp:287
static constexpr uint8_t UBX_MON_HW3_V0_VERSION
Definition ubx.hpp:1494
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS(const uint8_t initStatus1)
Definition ubx.hpp:1113
const char * UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_STR(const uint8_t flags2)
Definition ubx.hpp:2425
static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_OTHER
Definition ubx.hpp:1364
const char * UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_STR(const uint8_t initStatus2)
Definition ubx.hpp:1120
static constexpr uint8_t UBX_LOG_RETR_MSGID
UBX-LOG-RETR message ID.
Definition ubx.hpp:271
static constexpr uint8_t UBX_NAV_COV_VERSION(const uint8_t *msg)
Definition ubx.hpp:1824
static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED(const uint8_t flags)
Definition ubx.hpp:2768
static constexpr bool UBX_MGA_INI_TIME_GNSS_V0_REF_FALL(const uint8_t ref)
Definition ubx.hpp:1294
static constexpr uint8_t UBX_RTCM3_TYPE1033_MSGID
UBX-RTCM3-TYPE1033 message ID.
Definition ubx.hpp:569
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_AIDED
Definition ubx.hpp:2967
const char * UBX_SIGID_QZSS_STR(const uint8_t sigId)
Definition ubx.hpp:727
static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_FAILED
Definition ubx.hpp:2915
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_ACQUISITION
Definition ubx.hpp:2076
static constexpr const char * UBX_NMEA_STRID
UBX-NMEA class name.
Definition ubx.hpp:219
static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSHPN_E_D_SCALE
Definition ubx.hpp:2171
static constexpr uint8_t UBX_UPD_FLDET_MSGID
UBX-UPD-FLDET message ID.
Definition ubx.hpp:487
static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_MISSINGMEAS
Definition ubx.hpp:1147
static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2899
static constexpr uint8_t UBX_NMEA_STANDARD_VTG_MSGID
UBX-NMEA-STANDARD_VTG message ID.
Definition ubx.hpp:533
static constexpr double UBX_NAV_TIMEGPS_V0_TACC_SCALE
Definition ubx.hpp:2457
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_PKRFAILED
Definition ubx.hpp:2923
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_INITALIZING
Definition ubx.hpp:1122
static constexpr const char * UBX_SEC_UNIQID_STRID
UBX-SEC-UNIQID message name.
Definition ubx.hpp:478
static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_DEFAULT
UBX-CFG-VALGET.layers value: layer Default.
Definition ubx.hpp:887
const char * UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_STR(const uint8_t refInfo)
Definition ubx.hpp:3117
static constexpr uint8_t UBX_GNSSID_GPS
GPS.
Definition ubx.hpp:653
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE_RX
Definition ubx.hpp:3049
static constexpr uint8_t UBX_RXM_RLM_MSGID
UBX-RXM-RLM message ID.
Definition ubx.hpp:461
static constexpr uint8_t UBX_NMEA_STANDARD_GAQ_MSGID
UBX-NMEA-STANDARD_GAQ message ID.
Definition ubx.hpp:497
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_DO_CORR_USED(const uint16_t sigFlags)
Definition ubx.hpp:2313
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_ALM
Almanac.
Definition ubx.hpp:952
static constexpr const char * UBX_NAV2_POSLLH_STRID
UBX-NAV2-POSLLH message name.
Definition ubx.hpp:414
const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_STR(const uint32_t generalAndTiming)
Definition ubx.hpp:2950
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_NONE
Definition ubx.hpp:2231
static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_3D
Definition ubx.hpp:2403
static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_RTCM2
Definition ubx.hpp:1361
static constexpr bool UBX_NAV_STATUS_V0_FLAGS_WKNSET(const uint8_t flags)
Definition ubx.hpp:2408
static constexpr const char * UBX_NAV_PL_STRID
UBX-NAV-PL message name.
Definition ubx.hpp:352
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_NONE
Definition ubx.hpp:2641
static constexpr double UBX_TIM_TP_V0_TOWSUBMS_SCALE_APPROX
perl -e 'printf "%.18g", 2**-32 * 1e-8'
Definition ubx.hpp:3084
static constexpr double UBX_NAV_PVT_V1_NANO_SCALE
Definition ubx.hpp:2125
static constexpr uint8_t UBX_NMEA_STANDARD_VLW_MSGID
UBX-NMEA-STANDARD_VLW message ID.
Definition ubx.hpp:531
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN(const uint8_t flags2)
Definition ubx.hpp:2424
static constexpr const char * UBX_NAV_HPPOSLLH_STRID
UBX-NAV-HPPOSLLH message name.
Definition ubx.hpp:346
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE_GNSS
Definition ubx.hpp:3050
static constexpr double UBX_NAV_TIMEGAL_V0_FGALTOW_SCALE
Definition ubx.hpp:2487
const char * UBX_MON_HW3_V0_PINMASK_PERIPHPIO_STR(const uint16_t pinMask)
Definition ubx.hpp:1502
static constexpr std::size_t UBX_ESF_STATUS_V2_MIN_SIZE
Definition ubx.hpp:1098
static constexpr uint8_t UBX_SIGID_BDS_B1CD
BeiDou B1 Cd (data).
Definition ubx.hpp:717
static constexpr const char * UBX_NMEA_STANDARD_GST_STRID
UBX-NMEA-STANDARD_GST message name.
Definition ubx.hpp:522
static constexpr uint8_t UBX_NAV_ORB_MSGID
UBX-NAV-ORB message ID.
Definition ubx.hpp:349
static constexpr uint8_t UBX_RXM_RAWX_V1_PRSTDEV_PRSTD(const uint8_t prStdev)
Definition ubx.hpp:2727
static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_INIT
Definition ubx.hpp:1125
static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_VERSION
Definition ubx.hpp:1287
static constexpr uint8_t UBX_NAV_EELL_VERSION(const uint8_t *msg)
Definition ubx.hpp:1878
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_RELPOSNORMALIZED(const uint32_t flags)
Definition ubx.hpp:2188
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_30_TO_45_SEC
Definition ubx.hpp:2100
static constexpr uint8_t UBX_NAV_SAT_MSGID
UBX-NAV-SAT message ID.
Definition ubx.hpp:365
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE_FAST
Definition ubx.hpp:2956
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_RTCM2
Definition ubx.hpp:2318
static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_BBR
UBX-CFG-VALGET.layers value: layer BBR.
Definition ubx.hpp:885
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_KLOB
Klobuchar parameters.
Definition ubx.hpp:954
static constexpr uint8_t UBX_NAV_TIMEBDS_MSGID
UBX-NAV-TIMEBDS message ID.
Definition ubx.hpp:379
static constexpr double UBX_NAV_PVT_V1_SACC_SCALE
Definition ubx.hpp:2121
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_EU
Definition ubx.hpp:2594
static constexpr uint8_t UBX_MON_HW_V0_JAMIND_MAX
Definition ubx.hpp:1422
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_DIRECTION_IN
Definition ubx.hpp:1518
const char * UBX_TIM_TM2_V0_FLAGS_TIMEBASE_STR(const uint8_t flags)
Definition ubx.hpp:3048
static constexpr const char * UBX_NAV2_SBAS_STRID
UBX-NAV2-SBAS message name.
Definition ubx.hpp:420
static constexpr uint8_t UBX_MON_TXBUF_MSGID
UBX-MON-TXBUF message ID.
Definition ubx.hpp:325
static constexpr double UBX_NAV_PVT_V1_HACC_SCALE
Definition ubx.hpp:2116
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_KEYINPAST
Definition ubx.hpp:2941
static constexpr uint8_t UBX_SIGID_GAL_E5AQ
Galileo E5 aQ.
Definition ubx.hpp:703
static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_SAME
Definition ubx.hpp:2901
static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_DEFAULT
UBX-CFG-VALGET.layers value: layer Default.
Definition ubx.hpp:874
static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_INIT
Definition ubx.hpp:1410
static constexpr std::size_t UBX_NAV_TIMEGLO_V0_SIZE
Definition ubx.hpp:2547
static constexpr double UBX_NAV_PVT_V1_PDOP_SCALE
Definition ubx.hpp:2123
static constexpr double UBX_NAV_EELL_V0_ELLIPSEORIENT_SCALE
Definition ubx.hpp:1882
static constexpr const char * UBX_TIM_TP_STRID
UBX-TIM-TP message name.
Definition ubx.hpp:484
static constexpr uint8_t UBX_MGA_CLSID
UBX-MGA class ID.
Definition ubx.hpp:202
static constexpr const char * UBX_LOG_RETRPOS_STRID
UBX-LOG-RETRPOS message name.
Definition ubx.hpp:274
static constexpr bool UBX_MON_HW3_V0_FLAGS_RTCCALIB(const uint8_t flags)
Definition ubx.hpp:1498
static constexpr std::size_t UBX_MON_HW3_V0_SIZE(const uint8_t *msg)
Definition ubx.hpp:1496
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_PR_CORR_USED(const uint16_t sigFlags)
Definition ubx.hpp:2311
static constexpr uint8_t UBX_NAV2_COV_MSGID
UBX-NAV2-COV message ID.
Definition ubx.hpp:403
static constexpr std::size_t UBX_CFG_CFG_V0_MAX_SIZE
Definition ubx.hpp:1001
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_INFONA
Definition ubx.hpp:2589
static constexpr uint8_t UBX_NAV2_CLOCK_MSGID
UBX-NAV2-CLOCK message ID.
Definition ubx.hpp:401
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_ROOTKEYTOOOLD
Definition ubx.hpp:2942
static constexpr uint8_t UBX_NAV2_TIMEQZSS_MSGID
UBX-NAV2-TIMEQZSS message ID.
Definition ubx.hpp:439
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_OFF
Definition ubx.hpp:1121
static constexpr uint8_t UBX_CFG_VALSET_V1_LAYER_BBR
UBX-CFG-VALSET.layers flag: layer BBR.
Definition ubx.hpp:826
static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE_ECDSAP256
Definition ubx.hpp:1179
static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED_UNKNOWN
Definition ubx.hpp:2770
static constexpr std::size_t UBX_MON_HW_V0_SIZE
Definition ubx.hpp:1400
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_INITALIZING
Definition ubx.hpp:1116
static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_NMEA
Definition ubx.hpp:1359
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_CRL
Definition ubx.hpp:2590
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_ACQUISITION
Definition ubx.hpp:2414
static constexpr uint8_t UBX_NAV_ATT_VERSION(const uint8_t *msg)
Definition ubx.hpp:1757
static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_NONE
UBX-CFG-VALSET.transaction value: no transaction.
Definition ubx.hpp:828
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_NOTCALIB
Definition ubx.hpp:1135
static constexpr const char * UBX_LOG_RETRPOSX_STRID
UBX-LOG-RETRPOSX message name.
Definition ubx.hpp:276
static constexpr double UBX_NAV_DOP_V0_XDOP_SCALE
Definition ubx.hpp:1854
static constexpr uint16_t UBX_SEC_OSNMA_V3_GROUP1_BITFIELD1_IODE(const uint16_t bitfield1)
Definition ubx.hpp:2978
static constexpr uint8_t UBX_CFG_CFG_V0_DEVICE_FLASH
Layer Flash.
Definition ubx.hpp:1009
static constexpr const char * UBX_RTCM3_TYPE1007_STRID
UBX-RTCM3-TYPE1007 message name.
Definition ubx.hpp:560
static constexpr const char * UBX_NMEA_STANDARD_GSA_STRID
UBX-NMEA-STANDARD_GSA message name.
Definition ubx.hpp:520
static constexpr uint8_t UBX_LOG_RETRPOS_MSGID
UBX-LOG-RETRPOS message ID.
Definition ubx.hpp:273
static constexpr const char * UBX_MON_RXBUF_STRID
UBX-MON-RXBUF message name.
Definition ubx.hpp:316
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_TRACKING
Definition ubx.hpp:2077
static constexpr uint8_t UBX_RTCM3_TYPE1075_MSGID
UBX-RTCM3-TYPE1075 message ID.
Definition ubx.hpp:573
static constexpr uint8_t UBX_NMEA_STANDARD_GBQ_MSGID
UBX-NMEA-STANDARD_GBQ message ID.
Definition ubx.hpp:499
static constexpr uint8_t UBX_RXM_RAWX_V1_VERSION
Definition ubx.hpp:2723
static constexpr bool UBX_NAV_STATUS_V0_FLAGS_GPSFIXOK(const uint8_t flags)
Definition ubx.hpp:2406
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MACADKDTYPE(const uint32_t generalAndTiming)
Definition ubx.hpp:2954
static constexpr double UBX_NAV_TIMEUTC_V0_ITOW_SCALE
Definition ubx.hpp:2581
static constexpr double UBX_ESF_MEAS_V0_CALIBTTAG_SCALE
Definition ubx.hpp:1056
static constexpr uint8_t UBX_GNSSID_QZSS
QZSS.
Definition ubx.hpp:657
static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_INIT
Definition ubx.hpp:1577
static constexpr const char * UBX_NAV_STATUS_STRID
UBX-NAV-STATUS message name.
Definition ubx.hpp:376
static constexpr const char * UBX_RTCM3_TYPE1074_STRID
UBX-RTCM3-TYPE1074 message name.
Definition ubx.hpp:572
static constexpr const char * UBX_NMEA_STANDARD_GBS_STRID
UBX-NMEA-STANDARD_GBS message name.
Definition ubx.hpp:502
static constexpr uint8_t UBX_MON_RF_V0_ANTPOWER_ON
Definition ubx.hpp:1584
static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_UART1
Definition ubx.hpp:1354
static constexpr double UBX_RXM_RAWX_V1_LOCKTIME_SCALE
Definition ubx.hpp:2733
static constexpr const char * UBX_NAV2_VELECEF_STRID
UBX-NAV2-VELECEF message name.
Definition ubx.hpp:446
static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_NONE
Definition ubx.hpp:1291
static constexpr uint8_t UBX_NAV_ATT_V0_VERSION
Definition ubx.hpp:1758
const char * UBX_MON_HW_V0_ASTATUS_STR(const uint8_t aStatus)
Definition ubx.hpp:1415
static constexpr std::size_t UBX_CFG_VALDEL_V1_MAX_K
UBX-CFG-VALDEL.cfgData maximum number of key IDs.
Definition ubx.hpp:926
static constexpr const char * UBX_MGA_GPS_STRID
UBX-MGA-GPS message name.
Definition ubx.hpp:292
static constexpr std::size_t UBX_RXM_SFRBX_V2_MIN_SIZE
Definition ubx.hpp:2808
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_CREV
Definition ubx.hpp:2892
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_INITIALIZED1
Definition ubx.hpp:1111
static constexpr double UBX_NAV_PVT_V1_TACC_SCALE
Definition ubx.hpp:2124
static constexpr uint8_t UBX_MON_PATCH_MSGID
UBX-MON-PATCH message ID.
Definition ubx.hpp:311
static constexpr uint8_t UBX_CFG_VALSET_V0_LAYERS_FLASH
UBX-CFG-VALSET.layers flag: layer Flash.
Definition ubx.hpp:817
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_NTSC
Definition ubx.hpp:2596
static constexpr uint8_t UBX_NAV_POSLLH_MSGID
UBX-NAV-POSLLH message ID.
Definition ubx.hpp:355
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_KEYSIZE(const uint32_t dsmAuthentication)
Definition ubx.hpp:2932
static constexpr uint8_t UBX_CFG_CLSID
UBX-CFG class ID.
Definition ubx.hpp:194
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_REFPOSMISS(const uint32_t flags)
Definition ubx.hpp:2185
static constexpr bool UBX_NAV_TIMETRUSTED_V1_VALID_DELTATIMEVALID(const uint8_t valid)
Definition ubx.hpp:2366
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_EVENT
Definition ubx.hpp:1143
static constexpr std::size_t UBX_NAV_ATT_V0_SIZE
Definition ubx.hpp:1759
static constexpr uint8_t UBX_INF_ERROR_MSGID
UBX-INF-ERROR message ID.
Definition ubx.hpp:255
static constexpr const char * UBX_MON_GNSS_STRID
UBX-MON-GNSS message name.
Definition ubx.hpp:300
static constexpr bool UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS(const uint16_t flags3)
Definition ubx.hpp:2109
static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_EXTINT0
Definition ubx.hpp:1292
static constexpr bool UBX_NAV_PVT_V1_FLAGS3_INVALIDLLH(const uint16_t flags3)
Definition ubx.hpp:2089
static constexpr std::size_t UBX_TIM_TM2_V0_SIZE
Definition ubx.hpp:3037
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_OFF
Definition ubx.hpp:1104
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_KROOT
Definition ubx.hpp:2919
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN_FIXED
Definition ubx.hpp:2085
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_DO_USED(const uint16_t sigFlags)
Definition ubx.hpp:2310
static constexpr uint8_t UBX_NAV2_DOP_MSGID
UBX-NAV2-DOP message ID.
Definition ubx.hpp:405
static constexpr const char * UBX_RXM_PMP_STRID
UBX-RXM-PMP message name.
Definition ubx.hpp:454
const char * UBX_NAV_SIG_V0_QUALITYIND_STR(const uint8_t qualityInd)
Definition ubx.hpp:2295
static constexpr std::size_t UBX_NAV_HPPOSECEF_V0_SIZE
Definition ubx.hpp:1935
static constexpr uint8_t UBX_UPD_SAFEBOOT_MSGID
UBX-UPD-SAFEBOOT message ID.
Definition ubx.hpp:491
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_NOTACTIVE
Definition ubx.hpp:2074
static constexpr uint8_t UBX_RTCM3_TYPE1085_MSGID
UBX-RTCM3-TYPE1085 message ID.
Definition ubx.hpp:579
static constexpr const char * UBX_SEC_SIGLOG_STRID
UBX-SEC-SIGLOG message name.
Definition ubx.hpp:476
static constexpr double UBX_NAV_EOE_V0_ITOW_SCALE
Definition ubx.hpp:1904
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_UNSUPPORTEDCONFIG
Definition ubx.hpp:2926
const char * UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_STR(const uint8_t nmaHeader)
Definition ubx.hpp:2881
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_AUTHNUMTIM(const uint32_t generalAndTiming)
Definition ubx.hpp:2948
static constexpr uint8_t UBX_NMEA_STANDARD_RLM_MSGID
UBX-NMEA-STANDARD_RLM message ID.
Definition ubx.hpp:525
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CODELOCK
Definition ubx.hpp:2291
static constexpr double UBX_NAV_CLOCK_V0_TACC_SCALE
Definition ubx.hpp:1787
const char * UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_STR(const uint8_t sensStatus2)
Definition ubx.hpp:1140
static constexpr const char * UBX_RXM_RAWX_STRID
UBX-RXM-RAWX message name.
Definition ubx.hpp:460
static constexpr uint8_t UBX_RXM_SFRBX_MSGID
UBX-RXM-SFRBX message ID.
Definition ubx.hpp:465
static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_OK
Definition ubx.hpp:1412
static constexpr const char * UBX_NMEA_STANDARD_GQQ_STRID
UBX-NMEA-STANDARD_GQQ message name.
Definition ubx.hpp:516
static constexpr std::size_t UBX_MON_SPAN_V0_SIZE(const uint8_t *msg)
Definition ubx.hpp:1629
static constexpr bool UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCENABLED(const uint8_t timSyncReq)
Definition ubx.hpp:2908
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_UNKNOWN
Definition ubx.hpp:1405
static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_NOFIX
Definition ubx.hpp:2400
static constexpr const char * UBX_NMEA_PUBX_TIME_STRID
UBX-NMEA-PUBX_TIME message name.
Definition ubx.hpp:546
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_ALM
Definition ubx.hpp:2233
static constexpr bool UBX_NAV_PVT_V1_VALID_VALIDTIME(const uint8_t valid)
Definition ubx.hpp:2060
static constexpr uint8_t UBX_SIGID_QZSS_L1CA
QZSS L1 C/A.
Definition ubx.hpp:721
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_FIRSTBYTE
Definition ubx.hpp:1142
static constexpr uint8_t UBX_MGA_BDS_MSGID
UBX-MGA-BDS message ID.
Definition ubx.hpp:283
static constexpr uint8_t UBX_NAV_SLAS_MSGID
UBX-NAV-SLAS message ID.
Definition ubx.hpp:371
static constexpr const char * UBX_MON_STRID
UBX-MON class name.
Definition ubx.hpp:205
static constexpr uint8_t UBX_SEC_OSNMA_V3_VERSION
Definition ubx.hpp:2877
static constexpr const char * UBX_NAV2_TIMENAVIC_STRID
UBX-NAV2-TIMENAVIC message name.
Definition ubx.hpp:442
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS(const uint8_t sensStatus2)
Definition ubx.hpp:1139
static constexpr uint8_t UBX_RXM_CLSID
UBX-RXM class ID.
Definition ubx.hpp:210
static constexpr uint8_t UBX_RXM_RAWX_V1_CPSTDEV_CPSTD(const uint8_t cpStdev)
Definition ubx.hpp:2729
static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_UNKNOWN
Definition ubx.hpp:2836
static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_NAVIC
Definition ubx.hpp:2363
static constexpr const char * UBX_RTCM3_TYPE1006_STRID
UBX-RTCM3-TYPE1006 message name.
Definition ubx.hpp:558
const char * UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_STR(const uint16_t flags)
Definition ubx.hpp:1048
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC(const uint32_t generalAndTiming)
Definition ubx.hpp:2964
static constexpr const char * UBX_RTCM3_TYPE1077_STRID
UBX-RTCM3-TYPE1077 message name.
Definition ubx.hpp:576
static constexpr const char * UBX_NMEA_STANDARD_VTG_STRID
UBX-NMEA-STANDARD_VTG message name.
Definition ubx.hpp:534
static constexpr double UBX_RXM_RAWX_V1_PRSTD_SCALE(const double prStd)
Definition ubx.hpp:2728
static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME_FUTURE
Definition ubx.hpp:1210
static constexpr std::size_t UBX_MGA_INI_TIME_GNSS_V0_SIZE
Definition ubx.hpp:1288
static constexpr bool UBX_NAV_SAT_V1_FLAGS_ALMAVAIL(const uint32_t flags)
Definition ubx.hpp:2240
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_SYSTEMRESET
Boot type: system reset.
Definition ubx.hpp:1677
static constexpr uint8_t UBX_RTCM3_TYPE1006_MSGID
UBX-RTCM3-TYPE1006 message ID.
Definition ubx.hpp:557
static constexpr uint8_t UBX_NAV_CLSID
UBX-NAV class ID.
Definition ubx.hpp:206
static constexpr uint8_t UBX_RXM_RAWX_VERSION(const uint8_t *msg)
Definition ubx.hpp:2722
static constexpr double UBX_NAV_TIMETRUSTED_V1_DELTAMS_SCALE
Definition ubx.hpp:2372
static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_NONE
Definition ubx.hpp:1049
const char * UBX_SIGID_BDS_STR(const uint8_t sigId)
Definition ubx.hpp:720
static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYVAL(const uint32_t generalAndTiming)
Definition ubx.hpp:2974
const char * UBX_MON_HW3_V0_PINMASK_DIRECTION_STR(const uint16_t pinMask)
Definition ubx.hpp:1516
static constexpr std::size_t UBX_CFG_VALSET_V0_CFGDATA_MAX_SIZE
UBX-CFG-VALSET.cfgData maximum size.
Definition ubx.hpp:820
const char * UBX_SIGID_STR(const uint8_t gnssId, const uint8_t sigId)
Definition ubx.hpp:733
static constexpr double UBX_NAV_PVT_V1_VACC_SCALE
Definition ubx.hpp:2117
static constexpr uint8_t UBX_MON_SYS_V1_VERSION
Definition ubx.hpp:1664
static constexpr const char * UBX_MON_RF_STRID
UBX-MON-RF message name.
Definition ubx.hpp:314
static constexpr uint32_t UBX_CFG_CFG_V0_LOAD_ALL
Load all config.
Definition ubx.hpp:1007
static constexpr bool UBX_TIM_TM2_V0_FLAGS_NEWRISINGEDGE(const uint8_t flags)
Definition ubx.hpp:3054
static constexpr uint8_t UBX_RTCM3_TYPE1007_MSGID
UBX-RTCM3-TYPE1007 message ID.
Definition ubx.hpp:559
static constexpr uint8_t UBX_NAV_EOE_MSGID
UBX-NAV-EOE message ID.
Definition ubx.hpp:339
static constexpr const char * UBX_NAV_TIMENAVIC_STRID
UBX-NAV-TIMENAVIC message name.
Definition ubx.hpp:392
const char * UBX_SIGID_SBAS_STR(const uint8_t sigId)
Definition ubx.hpp:699
static constexpr uint8_t UBX_MON_HW_MSGID
UBX-MON-HW message ID.
Definition ubx.hpp:301
static constexpr uint8_t UBX_SIGID_GLO_L1OF
GLONASS L1 OF.
Definition ubx.hpp:728
static constexpr const char * UBX_NMEA_STANDARD_GNQ_STRID
UBX-NMEA-STANDARD_GNQ message name.
Definition ubx.hpp:510
static constexpr bool UBX_NAV_TIMEBDS_V0_VALID_LEAPSVALID(const uint8_t valid)
Definition ubx.hpp:2522
static constexpr uint8_t UBX_NMEA_STANDARD_GLQ_MSGID
UBX-NMEA-STANDARD_GLQ message ID.
Definition ubx.hpp:507
static constexpr double UBX_NAV_TIMEGPS_V0_FTOW_SCALE
Definition ubx.hpp:2456
static constexpr uint8_t UBX_CFG_PWR_MSGID
UBX-CFG-PWR message ID.
Definition ubx.hpp:233
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_OTHER3
Definition ubx.hpp:2238
static constexpr uint8_t UBX_NAV2_STATUS_MSGID
UBX-NAV2-STATUS message ID.
Definition ubx.hpp:425
static constexpr const char * UBX_UPD_SOS_STRID
UBX-UPD-SOS message name.
Definition ubx.hpp:494
static constexpr uint8_t UBX_RTCM3_TYPE1097_MSGID
UBX-RTCM3-TYPE1097 message ID.
Definition ubx.hpp:587
static constexpr bool UBX_NAV_HPPOSECEF_V0_FLAGS_INVALIDECEF(const uint8_t flags)
Definition ubx.hpp:1940
static constexpr std::size_t UBX_NAV_STATUS_V0_SIZE
Definition ubx.hpp:2397
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_OK
Definition ubx.hpp:1406
const char * UBX_SIGID_GAL_STR(const uint8_t sigId)
Definition ubx.hpp:709
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_UNNOWN
Definition ubx.hpp:2598
const char * UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_STR(const uint32_t flags)
Definition ubx.hpp:2230
static constexpr const char * UBX_NAV2_EOE_STRID
UBX-NAV2-EOE message name.
Definition ubx.hpp:408
static constexpr int UBX_RXM_RAWX_V1_GROUP1_FREQID_TO_SLOT(const uint8_t freqId)
Definition ubx.hpp:2738
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_AUTHSVS(const uint32_t generalAndTiming)
Definition ubx.hpp:2947
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_EPH
Ephemeris.
Definition ubx.hpp:951
static constexpr bool UBX_NAV_TIMEGPS_V0_VALID_WEEKVALID(const uint8_t valid)
Definition ubx.hpp:2459
static constexpr std::size_t UBX_MON_RF_V0_MIN_SIZE
Definition ubx.hpp:1568
static constexpr double UBX_MON_SPAN_BIN_CENT_FREQ(const uint32_t center, const uint32_t span, const int ix)
Definition ubx.hpp:1631
static constexpr uint32_t UBX_CFG_VALGET_V1_ALL_WILDCARD
UBX-CFG-VALGET.keys all wildcard.
Definition ubx.hpp:892
std::size_t UbxMonVerToVerStr(char *str, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Stringify UBX-MON-VER message (software version and module name).
static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_UNHEALTHY
Definition ubx.hpp:2306
static constexpr std::size_t UBX_RXM_SPARTN_V1_SIZE
Definition ubx.hpp:2833
static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_TIME
Definition ubx.hpp:2068
static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH(const uint16_t sigFlags)
Definition ubx.hpp:2302
static constexpr double UBX_NAV_TIMEBDS_V0_TACC_SCALE
Definition ubx.hpp:2519
const char * UBX_MON_RF_V0_ANTPOWER_STR(const uint8_t antPower)
Definition ubx.hpp:1586
std::size_t UbxRxmSfrbxInfo(char *info, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Stringify UBX-RXM-SFRBX, for debugging.
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_TRACKING
Definition ubx.hpp:2415
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NPK
Definition ubx.hpp:2893
static constexpr const char * UBX_NMEA_STANDARD_RLM_STRID
UBX-NMEA-STANDARD_RLM message name.
Definition ubx.hpp:526
static constexpr bool UBX_RXM_RTCM_V2_FLAGS_CRCFAILED(const uint8_t flags)
Definition ubx.hpp:2767
static constexpr uint8_t UBX_LOG_STR_MSGID
UBX-LOG-STR message ID.
Definition ubx.hpp:279
static constexpr uint8_t UBX_CFG_VALGET_VERSION(const uint8_t *msg)
Definition ubx.hpp:867
static constexpr uint8_t UBX_NAV_SAT_VERSION(const uint8_t *msg)
Definition ubx.hpp:2224
static constexpr uint8_t UBX_MON_HW2_MSGID
UBX-MON-HW2 message ID.
Definition ubx.hpp:303
static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_BEGIN
UBX-CFG-VALDEL.transaction value: transaction begin.
Definition ubx.hpp:921
static constexpr uint8_t UBX_ACK_CLSID
UBX-ACK class ID.
Definition ubx.hpp:192
static constexpr double UBX_NAV_RELPOSNED_V1_ACCHEADING_SCALE
Definition ubx.hpp:2175
static constexpr const char * UBX_RTCM3_TYPE1010_STRID
UBX-RTCM3-TYPE1010 message name.
Definition ubx.hpp:564
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_90_TO_120_SEC
Definition ubx.hpp:2103
static constexpr bool UBX_NAV_TIMEGAL_V0_VALID_GALTOWVALID(const uint8_t valid)
Definition ubx.hpp:2489
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_SBAS
Definition ubx.hpp:2316
const char * UBX_SIGID_GLO_STR(const uint8_t sigId)
Definition ubx.hpp:730
static constexpr uint8_t UBX_NAV2_TIMENAVIC_MSGID
UBX-NAV2-TIMENAVIC message ID.
Definition ubx.hpp:441
static constexpr uint8_t UBX_RXM_SPARTN_VERSION(const uint8_t *msg)
Definition ubx.hpp:2831
static constexpr const char * UBX_NMEA_STANDARD_GPQ_STRID
UBX-NMEA-STANDARD_GPQ message name.
Definition ubx.hpp:514
static constexpr std::size_t UBX_ESF_MEAS_V0_MIN_SIZE
Definition ubx.hpp:1046
static constexpr uint8_t UBX_UPD_POS_MSGID
UBX-UPD-POS message ID.
Definition ubx.hpp:489
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_OFF
Definition ubx.hpp:1115
static constexpr std::size_t UBX_CFG_VALGET_V0_KEYS_MAX_SIZE
UBX-CFG-VALGET.keys maximum size.
Definition ubx.hpp:877
static constexpr std::size_t UBX_NAV_PVT_V1_SIZE
Definition ubx.hpp:2057
static constexpr double UBX_TIM_TP_V0_TOWSUBMS_SCALE
perl -e 'printf "%a", 2**-32 * 1e-3'
Definition ubx.hpp:3083
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PERIPHPIO(const uint16_t pinMask)
Definition ubx.hpp:1501
static constexpr double UBX_TIM_TM2_V0_TOW_SCALE
Definition ubx.hpp:3055
static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSLENGTH_SCALE
Definition ubx.hpp:2169
static constexpr uint8_t UBX_NMEA_STANDARD_GNQ_MSGID
UBX-NMEA-STANDARD_GNQ message ID.
Definition ubx.hpp:509
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_RTCM3_SSR
Definition ubx.hpp:2320
static constexpr bool UBX_SEC_OSNMA_V3_NMAHEADER_HEADERAUTHSTATUS(const uint8_t nmaHeader)
Definition ubx.hpp:2879
static constexpr const char * UBX_MON_COMMS_STRID
UBX-MON-COMMS message name.
Definition ubx.hpp:298
static constexpr double UBX_NAV_VELECEF_V0_ITOW_SCALE
Definition ubx.hpp:2673
static constexpr uint8_t UBX_MON_COMMS_MSGID
UBX-MON-COMMS message ID.
Definition ubx.hpp:297
static constexpr const char * UBX_NAV_SVIN_STRID
UBX-NAV-SVIN message name.
Definition ubx.hpp:378
static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_VERSION
Definition ubx.hpp:1205
static constexpr bool UBX_NAV_PVT_V1_VALID_FULLYRESOLVED(const uint8_t valid)
Definition ubx.hpp:2061
static constexpr uint8_t UBX_TIM_TP_MSGID
UBX-TIM-TP message ID.
Definition ubx.hpp:483
static constexpr std::size_t UBX_CFG_VALSET_V1_MAX_SIZE
Definition ubx.hpp:836
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_NAVIC
Definition ubx.hpp:3102
static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM_ACTIVE
Definition ubx.hpp:3094
static constexpr uint8_t UBX_RTCM3_CLSID
UBX-RTCM3 class ID.
Definition ubx.hpp:220
static constexpr std::size_t UBX_NAV_SAT_V1_MIN_SIZE
Definition ubx.hpp:2226
static constexpr const char * UBX_RXM_MEASX_STRID
UBX-RXM-MEASX message name.
Definition ubx.hpp:452
static constexpr uint8_t UBX_RTCM3_TYPE1005_MSGID
UBX-RTCM3-TYPE1005 message ID.
Definition ubx.hpp:555
static constexpr uint8_t UBX_RXM_SFRBX_VERSION(const uint8_t *msg)
Definition ubx.hpp:2806
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE(const uint8_t flags)
Definition ubx.hpp:3047
static constexpr uint8_t UBX_ESF_INS_MSGID
UBX-ESF-INS message ID.
Definition ubx.hpp:245
static constexpr uint8_t UBX_SIGID_GPS_L2CL
GPS L2 CL.
Definition ubx.hpp:693
static constexpr const char * UBX_RTCM3_TYPE1001_STRID
UBX-RTCM3-TYPE1001 message name.
Definition ubx.hpp:548
static constexpr uint8_t UBX_MON_COMMS_VERSION(const uint8_t *msg)
Definition ubx.hpp:1343
static constexpr uint8_t UBX_RXM_SPARTN_MSGID
UBX-RXM-SPARTN message ID.
Definition ubx.hpp:467
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_AUTHENTICATED
Definition ubx.hpp:2938
static constexpr const char * UBX_NMEA_STANDARD_GBQ_STRID
UBX-NMEA-STANDARD_GBQ message name.
Definition ubx.hpp:500
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_INITALIZING
Definition ubx.hpp:1110
static constexpr const char * UBX_NAV2_VELNED_STRID
UBX-NAV2-VELNED message name.
Definition ubx.hpp:448
static constexpr std::size_t UBX_MON_SPAN_V0_MIN_SIZE
Definition ubx.hpp:1628
static constexpr uint8_t UBX_TIM_CLSID
UBX-TIM class ID.
Definition ubx.hpp:214
static constexpr const char * UBX_NMEA_PUBX_CONFIG_STRID
UBX-NMEA-PUBX_CONFIG message name.
Definition ubx.hpp:538
std::array< UbxMsgInfo, 187 > UbxMessagesInfo
UBX messages lookup table.
Definition ubx.hpp:616
static constexpr const char * UBX_NMEA_PUBX_SVSTATUS_STRID
UBX-NMEA-PUBX_SVSTATUS message name.
Definition ubx.hpp:544
const char * UBX_MON_COMMS_V0_PROTIDS_STR(const uint8_t protId)
Definition ubx.hpp:1365
static constexpr bool UBX_MON_HW3_V0_FLAGS_SAFEBOOT(const uint8_t flags)
Definition ubx.hpp:1499
static constexpr uint8_t UBX_FIRST_SBAS
S120 ("Sxx" in RINEX).
Definition ubx.hpp:677
static constexpr bool UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_FROMNVS(const uint32_t dsmAuthentication)
Definition ubx.hpp:2934
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_GLO
Definition ubx.hpp:3099
static constexpr uint8_t UBX_SIGID_GPS_L5Q
GPS L5 Q.
Definition ubx.hpp:696
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS_NOT_VERIFIED
Definition ubx.hpp:2111
static constexpr const char * UBX_RTCM3_TYPE1084_STRID
UBX-RTCM3-TYPE1084 message name.
Definition ubx.hpp:578
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_NODATA
Definition ubx.hpp:1141
static constexpr uint8_t UBX_NAV_COV_MSGID
UBX-NAV-COV message ID.
Definition ubx.hpp:333
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_FAILED
Definition ubx.hpp:2939
static constexpr const char * UBX_NAV2_TIMEQZSS_STRID
UBX-NAV2-TIMEQZSS message name.
Definition ubx.hpp:440
static constexpr uint8_t UBX_NAV_POSECEF_MSGID
UBX-NAV-POSECEF message ID.
Definition ubx.hpp:353
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_USNO
Definition ubx.hpp:2592
static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_DRONLY
Definition ubx.hpp:2064
static constexpr bool UBX_MGA_INI_TIME_GNSS_V0_BITFIELD0_TRUSTEDSOURCE(const uint8_t bitfield0)
Definition ubx.hpp:1296
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_HWBACKUP
Boot type: hardware backup.
Definition ubx.hpp:1670
static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_RTCM3
Definition ubx.hpp:1362
static constexpr const char * UBX_RTCM3_TYPE1009_STRID
UBX-RTCM3-TYPE1009 message name.
Definition ubx.hpp:562
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS(const uint8_t initStatus1)
Definition ubx.hpp:1107
static constexpr uint8_t UBX_MON_RF_V0_ANTPOWER_DONTKNOW
Definition ubx.hpp:1585
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE(const uint8_t flags2)
Definition ubx.hpp:2418
static constexpr uint8_t UBX_SIGID_GAL_E6A
Galileo E6 A.
Definition ubx.hpp:708
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_HASHFUNCTION(const uint32_t dsmAuthentication)
Definition ubx.hpp:2928
static constexpr uint8_t UBX_MGA_GPS_MSGID
UBX-MGA-GPS message ID.
Definition ubx.hpp:291
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_NONE
Definition ubx.hpp:2918
static constexpr double UBX_NAV_HPPOSLLH_V0_LL_HP_SCALE
Definition ubx.hpp:1979
static constexpr bool UBX_MGA_INI_TIME_UTC_V0_REF_LAST(const uint8_t ref)
Definition ubx.hpp:1253
static constexpr const char * UBX_NMEA_STANDARD_RMC_STRID
UBX-NMEA-STANDARD_RMC message name.
Definition ubx.hpp:528
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_RTCM3_OSR
Definition ubx.hpp:2319
static constexpr const char * UBX_NAV2_PVT_STRID
UBX-NAV2-PVT message name.
Definition ubx.hpp:416
static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM(const uint8_t flags)
Definition ubx.hpp:3090
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_PR_SMOOTHED(const uint16_t sigFlags)
Definition ubx.hpp:2307
static constexpr uint8_t UBX_NAV_ODO_MSGID
UBX-NAV-ODO message ID.
Definition ubx.hpp:347
static constexpr uint8_t UBX_MON_COMMS_V0_VERSION
Definition ubx.hpp:1344
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_POT
Definition ubx.hpp:2078
static constexpr double UBX_NAV_HPPOSECEF_V0_ECEF_XYZ_SCALE
Definition ubx.hpp:1937
static constexpr const char * UBX_LOG_FINDTIME_STRID
UBX-LOG-FINDTIME message name.
Definition ubx.hpp:268
static constexpr std::size_t UBX_MON_COMMS_V0_MIN_SIZE
Definition ubx.hpp:1345
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE(const uint8_t flags)
Definition ubx.hpp:2072
static constexpr uint16_t UBX_MON_RF_V0_AGCCNT_MAX
Definition ubx.hpp:1588
static constexpr uint8_t UBX_NMEA_PUBX_TIME_MSGID
UBX-NMEA-PUBX_TIME message ID.
Definition ubx.hpp:545
static constexpr uint8_t UBX_RTCM3_TYPE1003_MSGID
UBX-RTCM3-TYPE1003 message ID.
Definition ubx.hpp:551
static constexpr uint8_t UBX_NAV_STATUS_MSGID
UBX-NAV-STATUS message ID.
Definition ubx.hpp:375
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_0_TO_1_SEC
Definition ubx.hpp:2093
static constexpr const char * UBX_CFG_STRID
UBX-CFG class name.
Definition ubx.hpp:195
static constexpr const char * UBX_CFG_VALSET_STRID
UBX-CFG-VALSET message name.
Definition ubx.hpp:242
static constexpr const char * UBX_MGA_GAL_OSNMA_PUBKEY_STRID
Definition ubx.hpp:1173
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_CRITICAL
Definition ubx.hpp:1408
const char * UBX_SIGID_NAVIC_STR(const uint8_t sigId)
Definition ubx.hpp:732
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC(const uint32_t generalAndTiming)
Definition ubx.hpp:2958
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_BDS
Definition ubx.hpp:2317
static constexpr bool UBX_NAV_PVT_V1_VALID_VALIDDATE(const uint8_t valid)
Definition ubx.hpp:2059
static constexpr const char * UBX_MON_RXR_STRID
UBX-MON-RXR message name.
Definition ubx.hpp:318
static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NUMBERSVS(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2898
static constexpr const char * UBX_NAV_VELECEF_STRID
UBX-NAV-VELECEF message name.
Definition ubx.hpp:398
static constexpr bool UBX_MON_HW3_V0_PINMASK_PIOPULLHIGH(const uint16_t pinMask)
Definition ubx.hpp:1522
static constexpr uint32_t UBX_CFG_CFG_V0_SAVE_ALL
Save all config.
Definition ubx.hpp:1005
static constexpr const char * UBX_NAV2_STATUS_STRID
UBX-NAV2-STATUS message name.
Definition ubx.hpp:426
static constexpr double UBX_NAV_TIMEGLO_V0_FTOD_SCALE
Definition ubx.hpp:2549
static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT(const uint8_t txErrors)
Definition ubx.hpp:1350
static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_GPS
Definition ubx.hpp:2360
static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_OPEN
Definition ubx.hpp:1414
static constexpr const char * UBX_MON_HW2_STRID
UBX-MON-HW2 message name.
Definition ubx.hpp:304
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_45_TO_60_SEC
Definition ubx.hpp:2101
static constexpr uint8_t UBX_NAV2_TIMEGPS_MSGID
UBX-NAV2-TIMEGPS message ID.
Definition ubx.hpp:435
static constexpr uint8_t UBX_CFG_VALGET_V1_VERSION
UBX-CFG-VALGET.version value.
Definition ubx.hpp:882
static constexpr const char * UBX_TIM_SVIN_STRID
UBX-TIM-SVIN message name.
Definition ubx.hpp:480
static constexpr std::size_t UBX_FRAME_SIZE
Size (in bytes) of UBX frame.
Definition ubx.hpp:62
static constexpr uint8_t UBX_UPD_SOS_MSGID
UBX-UPD-SOS message ID.
Definition ubx.hpp:493
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_NONE
Definition ubx.hpp:2315
static constexpr uint32_t UBX_CFG_CFG_V0_SAVE_NONE
Save no config.
Definition ubx.hpp:1004
static constexpr double UBX_NAV_TIMEGAL_V0_TACC_SCALE
Definition ubx.hpp:2488
static constexpr const char * UBX_MON_MSGPP_STRID
UBX-MON-MSGPP message name.
Definition ubx.hpp:310
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_CONFIG
Definition ubx.hpp:2638
const char * UBX_RXM_RTCM_V2_FLAGS_MSGUSED_STR(const uint8_t flags)
Definition ubx.hpp:2769
static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_3D
Definition ubx.hpp:2066
static constexpr uint8_t UBX_NMEA_STANDARD_GGA_MSGID
UBX-NMEA-STANDARD_GGA message ID.
Definition ubx.hpp:503
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_B
Definition ubx.hpp:1508
static constexpr double UBX_NAV_TIMEBDS_V0_FSOW_SCALE
Definition ubx.hpp:2518
static constexpr std::size_t UBX_CFG_VALSET_V0_MAX_KV
UBX-CFG-VALSET.cfgData: maximum number of key-value pairs.
Definition ubx.hpp:819
static constexpr std::size_t UBX_NAV_VELECEF_V0_SIZE
Definition ubx.hpp:2672
static constexpr uint8_t UBX_LOG_CREATE_MSGID
UBX-LOG-CREATE message ID.
Definition ubx.hpp:263
static constexpr std::size_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_SIZE
Definition ubx.hpp:1175
static constexpr std::size_t UBX_RXM_RAWX_V1_MIN_SIZE
Definition ubx.hpp:2724
static constexpr uint8_t UBX_FIRST_GAL
E01.
Definition ubx.hpp:678
static constexpr uint8_t UBX_NAV2_VELECEF_MSGID
UBX-NAV2-VELECEF message ID.
Definition ubx.hpp:445
static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_I2C
Definition ubx.hpp:1353
static constexpr std::size_t UBX_NAV_POSECEF_V0_SIZE
Definition ubx.hpp:2004
static constexpr uint8_t UBX_ACK_ACK_MSGID
UBX-ACK-ACK message ID.
Definition ubx.hpp:227
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS(const uint8_t initStatus2)
Definition ubx.hpp:1119
static constexpr std::size_t UBX_NAV_EOE_V0_SIZE
Definition ubx.hpp:1903
static constexpr uint8_t UBX_NAV_TIMENAVIC_MSGID
UBX-NAV-TIMENAVIC message ID.
Definition ubx.hpp:391
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE(const uint8_t flags)
Definition ubx.hpp:1403
const char * UBX_CFG_VALSET_V1_TRANSACTION_STR(const uint8_t transaction)
Definition ubx.hpp:832
static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_RAW
probably.. see UBX-MON-MSGPP
Definition ubx.hpp:1360
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_TEST
Definition ubx.hpp:2883
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CHAININFORCE(const uint8_t nmaHeader)
Definition ubx.hpp:2886
static constexpr const char * UBX_NAV_ORB_STRID
UBX-NAV-ORB message name.
Definition ubx.hpp:350
static constexpr uint8_t UBX_MON_GNSS_MSGID
UBX-MON-GNSS message ID.
Definition ubx.hpp:299
static constexpr const char * UBX_NAV_POSECEF_STRID
UBX-NAV-POSECEF message name.
Definition ubx.hpp:354
static constexpr const char * UBX_NAV_TIMEGPS_STRID
UBX-NAV-TIMEGPS message name.
Definition ubx.hpp:386
static constexpr uint8_t UBX_NUM_NAVIC
N01-N14 ("Ixx" in RINEX).
Definition ubx.hpp:675
static constexpr uint8_t UBX_GNSSID_NAVIC
NavIC.
Definition ubx.hpp:659
static constexpr const char * UBX_LOG_ERASE_STRID
UBX-LOG-ERASE message name.
Definition ubx.hpp:266
static constexpr uint8_t UBX_NAV_TIMEGAL_MSGID
UBX-NAV-TIMEGAL message ID.
Definition ubx.hpp:381
static constexpr const char * UBX_MON_SYS_STRID
UBX-MON-SYS message name.
Definition ubx.hpp:322
static constexpr std::size_t UBX_MON_RF_V0_SIZE(const uint8_t *msg)
Definition ubx.hpp:1569
static constexpr std::size_t UBX_MON_VER_V0_MIN_SIZE
Definition ubx.hpp:1730
const char * UBX_NAV_PVT_V1_FLAGS_PSMSTATE_STR(const uint8_t flags)
Definition ubx.hpp:2073
static constexpr bool UBX_NAV_TIMEGAL_V0_VALID_GALWNOVALID(const uint8_t valid)
Definition ubx.hpp:2490
static constexpr bool UBX_TIM_TM2_V0_FLAGS_UTCACAVAIL(const uint8_t flags)
Definition ubx.hpp:3052
static constexpr const char * UBX_RTCM3_STRID
UBX-RTCM3 class name.
Definition ubx.hpp:221
static constexpr bool UBX_NAV_TIMEGLO_V0_VALID_DATEVALID(const uint8_t valid)
Definition ubx.hpp:2552
static constexpr uint8_t UBX_MON_TEMP_VERSION(const uint8_t *msg)
Definition ubx.hpp:1701
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_UNKNOWNPUBKEY
Definition ubx.hpp:2924
static constexpr const char * UBX_SEC_SIG_STRID
UBX-SEC-SIG message name.
Definition ubx.hpp:474
static constexpr const char * UBX_UPD_SAFEBOOT_STRID
UBX-UPD-SAFEBOOT message name.
Definition ubx.hpp:492
static constexpr std::size_t UBX_NAV_RELPOSNED_V1_SIZE
Definition ubx.hpp:2166
static constexpr int8_t UBX_MGA_INI_TIME_UTC_V0_LEAPSECS_UNKNOWN
Definition ubx.hpp:1254
static constexpr uint8_t UBX_SIGID_BDS_B1ID2
BeiDou B1I D2.
Definition ubx.hpp:711
static constexpr std::size_t UBX_ESF_STATUS_V2_SIZE(const uint8_t *msg)
Definition ubx.hpp:1099
static constexpr const char * UBX_NAV2_CLOCK_STRID
UBX-NAV2-CLOCK message name.
Definition ubx.hpp:402
static constexpr const char * UBX_MGA_GAL_OSNMA_MERKLE_STRID
Definition ubx.hpp:1204
static constexpr const char * UBX_MGA_INI_STRID
UBX-MGA-INI message name.
Definition ubx.hpp:294
static constexpr const char * UBX_SEC_OSNMA_STRID
UBX-SEC-OSNMA message name.
Definition ubx.hpp:472
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_5_TO_10_SEC
Definition ubx.hpp:2096
static constexpr std::size_t UBX_NAV_TIMEGPS_V0_SIZE
Definition ubx.hpp:2454
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_VALIDTOW(const uint8_t valid)
Definition ubx.hpp:2584
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYID(const uint32_t generalAndTiming)
Definition ubx.hpp:2977
static constexpr uint8_t UBX_NAV_ATT_MSGID
UBX-NAV-ATT message ID.
Definition ubx.hpp:329
static constexpr uint8_t UBX_MON_MSGPP_MSGID
UBX-MON-MSGPP message ID.
Definition ubx.hpp:309
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_GNSSFIXOK(const uint32_t flags)
Definition ubx.hpp:2176
static std::size_t UBX_ESF_MEAS_V0_SIZE(const uint8_t *msg)
Definition ubx.hpp:1057
static constexpr uint8_t UBX_GNSSID_NONE
None.
Definition ubx.hpp:652
static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_SUBHALFCYC(const uint8_t trkStat)
Definition ubx.hpp:2737
static constexpr bool UBX_TIM_TP_V0_FLAGS_TPNOTLOCKED(const uint8_t flags)
Definition ubx.hpp:3096
static constexpr uint8_t UBX_NAV_CLOCK_MSGID
UBX-NAV-CLOCK message ID.
Definition ubx.hpp:331
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_SAFEBOOT
Definition ubx.hpp:1402
static constexpr bool UBX_NAV_STATUS_V0_FLAGS_DIFFSOLN(const uint8_t flags)
Definition ubx.hpp:2407
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_GPSGLO
Definition ubx.hpp:2633
static constexpr uint8_t UBX_CFG_VALGET_V0_VERSION
UBX-CFG-VALGET.version value.
Definition ubx.hpp:869
static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_3D_DR
Definition ubx.hpp:2404
static constexpr uint8_t UBX_NAV_SIG_VERSION(const uint8_t *msg)
Definition ubx.hpp:2282
static constexpr double UBX_NAV_PVT_V1_VELNED_SCALE
Definition ubx.hpp:2118
static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_SBAS
Definition ubx.hpp:2298
static constexpr uint8_t UBX_SIGID_QZSS_L5I
QZSS L5 I.
Definition ubx.hpp:725
static constexpr uint8_t UBX_NMEA_PUBX_POSITION_MSGID
UBX-NMEA-PUBX_POSITION message ID.
Definition ubx.hpp:539
static constexpr uint8_t UBX_RTCM3_TYPE4072_1_MSGID
UBX-RTCM3-TYPE4072_1 message ID.
Definition ubx.hpp:599
static constexpr std::size_t UBX_CFG_VALGET_V1_CFGDATA_MAX_SIZE
UBX-CFG-VALGET.keys maximum size.
Definition ubx.hpp:890
static constexpr const char * UBX_MGA_DBD_STRID
UBX-MGA-DBD message name.
Definition ubx.hpp:286
static constexpr bool UBX_NAV_TIMEGAL_V0_VALID_LEAPSVALID(const uint8_t valid)
Definition ubx.hpp:2491
static constexpr uint8_t UBX_RXM_RTCM_V2_FLAGS_MSGUSED_USED
Definition ubx.hpp:2772
static constexpr bool UBX_NAV_PVT_V1_FLAGS2_CONFDATE(const uint8_t flags2)
Definition ubx.hpp:2087
static constexpr const char * UBX_RTCM3_TYPE4072_0_STRID
UBX-RTCM3-TYPE4072_0 message name.
Definition ubx.hpp:598
const char * UBX_NAV_SIG_V0_CORRSOURCE_STR(const uint8_t corrSource)
Definition ubx.hpp:2323
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS_VERIFIED
Definition ubx.hpp:2112
static constexpr double UBX_TIM_TP_V0_TOWMS_SCALE
Definition ubx.hpp:3082
static constexpr const char * UBX_NAV2_DOP_STRID
UBX-NAV2-DOP message name.
Definition ubx.hpp:406
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_CR_USED(const uint16_t sigFlags)
Definition ubx.hpp:2309
static constexpr const char * UBX_INF_TEST_STRID
UBX-INF-TEST message name.
Definition ubx.hpp:260
static constexpr uint8_t UBX_RTCM3_TYPE1124_MSGID
UBX-RTCM3-TYPE1124 message ID.
Definition ubx.hpp:589
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_NOT_AVAILABLE
Definition ubx.hpp:2092
static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_RAIM_NA
Definition ubx.hpp:3092
const char * UBX_TIM_TM2_V0_FLAGS_MODE_STR(const uint8_t flags)
Definition ubx.hpp:3039
static constexpr double UBX_NAV_CLOCK_V0_CLKD_SCALE
Definition ubx.hpp:1786
static constexpr double UBX_NAV_RELPOSNED_V1_ACCLENGTH_SCALE
Definition ubx.hpp:2174
bool UbxMakeMessage(std::vector< uint8_t > &msg, const uint8_t cls_id, const uint8_t msg_id, const std::vector< uint8_t > &payload)
Make a UBX message.
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_DIRECTION(const uint16_t pinMask)
Definition ubx.hpp:1515
static constexpr uint8_t UBX_SIGID_GAL_E5BQ
Galileo E5 bQ.
Definition ubx.hpp:705
static constexpr const char * UBX_SEC_STRID
UBX-SEC class name.
Definition ubx.hpp:213
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS1_TYPE(const uint8_t sensStatus1)
same enum as UBX-ESF-MEAS.dataType it seems //!<
Definition ubx.hpp:1130
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_MACLOOKUPTABLE(const uint32_t dsmAuthentication)
Definition ubx.hpp:2931
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_C
Definition ubx.hpp:1509
static constexpr const char * UBX_UPD_POS_STRID
UBX-UPD-POS message name.
Definition ubx.hpp:490
static constexpr uint8_t UBX_RXM_PMP_MSGID
UBX-RXM-PMP message ID.
Definition ubx.hpp:453
static constexpr std::size_t UBX_NAV_TIMEGAL_V0_SIZE
Definition ubx.hpp:2485
static constexpr bool UBX_RXM_RAWX_V1_RECSTAT_LEAPSEC(const uint8_t recStat)
Definition ubx.hpp:2725
static constexpr double UBX_NAV_POSECEF_V0_ECEF_XYZ_SCALE
Definition ubx.hpp:2005
static constexpr uint32_t UBX_CFG_CFG_V0_LOAD_NONE
Load no config.
Definition ubx.hpp:1006
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_INITIALIZED2
Definition ubx.hpp:1118
static constexpr uint8_t UBX_SIGID_GPS_L5I
GPS L5 I.
Definition ubx.hpp:695
static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_TYPE
Definition ubx.hpp:1172
static constexpr const char * UBX_INF_ERROR_STRID
UBX-INF-ERROR message name.
Definition ubx.hpp:256
static constexpr const char * UBX_INF_WARNING_STRID
UBX-INF-WARNING message name.
Definition ubx.hpp:262
static constexpr double UBX_NAV_VELECEF_V0_ECEF_XYZ_SCALE
Definition ubx.hpp:2674
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_PKR
Definition ubx.hpp:2920
static constexpr std::size_t UBX_CFG_VALSET_V1_MAX_KV
UBX-CFG-VALSET.cfgData: maximum number of key-value pairs.
Definition ubx.hpp:834
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD(const uint8_t valid)
Definition ubx.hpp:2588
static constexpr const char * UBX_NAV_PVT_STRID
UBX-NAV-PVT message name.
Definition ubx.hpp:360
static constexpr const char * UBX_NAV_TIMELS_STRID
UBX-NAV-TIMELS message name.
Definition ubx.hpp:388
static constexpr double UBX_NAV_COV_V0_ITOW_SCALE
Definition ubx.hpp:1827
const char * UBX_NAV_PVT_V1_FLAGS3_AUTHTIME_STR(const uint16_t flags3)
Definition ubx.hpp:2106
static constexpr double UBX_NAV_HPPOSLLH_V0_H_SCALE
Definition ubx.hpp:1978
static constexpr uint8_t UBX_NAV_TIMEGPS_MSGID
UBX-NAV-TIMEGPS message ID.
Definition ubx.hpp:385
static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_NA
Definition ubx.hpp:1352
static constexpr const char * UBX_NMEA_STANDARD_GNS_STRID
UBX-NMEA-STANDARD_GNS message name.
Definition ubx.hpp:512
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_3_TO_5_SEC
Definition ubx.hpp:2095
static constexpr bool UBX_NAV_SAT_V1_FLAGS_ANOAVAIL(const uint32_t flags)
Definition ubx.hpp:2241
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_CR_CORR_USED(const uint16_t sigFlags)
Definition ubx.hpp:2312
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_ACQUIRED
Definition ubx.hpp:2289
static constexpr double UBX_NAV_TIMETRUSTED_V1_INITOW_SCALE
Definition ubx.hpp:2368
static constexpr const char * UBX_NMEA_STANDARD_TXT_STRID
UBX-NMEA-STANDARD_TXT message name.
Definition ubx.hpp:530
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_AOP
AssistNow Autonomous.
Definition ubx.hpp:960
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_GPS
Definition ubx.hpp:2642
static constexpr bool UBX_NAV_TIMELS_V0_VALID_CURRLSVALID(const uint8_t valid)
Definition ubx.hpp:2648
static constexpr uint8_t UBX_CFG_VALSET_MSGID
UBX-CFG-VALSET message ID.
Definition ubx.hpp:241
static constexpr std::size_t UBX_CFG_VALDEL_V1_MAX_SIZE
Definition ubx.hpp:928
const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_STR(const uint32_t generalAndTiming)
Definition ubx.hpp:2959
static constexpr uint8_t UBX_SIGID_GPS_L2CM
GPS L2 CM.
Definition ubx.hpp:694
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_NPLI
Definition ubx.hpp:3115
const char * UBX_NAV_PVT_V1_FIXTYPE_STR(const uint8_t fixType)
Definition ubx.hpp:2069
static constexpr uint16_t UBX_MON_HW_V0_NOISEPERMS_MAX
This seems to be what u-center uses..
Definition ubx.hpp:1420
static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_GAL
Definition ubx.hpp:2361
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_FACTORY
Definition ubx.hpp:2966
const UbxClassesInfo & UbxGetClassesInfo()
Get UBX classes lookup table.
static constexpr uint8_t UBX_NMEA_STANDARD_GLL_MSGID
UBX-NMEA-STANDARD_GLL message ID.
Definition ubx.hpp:505
static constexpr double UBX_NAV_HPPOSECEF_V0_ECEF_XYZ_HP_SCALE
Definition ubx.hpp:1938
const char * UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_STR(const uint8_t txErrors)
Definition ubx.hpp:1351
static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_DRONLY
Definition ubx.hpp:2401
static constexpr uint8_t UBX_MON_RXR_MSGID
UBX-MON-RXR message ID.
Definition ubx.hpp:317
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_RUN_ARMED
Definition ubx.hpp:3044
static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_OTP
Definition ubx.hpp:1452
static constexpr uint8_t UBX_NAV2_CLSID
UBX-NAV2 class ID.
Definition ubx.hpp:208
static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_BADTTAG
Definition ubx.hpp:1146
static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE(const uint8_t flags)
Definition ubx.hpp:1571
static constexpr const char * UBX_NAV_TIMEQZSS_STRID
UBX-NAV-TIMEQZSS message name.
Definition ubx.hpp:390
constexpr uint8_t UbxClsId(const uint8_t *msg)
Get class ID from message.
Definition ubx.hpp:77
static constexpr uint8_t UBX_NAV2_SLAS_MSGID
UBX-NAV2-SLAS message ID.
Definition ubx.hpp:423
static constexpr double UBX_NAV_RELPOSNED_V1_RELPOSN_E_D_SCALE
Definition ubx.hpp:2168
static constexpr const char * UBX_RTCM3_TYPE1127_STRID
UBX-RTCM3-TYPE1127 message name.
Definition ubx.hpp:594
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS(const uint8_t refInfo)
Definition ubx.hpp:3097
static constexpr const char * UBX_ACK_NAK_STRID
UBX-ACK-NAK message name.
Definition ubx.hpp:230
static constexpr std::size_t UBX_CFG_VALGET_V1_MAX_KV
UBX-CFG-VALGET.cfgData maximum number of keys.
Definition ubx.hpp:889
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_A
Definition ubx.hpp:1507
static constexpr uint8_t UBX_CFG_VALSET_VERSION(const uint8_t *msg)
Definition ubx.hpp:811
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN_NO
Definition ubx.hpp:2083
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_AUTHTIME_AUTHENTICATED
Definition ubx.hpp:2108
static constexpr const char * UBX_MGA_ACK_STRID
UBX-MGA-ACK message name.
Definition ubx.hpp:282
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS(const uint8_t nmaHeader)
Definition ubx.hpp:2880
static constexpr const char * UBX_NAV2_TIMEGLO_STRID
UBX-NAV2-TIMEGLO message name.
Definition ubx.hpp:434
static constexpr uint8_t UBX_CFG_CFG_V0_DEVICE_BBR
Layer BBR.
Definition ubx.hpp:1008
static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYID(const uint8_t bitfield0)
Definition ubx.hpp:1176
bool UbxGetMessageName(char *name, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Get UBX message name.
static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_TYPE
Definition ubx.hpp:1285
static constexpr bool UBX_NAV_TIMEGLO_V0_VALID_TODVALID(const uint8_t valid)
Definition ubx.hpp:2551
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_15_TO_20_SEC
Definition ubx.hpp:2098
static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME(const uint8_t bitfield0)
Definition ubx.hpp:1207
static constexpr std::size_t UBX_NAV_DOP_V0_SIZE
Definition ubx.hpp:1853
static constexpr uint8_t UBX_NMEA_PUBX_SVSTATUS_MSGID
UBX-NMEA-PUBX_SVSTATUS message ID.
Definition ubx.hpp:543
static constexpr const char * UBX_RTCM3_TYPE1002_STRID
UBX-RTCM3-TYPE1002 message name.
Definition ubx.hpp:550
static constexpr double UBX_NAV_STATUS_V0_MSSS_SCALE
Definition ubx.hpp:2430
const char * UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_STR(const uint8_t ref)
Definition ubx.hpp:1248
bool UbxGetMessageInfo(char *info, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Get UBX message info.
static constexpr uint8_t UBX_CFG_CFG_MSGID
UBX-CFG-CFG message ID.
Definition ubx.hpp:231
static constexpr uint8_t UBX_SIGID_NONE
None.
Definition ubx.hpp:691
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_PSMSTATE_ENABLED
Definition ubx.hpp:2075
static constexpr bool UBX_TIM_TP_V0_FLAGS_UTC(const uint8_t flags)
Definition ubx.hpp:3089
static constexpr bool UBX_TIM_TM2_V0_FLAGS_NEWFALLINGEDGE(const uint8_t flags)
Definition ubx.hpp:3046
static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_CONTINUE
UBX-CFG-VALDEL.transaction value: transaction continue.
Definition ubx.hpp:922
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_GEQ_120_SEC
Definition ubx.hpp:2104
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_BIPM
Definition ubx.hpp:2593
static constexpr uint8_t UBX_SIGID_NAVIC_L5A
NavIC L5 A.
Definition ubx.hpp:731
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_KROOTFAILED
Definition ubx.hpp:2922
static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_EXTINT1
Definition ubx.hpp:1251
static constexpr uint8_t UBX_NAV2_SBAS_MSGID
UBX-NAV2-SBAS message ID.
Definition ubx.hpp:419
static constexpr const char * UBX_NAV2_TIMEGPS_STRID
UBX-NAV2-TIMEGPS message name.
Definition ubx.hpp:436
static constexpr uint8_t UBX_RTCM3_TYPE1084_MSGID
UBX-RTCM3-TYPE1084 message ID.
Definition ubx.hpp:577
static constexpr double UBX_NAV_TIMEGLO_V0_TACC_SCALE
Definition ubx.hpp:2550
static constexpr const char * UBX_INF_STRID
UBX-INF class name.
Definition ubx.hpp:199
static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_BEGIN
UBX-CFG-VALSET.transaction value: transaction begin.
Definition ubx.hpp:829
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_BDS
Definition ubx.hpp:3100
static constexpr double UBX_NAV_PVT_V1_HEIGHT_SCALE
Definition ubx.hpp:2115
static constexpr uint8_t UBX_NUM_GAL
E01-E36.
Definition ubx.hpp:671
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_UNUSED
Definition ubx.hpp:2290
static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_HW_CONTROLLED
Controlled hardware reset.
Definition ubx.hpp:967
static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN(const uint32_t flags)
Definition ubx.hpp:2179
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_OFF
Definition ubx.hpp:1109
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_NVS
Definition ubx.hpp:2968
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_RUN_STOPPED
Definition ubx.hpp:3045
static constexpr uint32_t UBX_CFG_CFG_V0_CLEAR_NONE
Clear no config.
Definition ubx.hpp:1002
static constexpr bool UBX_NAV_TIMEBDS_V0_VALID_SOWVALID(const uint8_t valid)
Definition ubx.hpp:2520
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_GAL
Definition ubx.hpp:2637
const char * UBX_MON_HW_V0_APOWER_STR(const uint8_t aPower)
Definition ubx.hpp:1419
static constexpr uint8_t UBX_RTCM3_TYPE1010_MSGID
UBX-RTCM3-TYPE1010 message ID.
Definition ubx.hpp:563
const char * UBX_NAV_TIMELS_V0_SRCOFCURRLS_STR(const uint8_t srcOfCurrLs)
Definition ubx.hpp:2640
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_POWEROPT
Definition ubx.hpp:2416
static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_NOISYMEAS
Definition ubx.hpp:1148
static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_2D
Definition ubx.hpp:2402
static constexpr std::size_t UBX_CFG_VALGET_V0_MIN_SIZE
Definition ubx.hpp:870
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CARRLOCK3
Definition ubx.hpp:2294
static constexpr uint8_t UBX_NMEA_STANDARD_GBS_MSGID
UBX-NMEA-STANDARD_GBS message ID.
Definition ubx.hpp:501
static constexpr double UBX_NAV_ATT_V0_RPH_SCALING
Definition ubx.hpp:1761
static constexpr uint8_t UBX_RXM_SFRBX_V2_VERSION
Definition ubx.hpp:2807
static constexpr const char * UBX_NAV_TIMEGLO_STRID
UBX-NAV-TIMEGLO message name.
Definition ubx.hpp:384
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_HWRESET
Boot type: hardware reset.
Definition ubx.hpp:1669
static constexpr uint8_t UBX_RXM_PMREQ_MSGID
UBX-RXM-PMREQ message ID.
Definition ubx.hpp:455
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_AUTHENTICATED
Definition ubx.hpp:2952
static constexpr const char * UBX_CFG_VALGET_STRID
UBX-CFG-VALGET message name.
Definition ubx.hpp:240
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_TIMEBASE_UTC
Definition ubx.hpp:3051
static constexpr uint8_t UBX_RTCM3_TYPE1127_MSGID
UBX-RTCM3-TYPE1127 message ID.
Definition ubx.hpp:593
static constexpr double UBX_NAV_HPPOSLLH_V0_ITOW_SCALE
Definition ubx.hpp:1976
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_MODE(const uint8_t flags)
Definition ubx.hpp:3038
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_DECOMPRESSFAILED
Definition ubx.hpp:2925
static constexpr uint8_t UBX_CFG_VALDEL_V1_LAYER_FLASH
UBX-CFG-VALDEL.layers flag: layer Flash.
Definition ubx.hpp:919
static constexpr uint8_t UBX_LOG_ERASE_MSGID
UBX-LOG-ERASE message ID.
Definition ubx.hpp:265
static constexpr uint8_t UBX_RTCM3_TYPE1009_MSGID
UBX-RTCM3-TYPE1009 message ID.
Definition ubx.hpp:561
static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_GNSS_START
Start GNSS.
Definition ubx.hpp:969
static constexpr bool UBX_NAV_STATUS_V0_FLAGS_TOWSET(const uint8_t flags)
Definition ubx.hpp:2409
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_CLKD
Clock drift.
Definition ubx.hpp:956
const char * UBX_MON_HW2_V0_CFGSOURCE_STR(const uint8_t cfgSource)
Definition ubx.hpp:1455
static constexpr const char * UBX_CFG_PWR_STRID
UBX-CFG-PWR message name.
Definition ubx.hpp:234
static constexpr uint8_t UBX_SIGID_BDS_B1CP
BeiDou B1 Cp (pilot).
Definition ubx.hpp:716
static constexpr std::size_t UBX_MON_SYS_V1_SIZE
Definition ubx.hpp:1665
static constexpr const char * UBX_RTCM3_TYPE1003_STRID
UBX-RTCM3-TYPE1003 message name.
Definition ubx.hpp:552
static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_UNKN
Definition ubx.hpp:1573
static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_NONE
Definition ubx.hpp:2359
const char * UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_STR(const uint16_t sigFlags)
Definition ubx.hpp:2303
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_NONE
Definition ubx.hpp:2421
static constexpr uint16_t UBX_SEC_OSNMA_V3_TESLAKEY_TOWSF(const uint32_t teslaKey)
Definition ubx.hpp:2944
static constexpr double UBX_NAV_HPPOSLLH_V0_LL_SCALE
Definition ubx.hpp:1977
static constexpr const char * UBX_RXM_SFRBX_STRID
UBX-RXM-SFRBX message name.
Definition ubx.hpp:466
static constexpr uint8_t UBX_RTCM3_TYPE1125_MSGID
UBX-RTCM3-TYPE1125 message ID.
Definition ubx.hpp:591
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN(const uint8_t flags)
Definition ubx.hpp:2081
const char * UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_STR(const uint8_t ref)
Definition ubx.hpp:1290
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_NIST
Definition ubx.hpp:2591
static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_TYPE
Definition ubx.hpp:1203
static constexpr uint8_t UBX_RXM_SPARTN_V1_FLAGS_MSGUSED(const uint8_t flags)
Definition ubx.hpp:2834
static constexpr uint8_t UBX_MON_HW_V0_APOWER_OFF
Definition ubx.hpp:1416
static constexpr uint8_t UBX_NAV_HPPOSECEF_MSGID
UBX-NAV-HPPOSECEF message ID.
Definition ubx.hpp:343
static constexpr const char * UBX_RTCM3_TYPE1085_STRID
UBX-RTCM3-TYPE1085 message name.
Definition ubx.hpp:580
static constexpr bool UBX_NAV_SAT_V1_FLAGS_AOPAVAIL(const uint32_t flags)
Definition ubx.hpp:2242
static constexpr double UBX_TIM_TM2_V0_SUBMS_SCALE
Definition ubx.hpp:3056
static constexpr std::size_t UBX_CFG_VALGET_V0_MAX_SIZE
Definition ubx.hpp:880
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_UNKNOWN
Definition ubx.hpp:2420
static constexpr double UBX_NAV_TIMEGAL_V0_ITOW_SCALE
Definition ubx.hpp:2486
static constexpr uint8_t UBX_NUM_SBAS
S120-S158.
Definition ubx.hpp:670
static constexpr const char * UBX_NAV2_TIMELS_STRID
UBX-NAV2-TIMELS message name.
Definition ubx.hpp:438
static constexpr uint8_t UBX_NAV_HPPOSECEF_V0_VERSION
Definition ubx.hpp:1934
static constexpr uint8_t UBX_MON_RF_MSGID
UBX-MON-RF message ID.
Definition ubx.hpp:313
const char * UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_STR(const uint8_t sensStatus2)
Definition ubx.hpp:1134
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_COLDSTART
Boot type: cold Start.
Definition ubx.hpp:1667
static constexpr uint8_t UBX_MON_COMMS_V0_TXERRORS_OUTPUTPORT_SPI
Definition ubx.hpp:1357
static constexpr const char * UBX_NMEA_STANDARD_DTM_STRID
UBX-NMEA-STANDARD_DTM message name.
Definition ubx.hpp:496
static constexpr double UBX_NAV_TIMETRUSTED_V1_PROPTACC_SCALE
Definition ubx.hpp:2371
static constexpr const char * UBX_RTCM3_TYPE1230_STRID
UBX-RTCM3-TYPE1230 message name.
Definition ubx.hpp:596
static constexpr uint8_t UBX_ESF_MEAS_MSGID
UBX-ESF-MEAS message ID.
Definition ubx.hpp:247
static constexpr uint8_t UBX_RXM_RAWX_MSGID
UBX-RXM-RAWX message ID.
Definition ubx.hpp:459
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_VDDRFFAIL
Boot type: VDD_RF fail.
Definition ubx.hpp:1675
static constexpr uint8_t UBX_SIGID_GAL_E5BI
Galileo E5 bI.
Definition ubx.hpp:704
static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_NONE
UBX-CFG-VALDEL.transaction value: no transaction.
Definition ubx.hpp:920
const char * UBX_NAV_PVT_V1_FLAGS3_NMAFIXSTATUS_STR(const uint16_t flags3)
Definition ubx.hpp:2110
static constexpr const char * UBX_NAV_CLOCK_STRID
UBX-NAV-CLOCK message name.
Definition ubx.hpp:332
const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREPUBKEYSRC_STR(const uint32_t generalAndTiming)
Definition ubx.hpp:2976
static constexpr const char * UBX_LOG_STR_STRID
UBX-LOG-STR message name.
Definition ubx.hpp:280
static constexpr uint8_t UBX_SEC_CLSID
UBX-SEC class ID.
Definition ubx.hpp:212
const UbxMessagesInfo & UbxGetMessagesInfo()
Get UBX messages lookup table.
static constexpr bool UBX_NAV_PVT_V1_FLAGS2_CONFAVAIL(const uint8_t flags2)
Definition ubx.hpp:2086
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_NOTAPPLICABLE
Definition ubx.hpp:2889
const char * UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_STR(const uint8_t valid)
Definition ubx.hpp:2599
static constexpr uint8_t UBX_LOG_RETRSTR_MSGID
UBX-LOG-RETRSTR message ID.
Definition ubx.hpp:277
static constexpr uint8_t UBX_CFG_VALSET_V1_LAYER_FLASH
UBX-CFG-VALSET.layers flag: layer Flash.
Definition ubx.hpp:827
const char * UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_STR(const uint8_t timSyncReq)
Definition ubx.hpp:2910
const char * UBX_TIM_TM2_V0_FLAGS_RUN_STR(const uint8_t flags)
Definition ubx.hpp:3043
static constexpr const char * UBX_RTCM3_TYPE1011_STRID
UBX-RTCM3-TYPE1011 message name.
Definition ubx.hpp:566
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_ISMOVING(const uint32_t flags)
Definition ubx.hpp:2184
const char * UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_STR(const uint16_t flags3)
Definition ubx.hpp:2091
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_BDS
Definition ubx.hpp:2644
static constexpr uint8_t UBX_NAV2_ODO_MSGID
UBX-NAV2-ODO message ID.
Definition ubx.hpp:409
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_INITIALIZED
Definition ubx.hpp:1106
static constexpr bool UBX_NAV_PVT_V1_FLAGS_HEADVEHVALID(const uint8_t flags)
Definition ubx.hpp:2080
static constexpr bool UBX_NAV_PVT_V1_FLAGS_GNSSFIXOK(const uint8_t flags)
Definition ubx.hpp:2070
static constexpr uint8_t UBX_SYNC_2
UBX frame sync char 2.
Definition ubx.hpp:65
static constexpr uint8_t UBX_RTCM3_TYPE1077_MSGID
UBX-RTCM3-TYPE1077 message ID.
Definition ubx.hpp:575
const char * UBX_CFG_RST_V0_RESETMODE_STR(const uint8_t resetMode)
Definition ubx.hpp:970
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_EPH
Definition ubx.hpp:2232
const char * UBX_NAV_STATUS_V0_FLAGS2_PSMSTATE_STR(const uint8_t flags2)
Definition ubx.hpp:2413
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_INITIALIZED2
Definition ubx.hpp:1124
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_GPS
Definition ubx.hpp:3098
static constexpr const char * UBX_NAV_STRID
UBX-NAV class name.
Definition ubx.hpp:207
static constexpr double UBX_NAV_TIMEGPS_V0_ITOW_SCALE
Definition ubx.hpp:2455
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_MACFUNCTION(const uint32_t dsmAuthentication)
Definition ubx.hpp:2929
static constexpr uint8_t UBX_SEC_SIGLOG_MSGID
UBX-SEC-SIGLOG message ID.
Definition ubx.hpp:475
static constexpr uint16_t UBX_MON_RF_V0_NOISEPERMS_MAX
This seems to be what u-center uses..
Definition ubx.hpp:1587
static constexpr std::size_t UBX_NAV_CLOCK_V0_SIZE
Definition ubx.hpp:1784
static constexpr const char * UBX_RXM_PMREQ_STRID
UBX-RXM-PMREQ message name.
Definition ubx.hpp:456
static constexpr uint32_t UBX_CFG_VALGET_V0_GROUP_WILDCARD(const uint32_t groupId)
UBX-CFG-VALGET.keys group wildcard.
Definition ubx.hpp:878
static constexpr uint8_t UBX_NAV_PVT_MSGID
UBX-NAV-PVT message ID.
Definition ubx.hpp:359
static constexpr std::size_t UBX_TIM_TP_V0_SIZE
Definition ubx.hpp:3081
static constexpr uint8_t UBX_NMEA_CLSID
UBX-NMEA class ID.
Definition ubx.hpp:218
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD(const uint8_t refInfo)
Definition ubx.hpp:3106
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_NVS
Definition ubx.hpp:2963
const char * UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_STR(const uint8_t srcOfLsChange)
Definition ubx.hpp:2647
static constexpr uint8_t UBX_NAV_HPPOSLLH_V0_FLAGS_INVALIDLLH
Definition ubx.hpp:1975
static constexpr uint8_t UBX_CFG_VALSET_V0_RESERVED
UBX-CFG-VALSET.reserved value.
Definition ubx.hpp:818
static constexpr bool UBX_MON_COMMS_V0_TXERRORS_ALLOC(const uint8_t txErrors)
Definition ubx.hpp:1349
const char * UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_STR(const uint8_t initStatus1)
Definition ubx.hpp:1108
static constexpr uint8_t UBX_INF_TEST_MSGID
UBX-INF-TEST message ID.
Definition ubx.hpp:259
static constexpr const char * UBX_NAV_GEOFENCE_STRID
UBX-NAV-GEOFENCE message name.
Definition ubx.hpp:342
static constexpr bool UBX_TIM_TP_V0_FLAGS_QERRINVALID(const uint8_t flags)
Definition ubx.hpp:3095
static constexpr uint8_t UBX_NAV2_SAT_MSGID
UBX-NAV2-SAT message ID.
Definition ubx.hpp:417
static constexpr uint8_t UBX_CFG_VALSET_V1_LAYER_RAM
UBX-CFG-VALSET.layers flag: layer RAM.
Definition ubx.hpp:825
static constexpr bool UBX_NAV_PVT_V1_FLAGS_DIFFSOLN(const uint8_t flags)
Definition ubx.hpp:2071
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_GAL
Definition ubx.hpp:2645
const char * UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_STR(const uint32_t flags)
Definition ubx.hpp:2180
static constexpr uint8_t UBX_NAV_TIMETRUSTED_VERSION(const uint8_t *msg)
Definition ubx.hpp:2356
static constexpr uint8_t UBX_ESF_ALG_MSGID
UBX-ESF-ALG message ID.
Definition ubx.hpp:243
static constexpr bool UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTVAL(const uint32_t generalAndTiming)
Definition ubx.hpp:2969
static constexpr bool UBX_MGA_INI_TIME_UTC_V0_REF_FALL(const uint8_t ref)
Definition ubx.hpp:1252
static constexpr uint8_t UBX_CFG_VALSET_V0_VERSION
UBX-CFG-VALSET.version value.
Definition ubx.hpp:813
static constexpr uint8_t UBX_NAV_GEOFENCE_MSGID
UBX-NAV-GEOFENCE message ID.
Definition ubx.hpp:341
static constexpr bool UBX_NAV_PVT_V1_VALID_VALIDMAG(const uint8_t valid)
Definition ubx.hpp:2062
static constexpr bool UBX_NAV_STATUS_V0_FIXSTAT_CARRSOLNVALID(const uint8_t fixStat)
Definition ubx.hpp:2411
static constexpr const char * UBX_NAV_ATT_STRID
UBX-NAV-ATT message name.
Definition ubx.hpp:330
static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_FLASH
UBX-CFG-VALGET.layers value: layer Flash.
Definition ubx.hpp:873
static constexpr bool UBX_NAV_SAT_V1_FLAGS_EPHAVAIL(const uint32_t flags)
Definition ubx.hpp:2239
static constexpr const char * UBX_ESF_RAW_STRID
UBX-ESF-RAW message name.
Definition ubx.hpp:250
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_SPOOFDETSTATE_AFFIRMED
Definition ubx.hpp:2423
static constexpr std::size_t UBX_NAV_SIG_V0_FREQID_OFFS
Definition ubx.hpp:2286
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_OTHER1
Definition ubx.hpp:2236
static constexpr uint8_t UBX_NAV2_TIMEBDS_MSGID
UBX-NAV2-TIMEBDS message ID.
Definition ubx.hpp:429
static constexpr double UBX_RXM_RAWX_V1_CPSTD_SCALE(const double cpStd)
Definition ubx.hpp:2730
static constexpr uint8_t UBX_ESF_STATUS_VERSION(const uint8_t *msg)
Definition ubx.hpp:1096
static constexpr const char * UBX_NAV_RELPOSNED_STRID
UBX-NAV-RELPOSNED message name.
Definition ubx.hpp:362
static constexpr const char * UBX_ESF_STATUS_STRID
UBX-ESF-STATUS message name.
Definition ubx.hpp:252
static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE(const uint8_t bitfield0)
Definition ubx.hpp:1177
static constexpr std::size_t UBX_MON_COMMS_V0_SIZE(const uint8_t *msg)
Definition ubx.hpp:1346
static constexpr uint8_t UBX_GNSSID_GLO
GLONASS.
Definition ubx.hpp:658
static constexpr uint8_t UBX_NAV_DOP_MSGID
UBX-NAV-DOP message ID.
Definition ubx.hpp:335
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_NTSC
Definition ubx.hpp:3114
static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_EXTINT0
Definition ubx.hpp:1250
static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_PASSED
Definition ubx.hpp:2914
static constexpr std::size_t UBX_CFG_VALGET_V0_MAX_K
UBX-CFG-VALGET.cfgData maximum number of keys.
Definition ubx.hpp:876
const char * UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_STR(const uint8_t refInfo)
Definition ubx.hpp:3104
static constexpr uint8_t UBX_MGA_QZSS_MSGID
UBX-MGA-QZSS message ID.
Definition ubx.hpp:295
static constexpr uint8_t UBX_MGA_DBD_MSGID
UBX-MGA-DBD message ID.
Definition ubx.hpp:285
static constexpr uint8_t UBX_MON_HW_V0_ASTATUS_SHORT
Definition ubx.hpp:1413
const char * UBX_TIM_TP_V0_FLAGS_RAIM_STR(const uint8_t flags)
Definition ubx.hpp:3091
static constexpr uint8_t UBX_NAV2_SVIN_MSGID
UBX-NAV2-SVIN message ID.
Definition ubx.hpp:427
static constexpr uint8_t UBX_NAV2_TIMEUTC_MSGID
UBX-NAV2-TIMEUTC message ID.
Definition ubx.hpp:443
static constexpr uint8_t UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE_ECDSAP521
Definition ubx.hpp:1180
static constexpr const char * UBX_NMEA_STANDARD_GRS_STRID
UBX-NMEA-STANDARD_GRS message name.
Definition ubx.hpp:518
static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_OPEN
Definition ubx.hpp:1581
static constexpr double UBX_NAV_STATUS_V0_ITOW_SCALE
Definition ubx.hpp:2398
static constexpr std::size_t UBX_CFG_CFG_V0_MIN_SIZE
Definition ubx.hpp:1000
static constexpr uint16_t UBX_MON_HW_V0_AGCCNT_MAX
Definition ubx.hpp:1421
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_E
Definition ubx.hpp:1511
static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_WRONGFLXMAC(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2906
static constexpr uint8_t UBX_SIGID_BDS_B3ID2
BeiDou B3I D2.
Definition ubx.hpp:715
static constexpr const char * UBX_RXM_STRID
UBX-RXM class name.
Definition ubx.hpp:211
static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_OK
Definition ubx.hpp:1579
static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_OSNMAENABLED(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2897
static constexpr std::size_t UBX_MON_TEMP_V0_SIZE
Definition ubx.hpp:1703
static constexpr std::size_t UBX_NAV_SIG_V0_MIN_SIZE
Definition ubx.hpp:2284
static constexpr uint8_t UBX_MON_SPAN_MSGID
UBX-MON-SPAN message ID.
Definition ubx.hpp:319
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_FIXED
Definition ubx.hpp:2428
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_PUBKEYID(const uint32_t dsmAuthentication)
Definition ubx.hpp:2930
static constexpr const char * UBX_CFG_CFG_STRID
UBX-CFG-CFG message name.
Definition ubx.hpp:232
const char * UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_STR(const uint8_t flags)
Definition ubx.hpp:1404
static constexpr uint8_t UBX_FIRST_QZSS
Q01.
Definition ubx.hpp:680
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_TIMINGAUTHRESULT_FAILED
Definition ubx.hpp:2953
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_BDS
Definition ubx.hpp:2636
static constexpr uint8_t UBX_FIRST_BDS
B01.
Definition ubx.hpp:679
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_DIRECTION_OUT
Definition ubx.hpp:1517
static constexpr const char * UBX_NMEA_STANDARD_GLL_STRID
UBX-NMEA-STANDARD_GLL message name.
Definition ubx.hpp:506
static constexpr uint8_t UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_HEALTHY
Definition ubx.hpp:2902
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_ANO
Definition ubx.hpp:2234
static constexpr bool UBX_SEC_OSNMA_V3_OSNMAMONITORING_WRONGDATA(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2905
static constexpr uint8_t UBX_NAV_STATUS_V0_GPSFIX_TIME
Definition ubx.hpp:2405
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_UTCSTANDARD_SU
Definition ubx.hpp:2595
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_USNO
Definition ubx.hpp:3110
static constexpr uint8_t UBX_RXM_QZSSL6_MSGID
UBX-RXM-QZSSL6 message ID.
Definition ubx.hpp:457
static constexpr uint16_t UBX_SEC_OSNMA_V3_TESLAKEY_WNSF(const uint32_t teslaKey)
Definition ubx.hpp:2943
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_CARRLOCK1
Definition ubx.hpp:2292
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_XTALABSENT
Definition ubx.hpp:1409
static constexpr uint8_t UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS(const uint32_t teslaKey)
Definition ubx.hpp:2935
static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_DUALFREQ
Definition ubx.hpp:2300
static constexpr uint8_t UBX_MGA_INI_TIME_UTC_TYPE
Definition ubx.hpp:1243
static constexpr uint8_t UBX_RXM_RTCM_VERSION(const uint8_t *msg)
Definition ubx.hpp:2764
static constexpr uint8_t UBX_CFG_VALSET_V0_LAYERS_BBR
UBX-CFG-VALSET.layers flag: layer BBR.
Definition ubx.hpp:816
static constexpr const char * UBX_ESF_INS_STRID
UBX-ESF-INS message name.
Definition ubx.hpp:246
static constexpr const char * UBX_RXM_RTCM_STRID
UBX-RXM-RTCM message name.
Definition ubx.hpp:464
constexpr uint8_t UbxMsgId(const uint8_t *msg)
Get message ID from message.
Definition ubx.hpp:92
static constexpr std::size_t UBX_NAV_TIMELS_V0_SIZE
Definition ubx.hpp:2630
static constexpr uint8_t UBX_MON_VER_MSGID
UBX-MON-VER message ID.
Definition ubx.hpp:327
static constexpr uint8_t UBX_SEC_UNIQID_MSGID
UBX-SEC-UNIQID message ID.
Definition ubx.hpp:477
static constexpr uint8_t UBX_MGA_INI_MSGID
UBX-MGA-INI message ID.
Definition ubx.hpp:293
std::array< UbxMsgInfo, 15 > UbxClassesInfo
UBX classes lookup table.
Definition ubx.hpp:615
static constexpr uint8_t UBX_NAV_TIMEUTC_MSGID
UBX-NAV-TIMEUTC message ID.
Definition ubx.hpp:395
static constexpr uint8_t UBX_NAV_HPPOSLLH_VERSION(const uint8_t *msg)
Definition ubx.hpp:1972
static constexpr const char * UBX_LOG_STRID
UBX-LOG class name.
Definition ubx.hpp:201
static constexpr uint8_t UBX_SIGID_BDS_B2AD
BeiDou B2 ad (data).
Definition ubx.hpp:719
static constexpr uint8_t UBX_NAV_EELL_MSGID
UBX-NAV-EELL message ID.
Definition ubx.hpp:337
static constexpr const char * UBX_NAV_SBAS_STRID
UBX-NAV-SBAS message name.
Definition ubx.hpp:368
static constexpr const char * UBX_MGA_BDS_STRID
UBX-MGA-BDS message name.
Definition ubx.hpp:284
static constexpr std::size_t UBX_CFG_VALGET_V1_MIN_SIZE
Definition ubx.hpp:883
static constexpr uint8_t UBX_CFG_VALDEL_V1_VERSION
UBX-CFG-VALDEL.version value.
Definition ubx.hpp:916
static constexpr std::size_t UBX_CFG_RST_V0_SIZE
Definition ubx.hpp:949
static constexpr double UBX_NAV_PVT_V1_GSPEED_SCALE
Definition ubx.hpp:2119
const char * UBX_CFG_VALGET_V1_LAYER_STR(const uint8_t layer)
Definition ubx.hpp:888
static constexpr uint8_t UBX_NAV2_POSECEF_MSGID
UBX-NAV2-POSECEF message ID.
Definition ubx.hpp:411
static constexpr uint8_t UBX_MON_RF_V0_VERSION
Definition ubx.hpp:1567
static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_KLOB_BDS
Definition ubx.hpp:2299
static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_REFSYS_BDS
Definition ubx.hpp:2362
static constexpr uint8_t UBX_SIGID_GAL_E6B
Galileo E6 B.
Definition ubx.hpp:706
const char * UBX_SEC_OSNMA_V3_NMAHEADER_CPKS_STR(const uint8_t nmaHeader)
Definition ubx.hpp:2888
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_INITALIZING
Definition ubx.hpp:1105
static constexpr uint8_t UBX_NMEA_PUBX_CONFIG_MSGID
UBX-NMEA-PUBX_CONFIG message ID.
Definition ubx.hpp:537
static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_GNSS
Restart GNSS.
Definition ubx.hpp:966
static constexpr uint8_t UBX_MGA_GLO_MSGID
UBX-MGA-GLO message ID.
Definition ubx.hpp:289
static constexpr std::size_t UBX_ACK_NAK_V0_SIZE
Definition ubx.hpp:779
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE_ANA
Definition ubx.hpp:2235
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_OSC
Oscillator parameters.
Definition ubx.hpp:957
static constexpr int UBX_RXM_SFRBX_V2_GROUP0_FREQID_TO_SLOT(const uint8_t freqId)
Definition ubx.hpp:2809
static constexpr uint8_t UBX_CFG_VALSET_V1_VERSION
UBX-CFG-VALSET.version value.
Definition ubx.hpp:823
static constexpr uint8_t UBX_MON_HW3_VERSION(const uint8_t *msg)
Definition ubx.hpp:1493
static constexpr const char * UBX_RXM_SPARTN_STRID
UBX-RXM-SPARTN message name.
Definition ubx.hpp:468
static constexpr uint8_t UBX_NAV_SAT_V1_FLAGS_ORBITSOURCE(const uint32_t flags)
Definition ubx.hpp:2229
static constexpr uint8_t UBX_NAV2_EOE_MSGID
UBX-NAV2-EOE message ID.
Definition ubx.hpp:407
static constexpr bool UBX_NAV_SIG_V0_SIGFLAGS_PR_USED(const uint16_t sigFlags)
Definition ubx.hpp:2308
static constexpr const char * UBX_RTCM3_TYPE1033_STRID
UBX-RTCM3-TYPE1033 message name.
Definition ubx.hpp:570
static constexpr bool UBX_NAV_TIMEGPS_V0_VALID_TOWVALID(const uint8_t valid)
Definition ubx.hpp:2458
static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_EXT0
Definition ubx.hpp:1050
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS(const uint8_t sensStatus2)
Definition ubx.hpp:1133
const char * UBX_MON_SYS_V1_BOOTTYPE_STR(const uint8_t bootType)
Definition ubx.hpp:1678
static constexpr uint32_t UBX_CFG_VALGET_V0_ALL_WILDCARD
UBX-CFG-VALGET.keys all wildcard.
Definition ubx.hpp:879
static constexpr double UBX_NAV_POSECEF_V0_PACC_SCALE
Definition ubx.hpp:2006
static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_CRIT
Definition ubx.hpp:1576
static constexpr uint8_t UBX_LOG_RETRPOSX_MSGID
UBX-LOG-RETRPOSX message ID.
Definition ubx.hpp:275
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_INVALID
Definition ubx.hpp:2885
static constexpr uint8_t UBX_NMEA_STANDARD_GQQ_MSGID
UBX-NMEA-STANDARD_GQQ message ID.
Definition ubx.hpp:515
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_ALERT
Definition ubx.hpp:2921
static constexpr const char * UBX_NMEA_STANDARD_GAQ_STRID
UBX-NMEA-STANDARD_GAQ message name.
Definition ubx.hpp:498
static constexpr std::size_t UBX_ACK_ACK_V0_SIZE
Definition ubx.hpp:760
static constexpr bool UBX_MON_HW3_V0_FLAGS_XTALABSENT(const uint8_t flags)
Definition ubx.hpp:1500
static constexpr uint8_t UBX_LOG_CLSID
UBX-LOG class ID.
Definition ubx.hpp:200
static constexpr std::size_t UBX_MON_HW2_V0_SIZE
Definition ubx.hpp:1450
static constexpr uint8_t UBX_GNSSID_GAL
Galileo.
Definition ubx.hpp:655
const char * UBX_TIM_TP_V0_FLAGS_TIMEBASE_STR(const uint8_t flags)
Definition ubx.hpp:3086
const char * UBX_SEC_OSNMA_V3_TESLAKEY_TESLAKEYAUTHSTATUS_STR(const uint32_t teslaKey)
Definition ubx.hpp:2936
static constexpr const char * UBX_CFG_RST_STRID
UBX-CFG-RST message name.
Definition ubx.hpp:236
static constexpr uint8_t UBX_CFG_VALSET_V1_TRANSACTION_END
UBX-CFG-VALSET.transaction value: transaction: end.
Definition ubx.hpp:831
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_RUN(const uint8_t flags)
Definition ubx.hpp:3042
static constexpr bool UBX_RXM_RAWX_V1_TRKSTAT_CPVALID(const uint8_t trkStat)
Definition ubx.hpp:2735
static constexpr uint8_t UBX_ESF_STATUS_MSGID
UBX-ESF-STATUS message ID.
Definition ubx.hpp:251
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS1_READY
Definition ubx.hpp:1132
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_MODE_SINGLE
Definition ubx.hpp:3040
static constexpr uint8_t UBX_RTCM3_TYPE1230_MSGID
UBX-RTCM3-TYPE1230 message ID.
Definition ubx.hpp:595
static constexpr const char * UBX_NAV_SLAS_STRID
UBX-NAV-SLAS message name.
Definition ubx.hpp:372
const char * UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_STR(const uint8_t initStatus1)
Definition ubx.hpp:1114
static constexpr const char * UBX_RTCM3_TYPE1075_STRID
UBX-RTCM3-TYPE1075 message name.
Definition ubx.hpp:574
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PERIPHPIO_PERIPH
Definition ubx.hpp:1503
const char * UBX_SEC_OSNMA_V3_GENERALANDTIMING_MERKLEROOTSRC_STR(const uint32_t generalAndTiming)
Definition ubx.hpp:2965
static constexpr const char * UBX_ACK_STRID
UBX-ACK class name.
Definition ubx.hpp:193
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_BIPM
Definition ubx.hpp:3111
static constexpr std::size_t UBX_RXM_RTCM_V2_SIZE
Definition ubx.hpp:2766
static constexpr uint8_t UBX_CFG_VALDEL_V1_TRANSACTION_END
UBX-CFG-VALDEL.transaction value: transaction: end.
Definition ubx.hpp:923
static constexpr uint8_t UBX_CFG_VALDEL_VERSION(const uint8_t *msg)
Definition ubx.hpp:915
const char * UBX_RXM_SPARTN_V1_FLAGS_MSGUSED_STR(const uint8_t flags)
Definition ubx.hpp:2835
static constexpr std::size_t UBX_NAV_COV_V0_SIZE
Definition ubx.hpp:1826
static constexpr uint8_t UBX_SIGID_GAL_E5AI
Galileo E5 aI.
Definition ubx.hpp:702
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_NO
Definition ubx.hpp:2426
static constexpr uint8_t UBX_SIGID_BDS_B2ID2
BeiDou B2I D2.
Definition ubx.hpp:713
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_REFOBSMISS(const uint32_t flags)
Definition ubx.hpp:2186
static constexpr uint8_t UBX_MON_RXBUF_MSGID
UBX-MON-RXBUF message ID.
Definition ubx.hpp:315
static constexpr uint8_t UBX_CFG_VALGET_V1_LAYER_FLASH
UBX-CFG-VALGET.layers value: layer Flash.
Definition ubx.hpp:886
static constexpr bool UBX_NAV_TIMEGPS_V0_VALID_LEAPSVALID(const uint8_t valid)
Definition ubx.hpp:2460
static constexpr uint8_t UBX_MGA_INI_TIME_GNSS_V0_REF_SOURCE_EXTINT1
Definition ubx.hpp:1293
static constexpr double UBX_NAV_HPPOSLLH_V0_H_HP_SCALE
Definition ubx.hpp:1980
static constexpr uint8_t UBX_RTCM3_TYPE4072_0_MSGID
UBX-RTCM3-TYPE4072_0 message ID.
Definition ubx.hpp:597
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_AIDED
Definition ubx.hpp:2962
static constexpr uint8_t UBX_NAV_TIMEQZSS_MSGID
UBX-NAV-TIMEQZSS message ID.
Definition ubx.hpp:389
const char * UBX_MON_HW3_V0_PINMASK_PINBANK_STR(const uint16_t pinMask)
Definition ubx.hpp:1506
static constexpr uint8_t UBX_TIM_TM2_V0_FLAGS_MODE_RUNNING
Definition ubx.hpp:3041
const char * UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS_STR(const uint32_t dsmAuthentication)
Definition ubx.hpp:2917
static constexpr uint8_t UBX_MON_SYS_V1_BOOTTYPE_SWRESET
Boot type: software reset.
Definition ubx.hpp:1672
static constexpr const char * UBX_NAV_DOP_STRID
UBX-NAV-DOP message name.
Definition ubx.hpp:336
static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT_EXT1
Definition ubx.hpp:1051
static constexpr uint8_t UBX_CFG_VALDEL_V1_LAYER_BBR
UBX-CFG-VALDEL.layers flag: layer BBR.
Definition ubx.hpp:918
static constexpr double UBX_NAV_SIG_V0_ITOW_SCALE
Definition ubx.hpp:2285
static constexpr bool UBX_MON_HW3_V0_PINMASK_PIOPULLLOW(const uint16_t pinMask)
Definition ubx.hpp:1523
static constexpr std::size_t UBX_NAV_TIMEBDS_V0_SIZE
Definition ubx.hpp:2516
static constexpr uint8_t UBX_NAV2_VELNED_MSGID
UBX-NAV2-VELNED message ID.
Definition ubx.hpp:447
static constexpr uint8_t UBX_SIGID_BDS_B3ID1
BeiDou B3I D1.
Definition ubx.hpp:714
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_CRL
Definition ubx.hpp:3108
static constexpr const char * UBX_LOG_CREATE_STRID
UBX-LOG-CREATE message name.
Definition ubx.hpp:264
static constexpr bool UBX_RXM_RAWX_V1_RECSTAT_CLKRESET(const uint8_t recStat)
Definition ubx.hpp:2726
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_1_TO_2_SEC
Definition ubx.hpp:2094
static constexpr const char * UBX_TIM_VRFY_STRID
UBX-TIM-VRFY message name.
Definition ubx.hpp:486
static constexpr uint8_t UBX_CFG_VALGET_V0_LAYER_BBR
UBX-CFG-VALGET.layers value: layer BBR.
Definition ubx.hpp:872
static constexpr uint8_t UBX_TIM_TP_V0_FLAGS_TIMEBASE_GNSS
Definition ubx.hpp:3087
static constexpr double UBX_NAV_PVT_V1_LAT_SCALE
Definition ubx.hpp:2113
static constexpr double UBX_NAV_PVT_V1_HEADACC_SCALE
Definition ubx.hpp:2122
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_NMASTATUS_OPERATIONAL
Definition ubx.hpp:2884
static constexpr uint8_t UBX_NMEA_STANDARD_GSV_MSGID
UBX-NMEA-STANDARD_GSV message ID.
Definition ubx.hpp:523
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_CALIBRATING
Definition ubx.hpp:1136
const char * UBX_MGA_GAL_OSNMA_PUBKEY_V0_BITFIELD0_PUBKEYTYPE_STR(const uint8_t bitfield0)
Definition ubx.hpp:1178
static constexpr const char * UBX_NAV_HPPOSECEF_STRID
UBX-NAV-HPPOSECEF message name.
Definition ubx.hpp:344
bool UbxMessageInfo(const std::string &name, UbxMsgInfo &info)
Get UBX message info.
static constexpr const char * UBX_NMEA_STANDARD_VLW_STRID
UBX-NMEA-STANDARD_VLW message name.
Definition ubx.hpp:532
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_FUTUREMERKLEROOTSRC(const uint32_t generalAndTiming)
Definition ubx.hpp:2970
static constexpr const char * UBX_MGA_INI_TIME_GNSS_STRID
Definition ubx.hpp:1286
static constexpr std::size_t UBX_RXM_RAWX_V1_SIZE(const uint8_t *msg)
Definition ubx.hpp:2739
static constexpr double UBX_NAV_VELECEF_V0_SACC_SCALE
Definition ubx.hpp:2675
static constexpr double UBX_NAV_SAT_V1_ITOW_SCALE
Definition ubx.hpp:2227
static constexpr std::size_t UBX_MON_SPAN_V0_NUM_BINS
Number of bins.
Definition ubx.hpp:1610
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_TIMESTATUS_TIMETAG
Definition ubx.hpp:1144
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_UNNOWN
Definition ubx.hpp:3116
static constexpr uint8_t UBX_SEC_OSNMA_V3_TIMSYNCREQ_TIMSYNCSTATUS_NOTACCURATE
Definition ubx.hpp:2913
static constexpr uint8_t UBX_NAV_PVT_V1_FIXTYPE_NOFIX
Definition ubx.hpp:2063
static constexpr const char * UBX_MON_PATCH_STRID
UBX-MON-PATCH message name.
Definition ubx.hpp:312
static constexpr uint8_t UBX_INF_WARNING_MSGID
UBX-INF-WARNING message ID.
Definition ubx.hpp:261
static constexpr uint8_t UBX_NUM_GPS
G01-G32.
Definition ubx.hpp:669
static constexpr double UBX_NAV_EELL_V0_ITOW_SCALE
Definition ubx.hpp:1881
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_MNTALGSTATUS_INITIALIZED2
Definition ubx.hpp:1112
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK(const uint16_t pinMask)
Definition ubx.hpp:1505
static constexpr const char * UBX_NAV_EOE_STRID
UBX-NAV-EOE message name.
Definition ubx.hpp:340
static constexpr double UBX_NAV_TIMEUTC_V0_NANO_SCALE
Definition ubx.hpp:2583
static constexpr uint8_t UBX_CFG_RST_V0_RESETMODE_HW_FORCED
Forced, immediate hardware reset.
Definition ubx.hpp:964
static constexpr uint8_t UBX_NAV_TIMELS_MSGID
UBX-NAV-TIMELS message ID.
Definition ubx.hpp:387
static constexpr uint8_t UBX_ESF_MEAS_V0_DATA_DATATYPE(const uint32_t data)
same enum as UBX-ESF-STATUS.type it seems
Definition ubx.hpp:1055
static constexpr const char * UBX_LOG_RETR_STRID
UBX-LOG-RETR message name.
Definition ubx.hpp:272
static constexpr uint8_t UBX_SIGID_QZSS_L2CM
QZSS L2 CM.
Definition ubx.hpp:723
const char * UBX_NAV_PVT_V1_FLAGS_CARRSOLN_STR(const uint8_t flags)
Definition ubx.hpp:2082
const char * UBX_NAV_TIMETRUSTED_V1_REFSYS_STR(const uint8_t refSys)
Definition ubx.hpp:2364
static constexpr uint32_t UBX_CFG_CFG_V0_CLEAR_ALL
Clear all config.
Definition ubx.hpp:1003
static constexpr uint8_t UBX_MON_HW2_V0_CFGSOURCE_ROM
Definition ubx.hpp:1451
static constexpr const char * UBX_LOG_INFO_STRID
UBX-LOG-INFO message name.
Definition ubx.hpp:270
static constexpr std::size_t UBX_NAV_TIMEUTC_V0_SIZE
Definition ubx.hpp:2580
static constexpr uint8_t UBX_NAV_TIMEUTC_V0_VALID_VALIDWKN(const uint8_t valid)
Definition ubx.hpp:2585
static constexpr uint8_t UBX_CFG_VALGET_MSGID
UBX-CFG-VALGET message ID.
Definition ubx.hpp:239
static constexpr uint8_t UBX_TIM_TM2_MSGID
UBX-TIM-TM2 message ID.
Definition ubx.hpp:481
static constexpr const char * UBX_RTCM3_TYPE1004_STRID
UBX-RTCM3-TYPE1004 message name.
Definition ubx.hpp:554
static constexpr uint8_t UBX_NAV_SIG_MSGID
UBX-NAV-SIG message ID.
Definition ubx.hpp:369
static constexpr const char * UBX_RTCM3_TYPE1094_STRID
UBX-RTCM3-TYPE1094 message name.
Definition ubx.hpp:584
static constexpr bool UBX_NAV_TIMELS_V0_VALID_TIMETOLSEVENTVALID(const uint8_t valid)
Definition ubx.hpp:2649
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS2_IMUINITSTATUS_INITIALIZED1
Definition ubx.hpp:1123
static constexpr const char * UBX_NAV2_SAT_STRID
UBX-NAV2-SAT message name.
Definition ubx.hpp:418
static constexpr const char * UBX_LOG_RETRSTR_STRID
UBX-LOG-RETRSTR message name.
Definition ubx.hpp:278
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS_CARRSOLN_FLOAT
Definition ubx.hpp:2084
static constexpr uint8_t UBX_NMEA_STANDARD_ZDA_MSGID
UBX-NMEA-STANDARD_ZDA message ID.
Definition ubx.hpp:535
static constexpr uint16_t UBX_CFG_RST_V0_NAVBBR_UTC
UTC and leap second parameters.
Definition ubx.hpp:958
static constexpr uint8_t UBX_NAV_EELL_V0_VERSION
Definition ubx.hpp:1879
static constexpr uint8_t UBX_ESF_STATUS_V2_INITSTATUS1_INSINITSTATUS_INITIALIZED1
Definition ubx.hpp:1117
static constexpr double UBX_NAV_RELPOSNED_V1_ACCN_E_D_SCALE
Definition ubx.hpp:2173
static constexpr uint8_t UBX_NAV_SIG_V0_IONOMODEL_KLOB_GPS
Definition ubx.hpp:2297
static constexpr uint8_t UBX_MON_SPAN_VERSION(const uint8_t *msg)
Definition ubx.hpp:1626
static constexpr uint8_t UBX_NAV2_POSLLH_MSGID
UBX-NAV2-POSLLH message ID.
Definition ubx.hpp:413
static constexpr const char * UBX_RXM_QZSSL6_STRID
UBX-RXM-QZSSL6 message name.
Definition ubx.hpp:458
static constexpr const char * UBX_ESF_MEAS_STRID
UBX-ESF-MEAS message name.
Definition ubx.hpp:248
static constexpr uint8_t UBX_NAV_RELPOSNED_VERSION(const uint8_t *msg)
Definition ubx.hpp:2164
static constexpr uint8_t UBX_MGA_GAL_OSNMA_MERKLE_V0_BITFIELD0_APPLICABILITYTIME_CURRENT
Definition ubx.hpp:1209
static constexpr const char * UBX_MON_IO_STRID
UBX-MON-IO message name.
Definition ubx.hpp:308
const char * UBX_SEC_OSNMA_V3_OSNMAMONITORING_NMAHEADERUPDATE_STR(const uint16_t osnmaMonitoring)
Definition ubx.hpp:2900
static constexpr const char * UBX_NAV_SAT_STRID
UBX-NAV-SAT message name.
Definition ubx.hpp:366
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_UNKNOWN
Definition ubx.hpp:2639
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_UTCSTANDARD_EU
Definition ubx.hpp:3112
static constexpr uint8_t UBX_SIGID_GPS_L1CA
GPS L1 C/A.
Definition ubx.hpp:692
static constexpr uint8_t UBX_RTCM3_TYPE1002_MSGID
UBX-RTCM3-TYPE1002 message ID.
Definition ubx.hpp:549
static constexpr uint8_t UBX_NAV_HPPOSLLH_MSGID
UBX-NAV-HPPOSLLH message ID.
Definition ubx.hpp:345
static constexpr uint8_t UBX_RTCM3_TYPE1001_MSGID
UBX-RTCM3-TYPE1001 message ID.
Definition ubx.hpp:547
static constexpr uint8_t UBX_ESF_MEAS_V0_FLAGS_TIMEMARKSENT(const uint16_t flags)
Definition ubx.hpp:1047
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_20_TO_30_SEC
Definition ubx.hpp:2099
static constexpr uint8_t UBX_MON_RF_V0_FLAGS_JAMMINGSTATE_WARN
Definition ubx.hpp:1575
static constexpr uint8_t UBX_MON_HW_V0_FLAGS_JAMMINGSTATE_WARNING
Definition ubx.hpp:1407
static constexpr uint8_t UBX_RXM_RTCM_MSGID
UBX-RXM-RTCM message ID.
Definition ubx.hpp:463
static constexpr uint8_t UBX_INF_DEBUG_MSGID
UBX-INF-DEBUG message ID.
Definition ubx.hpp:253
static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_SUSPENDED
Definition ubx.hpp:1127
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_DEFAULT
Definition ubx.hpp:2632
static constexpr double UBX_NAV_CLOCK_V0_CLKB_SCALE
Definition ubx.hpp:1785
const char * UBX_CFG_VALDEL_V1_TRANSACTION_STR(const uint8_t transaction)
Definition ubx.hpp:924
static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_REF_SOURCE_NONE
Definition ubx.hpp:1249
static constexpr uint8_t UBX_SIGID_BDS_B2ID1
BeiDou B2I D1.
Definition ubx.hpp:712
static constexpr uint8_t UBX_SEC_OSNMA_V3_DSMAUTHENTICATION_DSMAUTHENTICATIONSTATUS(const uint32_t dsmAuthentication)
Definition ubx.hpp:2916
static constexpr uint8_t UBX_NAV_SIG_V0_VERSION
Definition ubx.hpp:2283
static constexpr const char * UBX_RTCM3_TYPE1012_STRID
UBX-RTCM3-TYPE1012 message name.
Definition ubx.hpp:568
static constexpr bool UBX_NAV_RELPOSNED_V1_FLAGS_RELPOSVALID(const uint32_t flags)
Definition ubx.hpp:2178
static constexpr uint8_t UBX_FIRST_GLO
R01.
Definition ubx.hpp:681
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_NOSIG
Definition ubx.hpp:2287
static constexpr uint8_t UBX_GNSSID_BDS
BeiDou.
Definition ubx.hpp:656
static constexpr double UBX_NAV_RELPOSNED_V1_ITOW_SCALE
Definition ubx.hpp:2167
static constexpr uint8_t UBX_NAV2_PVT_MSGID
UBX-NAV2-PVT message ID.
Definition ubx.hpp:415
static constexpr uint8_t UBX_SEC_OSNMA_V3_GROUP1_BITFIELD1_AUTHNUM(const uint16_t bitfield1)
Definition ubx.hpp:2979
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_GLO
Definition ubx.hpp:2646
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_GPS
Definition ubx.hpp:2634
static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_SHORT
Definition ubx.hpp:1580
static constexpr double UBX_NAV_TIMEUTC_V0_TACC_SCALE
Definition ubx.hpp:2582
static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_SPARTN
Definition ubx.hpp:1363
static constexpr uint8_t UBX_NAV_PVT_V1_FLAGS3_LASTCORRECTIONAGE_10_TO_15_SEC
Definition ubx.hpp:2097
static constexpr uint8_t UBX_MGA_ACK_MSGID
UBX-MGA-ACK message ID.
Definition ubx.hpp:281
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLS_SBAS
Definition ubx.hpp:2635
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS2_CALIBSTATUS_CALIBRATED2
Definition ubx.hpp:1138
static constexpr uint8_t UBX_SIGID_QZSS_L1S
QZSS L1 S.
Definition ubx.hpp:722
static constexpr bool UBX_SEC_OSNMA_V3_GROUP1_BITFIELD1_AUTHSTATUS(const uint16_t bitfield1)
Definition ubx.hpp:2980
static constexpr uint8_t UBX_ESF_STATUS_V2_FUSIONMODE_DISABLED
Definition ubx.hpp:1128
static constexpr uint8_t UBX_ESF_STATUS_V2_SENSSTATUS1_USED
Definition ubx.hpp:1131
static constexpr double UBX_NAV_TIMETRUSTED_V1_INITACC_SCALE
Definition ubx.hpp:2370
const char * UBX_ESF_STATUS_V2_INITSTATUS1_WTINITSTATUS_STR(const uint8_t initStatus1)
Definition ubx.hpp:1103
static constexpr uint8_t UBX_NMEA_STANDARD_RMC_MSGID
UBX-NMEA-STANDARD_RMC message ID.
Definition ubx.hpp:527
static constexpr uint8_t UBX_NAV_RELPOSNED_V1_FLAGS_CARRSOLN_FLOAT
Definition ubx.hpp:2182
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_H
Definition ubx.hpp:1514
static constexpr double UBX_RXM_RAWX_V1_DOSTD_SCALE(const double doStd)
Definition ubx.hpp:2732
static constexpr const char * UBX_NAV_SIG_STRID
UBX-NAV-SIG message name.
Definition ubx.hpp:370
static constexpr const char * UBX_MON_HW3_STRID
UBX-MON-HW3 message name.
Definition ubx.hpp:306
static constexpr uint8_t UBX_MGA_INI_TIME_UTC_V0_VERSION
Definition ubx.hpp:1245
static constexpr uint8_t UBX_RTCM3_TYPE1095_MSGID
UBX-RTCM3-TYPE1095 message ID.
Definition ubx.hpp:585
static constexpr uint8_t UBX_MON_TEMP_MSGID
UBX-MON-TEMP message ID.
Definition ubx.hpp:323
static constexpr uint8_t UBX_MON_HW3_V0_PINMASK_PINBANK_D
Definition ubx.hpp:1510
static constexpr uint8_t UBX_NAV_COV_V0_VERSION
Definition ubx.hpp:1825
static constexpr uint8_t UBX_MON_COMMS_V0_PROTIDS_UBX
Definition ubx.hpp:1358
static constexpr uint8_t UBX_TIM_TP_V0_REFINFO_TIMEREFGNSS_UNKNOWN
Definition ubx.hpp:3103
static constexpr uint8_t UBX_SEC_OSNMA_V3_NMAHEADER_CPKS(const uint8_t nmaHeader)
Definition ubx.hpp:2887
static constexpr const char * UBX_NAV2_TIMEBDS_STRID
UBX-NAV2-TIMEBDS message name.
Definition ubx.hpp:430
static constexpr uint8_t UBX_ESF_RAW_MSGID
UBX-ESF-RAW message ID.
Definition ubx.hpp:249
static constexpr uint8_t UBX_NMEA_STANDARD_GNS_MSGID
UBX-NMEA-STANDARD_GNS message ID.
Definition ubx.hpp:511
static constexpr bool UBX_MON_HW3_V0_PINMASK_PIOIRQ(const uint16_t pinMask)
Definition ubx.hpp:1521
static constexpr const char * UBX_NAV_COV_STRID
UBX-NAV-COV message name.
Definition ubx.hpp:334
static constexpr double UBX_NAV_PVT_V1_LON_SCALE
Definition ubx.hpp:2114
static constexpr uint8_t UBX_MON_RF_V0_ANTSTATUS_DONTKNOW
Definition ubx.hpp:1578
static constexpr uint8_t UBX_SIGID_GAL_E6C
Galileo E6 C.
Definition ubx.hpp:707
static constexpr double UBX_NAV_PVT_V1_ITOW_SCALE
Definition ubx.hpp:2058
static constexpr uint8_t UBX_NAV_SIG_V0_QUALITYIND_SEARCH
Definition ubx.hpp:2288
static constexpr const char * UBX_MGA_STRID
UBX-MGA class name.
Definition ubx.hpp:203
static constexpr uint8_t UBX_RTCM3_TYPE1011_MSGID
UBX-RTCM3-TYPE1011 message ID.
Definition ubx.hpp:565
static constexpr uint8_t UBX_NAV_STATUS_V0_FLAGS2_CARRSOLN_FLOAT
Definition ubx.hpp:2427
static constexpr const char * UBX_RXM_RLM_STRID
UBX-RXM-RLM message name.
Definition ubx.hpp:462
static constexpr uint8_t UBX_SYNC_1
UBX frame sync char 1.
Definition ubx.hpp:64
static constexpr const char * UBX_NAV2_SLAS_STRID
UBX-NAV2-SLAS message name.
Definition ubx.hpp:424
static constexpr std::size_t UBX_HEAD_SIZE
Size of UBX frame header.
Definition ubx.hpp:63
static constexpr uint8_t UBX_NAV_SIG_V0_SIGFLAGS_HEALTH_UNKNO
Definition ubx.hpp:2304
static constexpr const char * UBX_ESF_STRID
UBX-ESF class name.
Definition ubx.hpp:197
static constexpr uint8_t UBX_NUM_GLO
R01-R32.
Definition ubx.hpp:674
static constexpr uint8_t UBX_MON_HW_V0_APOWER_ON
Definition ubx.hpp:1417
static constexpr uint8_t UBX_NAV_SOL_MSGID
UBX-NAV-SOL message ID.
Definition ubx.hpp:373
static constexpr uint8_t UBX_NAV_TIMETRUSTED_V1_VERSION
Definition ubx.hpp:2357
static constexpr const char * UBX_RTCM3_TYPE1124_STRID
UBX-RTCM3-TYPE1124 message name.
Definition ubx.hpp:590
static constexpr uint8_t UBX_NUM_BDS
B01-B63 ("Cxx" in RINEX).
Definition ubx.hpp:672
static constexpr std::size_t UBX_NAV_EELL_V0_SIZE
Definition ubx.hpp:1880
static constexpr const char * UBX_MGA_QZSS_STRID
UBX-MGA-QZSS message name.
Definition ubx.hpp:296
static constexpr const char * UBX_ACK_ACK_STRID
UBX-ACK-ACK message name.
Definition ubx.hpp:228
static constexpr const char * UBX_RXM_COR_STRID
UBX-RXM-COR message name.
Definition ubx.hpp:450
static constexpr uint8_t UBX_SEC_OSNMA_V3_GENERALANDTIMING_PUBKEYSRC_SATELLITES
Definition ubx.hpp:2961
static constexpr uint8_t UBX_FIRST_NAVIC
N01.
Definition ubx.hpp:682
static constexpr uint8_t UBX_ESF_STATUS_V2_FAULTS_BADMEAS
Definition ubx.hpp:1145
static constexpr double UBX_NAV_EELL_V0_ELLIPSEMAJOR_SCALE
Definition ubx.hpp:1883
static constexpr const char * UBX_NAV_TIMEBDS_STRID
UBX-NAV-TIMEBDS message name.
Definition ubx.hpp:380
static constexpr bool UBX_MON_HW3_V0_PINMASK_VALUE(const uint16_t pinMask)
Definition ubx.hpp:1519
static constexpr const char * UBX_NAV2_COV_STRID
UBX-NAV2-COV message name.
Definition ubx.hpp:404
static constexpr const char * UBX_TIM_STRID
UBX-TIM class name.
Definition ubx.hpp:215
static constexpr bool UBX_MGA_INI_TIME_GNSS_V0_REF_LAST(const uint8_t ref)
Definition ubx.hpp:1295
static constexpr uint8_t UBX_NAV_SIG_V0_CORRSOURCE_SPARTN
Definition ubx.hpp:2322
static constexpr uint8_t UBX_NAV_RELPOSNED_V1_VERSION
Definition ubx.hpp:2165
static constexpr uint8_t UBX_NAV2_TIMEGAL_MSGID
UBX-NAV2-TIMEGAL message ID.
Definition ubx.hpp:431
static constexpr uint8_t UBX_NAV2_SIG_MSGID
UBX-NAV2-SIG message ID.
Definition ubx.hpp:421
static constexpr const char * UBX_NAV2_SIG_STRID
UBX-NAV2-SIG message name.
Definition ubx.hpp:422
static constexpr uint8_t UBX_NAV_RESETODO_MSGID
UBX-NAV-RESETODO message ID.
Definition ubx.hpp:363
static constexpr uint8_t UBX_NAV_TIMELS_V0_SRCOFCURRLSCHANGE_SBAS
Definition ubx.hpp:2643
constexpr const char * IxToStr(std::size_t ix, Args... args)
Get string in list of strings by index.
Definition types.hpp:143
Fixposition SDK: Common library.
Definition doc.hpp:21
Fixposition SDK.
UBX-ACK-ACK (version 0, output) payload.
Definition ubx.hpp:754
uint8_t msgId
Message ID of ack'ed message.
Definition ubx.hpp:756
uint8_t clsId
Class ID of ack'ed message.
Definition ubx.hpp:755
UBX-ACK-NCK (version 0, output) payload.
Definition ubx.hpp:772
uint8_t msgId
Message ID of not-ack'ed message.
Definition ubx.hpp:774
uint8_t clsId
Class ID of not-ack'ed message.
Definition ubx.hpp:773
UBX-CFG-CFG (version 0, command) message head.
Definition ubx.hpp:983
UBX-CFG-CFG (version 0, command) message optional group.
Definition ubx.hpp:993
UBX-CFG-RST (version 0, command) message payload.
Definition ubx.hpp:940
uint16_t navBbrMask
BBR sections to clear.
Definition ubx.hpp:941
UBX-CFG-VALDEL (version 1, input) message payload header.
Definition ubx.hpp:905
uint8_t reserved
Reserved (set to 0x00).
Definition ubx.hpp:909
uint8_t version
Message version (UBX_CFG_VALGET_V1_VERSION).
Definition ubx.hpp:906
UBX-CFG-VALGET (version 0, poll) message payload header.
Definition ubx.hpp:848
uint8_t version
Message version (UBX_CFG_VALGET_V0_VERSION).
Definition ubx.hpp:849
uint16_t position
Number of values to skip in result set.
Definition ubx.hpp:851
UBX-CFG-VALGET (version 1, output) message payload header.
Definition ubx.hpp:858
uint16_t position
Number of values to skip in result set.
Definition ubx.hpp:861
uint8_t version
Message version (UBX_CFG_VALGET_V1_VERSION).
Definition ubx.hpp:859
UBX-CFG-VALSET (version 0, input) message payload header.
Definition ubx.hpp:791
uint8_t reserved[2]
Reserved (set to 0x00).
Definition ubx.hpp:794
uint8_t version
Message version (UBX_CFG_VALSET_V1_VERSION).
Definition ubx.hpp:792
UBX-CFG-VALSET (version 1, input) message payload header.
Definition ubx.hpp:801
uint8_t version
Message version (UBX_CFG_VALSET_V1_VERSION).
Definition ubx.hpp:802
uint8_t reserved
Reserved (set to 0x00).
Definition ubx.hpp:805
UBX-ESF-MEAS (version 0, input and output) message head.
Definition ubx.hpp:1021
UBX-ESF-MEAS (version 0, input and output) data.
Definition ubx.hpp:1031
UBX-ESF-MEAS (version 0, input and output) timetag.
Definition ubx.hpp:1039
UBX-ESF-STATUS (version 0, output) message head.
Definition ubx.hpp:1071
UBX-ESF-STATUS (version 0, output) per-sensor status.
Definition ubx.hpp:1086
UBX-MGA-GAL-OSNMA_MERKLE (version 0, input) payload.
Definition ubx.hpp:1192
UBX-MGA-GAL-OSNMA_PUBKEY (version 0, input) payload.
Definition ubx.hpp:1160
UBX-MGA-INI-TIME_GNSS (version 0, input) payload.
Definition ubx.hpp:1267
UBX-MGA-INI-TIME_UTC (version 0, input) payload.
Definition ubx.hpp:1222
UBX-MON-COMMS (version 0, output) payload head.
Definition ubx.hpp:1308
UBX-MON-COMMS (version 0, output) payload repeated group.
Definition ubx.hpp:1320
UBX-MON-HW (version 0, output) payload.
Definition ubx.hpp:1434
UBX-MON-HW3 (version 0, output) payload.
Definition ubx.hpp:1471
UBX-MON-HW3 (version 0, output) payload.
Definition ubx.hpp:1483
UBX-MON-HW (version 0, output).
Definition ubx.hpp:1377
UBX-MON-RF (version 0, output) payload head.
Definition ubx.hpp:1535
UBX-MON-RF (version 0, output) payload repeated group.
Definition ubx.hpp:1546
UBX-MON-RF (version 0, output) payload head.
Definition ubx.hpp:1602
UBX-MON-RF (version 0, output) payload repeated group.
Definition ubx.hpp:1614
uint8_t spectrum[UBX_MON_SPAN_V0_NUM_BINS]
Definition ubx.hpp:1615
UBX-MON-SYS (version 1, output) payload.
Definition ubx.hpp:1643
UBX-MON-TEMP (version 0, output) message payload (no docu available, but u-center shows it....
Definition ubx.hpp:1690
UBX-MON-VER (version 0, output) message payload header.
Definition ubx.hpp:1714
UBX-MON-VER (version 0, output) optional repeated field.
Definition ubx.hpp:1723
UBX-NAV-ATT (version 0, output) payload.
Definition ubx.hpp:1742
UBX-NAV-COV (version 0, output) payload head.
Definition ubx.hpp:1800
UBX-NAV-EELL (version 0, output) payload head.
Definition ubx.hpp:1866
UBX-NAV-EOE (version 0, output) payload.
Definition ubx.hpp:1896
UBX-NAV-HPPOSECEF (version 0, output) payload.
Definition ubx.hpp:1916
UBX-NAV-HPPOSLLH (version 0) payload.
Definition ubx.hpp:1952
UBX-NAV-POSECEF (version 0, output) payload.
Definition ubx.hpp:1993
UBX-NAV-PVT (version 1, output) payload.
Definition ubx.hpp:2018
UBX-NAV-RELPOSNED (version 1, output) payload.
Definition ubx.hpp:2137
UBX-NAV-SAT (version 1, output) payload head.
Definition ubx.hpp:2200
UBX-NAV-SAT (version 1, output) payload repeated group.
Definition ubx.hpp:2211
UBX-NAV-SIG (version 0, output) payload head.
Definition ubx.hpp:2254
UBX-NAV-SIG (version 0, output) payload repeated group.
Definition ubx.hpp:2265
UBX-NAV-TIMETRUSTED (version 1, output) payload.
Definition ubx.hpp:2336
UBX-RXM-RAWX (version 1, output) payload head.
Definition ubx.hpp:2688
UBX-RXM-RAWX (version 1, output) payload repeated group.
Definition ubx.hpp:2702
UBX-RXM-RTCM (version 2, output).
Definition ubx.hpp:2753
UBX-RXM-SFRBX (version 2, output) payload head.
Definition ubx.hpp:2784
uint8_t sigId
interface description says "reserved", but u-center says "sigId"...
Definition ubx.hpp:2787
UBX-RXM-SFRBX (version 2, output) payload repeated group.
Definition ubx.hpp:2799
UBX-RXM-SPARTN (version 1, output).
Definition ubx.hpp:2822
UBX-SEC-OSNMA (version 3, output) payload head.
Definition ubx.hpp:2850
UBX-SEC-OSNMA (version 3, output) payload repeated group (per authenticated SV).
Definition ubx.hpp:2867
UBX class/message lookup table entry.
Definition ubx.hpp:608
uint8_t cls_id_
UBX class ID.
Definition ubx.hpp:609
uint8_t msg_id_
UBX message ID.
Definition ubx.hpp:610
const char * name_
UBX name.
Definition ubx.hpp:611
Fixposition SDK: Common types and type helpers.
#define UBX_PACKED
Message struct that must be packed.
Definition ubx.hpp:59