Zephyr API Documentation 4.5.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
protocol.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Croxel Inc.
3 * Copyright (c) 2025 CogniPilot Foundation
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef ZEPHYR_INCLUDE_MODEM_UBX_PROTOCOL_H_
9#define ZEPHYR_INCLUDE_MODEM_UBX_PROTOCOL_H_
10
11#include <stdint.h>
14
15#define UBX_FRAME_HEADER_SZ 6
16#define UBX_FRAME_FOOTER_SZ 2
17#define UBX_FRAME_SZ_WITHOUT_PAYLOAD (UBX_FRAME_HEADER_SZ + UBX_FRAME_FOOTER_SZ)
18#define UBX_FRAME_SZ(payload_size) (payload_size + UBX_FRAME_SZ_WITHOUT_PAYLOAD)
19
20#define UBX_PREAMBLE_SYNC_CHAR_1 0xB5
21#define UBX_PREAMBLE_SYNC_CHAR_2 0x62
22
23#define UBX_FRAME_PREAMBLE_SYNC_CHAR_1_IDX 0
24#define UBX_FRAME_PREAMBLE_SYNC_CHAR_2_IDX 1
25#define UBX_FRAME_MSG_CLASS_IDX 2
26
27#define UBX_PAYLOAD_SZ_MAX 512
28#define UBX_FRAME_SZ_MAX UBX_FRAME_SZ(UBX_PAYLOAD_SZ_MAX)
29
38
47
49 UBX_CLASS_ID_NAV = 0x01, /* Navigation Results Messages */
50 UBX_CLASS_ID_RXM = 0x02, /* Receiver Manager Messages */
51 UBX_CLASS_ID_INF = 0x04, /* Information Messages */
52 UBX_CLASS_ID_ACK = 0x05, /* Ack/Nak Messages */
53 UBX_CLASS_ID_CFG = 0x06, /* Configuration Input Messages */
54 UBX_CLASS_ID_UPD = 0x09, /* Firmware Update Messages */
55 UBX_CLASS_ID_MON = 0x0A, /* Monitoring Messages */
56 UBX_CLASS_ID_TIM = 0x0D, /* Timing Messages */
57 UBX_CLASS_ID_MGA = 0x13, /* Multiple GNSS Assistance Messages */
58 UBX_CLASS_ID_LOG = 0x21, /* Logging Messages */
59 UBX_CLASS_ID_SEC = 0x27, /* Security Feature Messages */
60 UBX_CLASS_ID_NMEA_STD = 0xF0, /* Note: Only used to configure message rate */
61 UBX_CLASS_ID_NMEA_PUBX = 0xF1, /* Note: Only used to configure message rate */
62};
63
68
77
78#define UBX_NAV_PVT_VALID_DATE BIT(0)
79#define UBX_NAV_PVT_VALID_TIME BIT(1)
80#define UBX_NAV_PVT_VALID_UTC_TOD BIT(2)
81#define UBX_NAV_PVT_VALID_MAGN BIT(3)
82
83#define UBX_NAV_PVT_FLAGS_GNSS_FIX_OK BIT(0)
84#define UBX_NAV_PVT_FLAGS_GNSS_CARR_SOLN_FLOATING BIT(6)
85#define UBX_NAV_PVT_FLAGS_GNSS_CARR_SOLN_FIXED BIT(7)
86
87#define UBX_NAV_PVT_FLAGS3_INVALID_LLH BIT(0)
88
90 struct {
101 } __packed time;
105 struct {
107 int32_t longitude; /* Longitude. Degrees. scaling: 1e-7 */
108 int32_t latitude; /* Latitude. Degrees. scaling: 1e-7 */
109 int32_t height; /* Height above ellipsoid. mm */
110 int32_t hmsl; /* Height above mean sea level. mm */
111 uint32_t horiz_acc; /* Horizontal accuracy estimate. mm */
112 uint32_t vert_acc; /* Vertical accuracy estimate. mm */
113 int32_t vel_north; /* NED north velocity. mm/s */
114 int32_t vel_east; /* NED east velocity. mm/s */
115 int32_t vel_down; /* NED down velocity. mm/s */
116 int32_t ground_speed; /* Ground Speed (2D). mm/s */
117 int32_t head_motion; /* Heading of Motion (2D). Degrees. scaling: 1e-5 */
118 uint32_t speed_acc; /* Speed accuracy estimated. mm/s */
119 uint32_t head_acc; /* Heading accuracy estimate (both motion and
120 * vehicle). Degrees. scaling: 1e-5.
121 */
125 int32_t head_vehicle; /* Heading of vehicle (2D). Degrees. Valid if
126 * flags.head_vehicle_valid is set.
127 */
128 int16_t mag_decl; /* Magnetic declination. Degrees. */
129 uint16_t magacc; /* Magnetic declination accuracy. Degrees. scaling: 1e-2 */
130 } __packed nav;
131} __packed;
132
138
147
148#define UBX_NAV_SAT_FLAGS_SV_USED BIT(3)
149#define UBX_NAV_SAT_FLAGS_RTCM_CORR_USED BIT(17)
150
153 uint8_t version; /* Message version. */
157 uint8_t gnss_id; /* See ubx_gnss_id */
159 uint8_t cno; /* Carrier-to-noise ratio. dBHz */
160 int8_t elevation; /* Elevation (range: +/- 90). Degrees */
161 int16_t azimuth; /* Azimuth (range: 0 - 360). Degrees */
162 int16_t pseu_res; /* Pseudorange Residual. Meters */
164 } sat[];
165};
166
171
181
186
187struct ubx_ack {
188 uint8_t class;
190};
191
192#define UBX_GNSS_SELECTION_GPS BIT(0)
193#define UBX_GNSS_SELECTION_GLONASS BIT(1)
194#define UBX_GNSS_SELECTION_BEIDOU BIT(2)
195#define UBX_GNSS_SELECTION_GALILEO BIT(3)
196
207
214
216 UBX_CFG_PRT_PORT_MODE_CHAR_LEN_5 = 0, /* Not supported */
217 UBX_CFG_PRT_PORT_MODE_CHAR_LEN_6 = 1, /* Not supported */
218 UBX_CFG_PRT_PORT_MODE_CHAR_LEN_7 = 2, /* Supported only with parity */
220};
221
227
234
235#define UBX_CFG_PRT_MODE_CHAR_LEN(val) (((val) & BIT_MASK(2)) << 6)
236#define UBX_CFG_PRT_MODE_PARITY(val) (((val) & BIT_MASK(3)) << 9)
237#define UBX_CFG_PRT_MODE_STOP_BITS(val) (((val) & BIT_MASK(2)) << 12)
238
239#define UBX_CFG_PRT_PROTO_MASK_UBX BIT(0)
240#define UBX_CFG_PRT_PROTO_MASK_NMEA BIT(1)
241#define UBX_CFG_PRT_PROTO_MASK_RTCM3 BIT(5)
242
254
255#define UBX_CFG_NAV5_APPLY_DYN BIT(0)
256#define UBX_CFG_NAV5_APPLY_FIX_MODE BIT(2)
257
260 uint8_t dyn_model; /* Dynamic platform model. See ubx_dyn_model */
261 uint8_t fix_mode; /* Position fixing mode. See ubx_fix_mode */
262 int32_t fixed_alt; /* Fixed altitude for 2D fix mode. Meters */
263 uint32_t fixed_alt_var; /* Variance for Fixed altitude in 2D mode. Sq. meters */
264 int8_t min_elev; /* Minimum Elevation to use a GNSS satellite in Navigation. Degrees */
265 uint8_t dr_limit; /* Reserved */
266 uint16_t p_dop; /* Position DOP mask */
267 uint16_t t_dop; /* Time DOP mask */
268 uint16_t p_acc; /* Position accuracy mask. Meters */
269 uint16_t t_acc; /* Time accuracy mask. Meters */
270 uint8_t static_hold_thresh; /* Static hold threshold. cm/s */
271 uint8_t dgnss_timeout; /* DGNSS timeout. Seconds */
272 uint8_t cno_thresh_num_svs; /* Number of satellites required above cno_thresh */
273 uint8_t cno_thresh; /* C/N0 threshold for GNSS signals. dbHz */
275 uint16_t static_hold_max_dist; /* Static hold distance threshold. Meters */
276 uint8_t utc_standard; /* UTC standard to be used. See ubx_utc_standard */
278} __packed;
279
285
292
298
304
309
311 uint8_t ver; /* See ubx_cfg_val_ver */
314} __packed;
315
321
327
333
355
363
369
371 char sw_ver[30];
372 char hw_ver[10];
373};
374
375static inline uint16_t ubx_calc_checksum(const struct ubx_frame *frame, size_t len)
376{
377 uint8_t ck_a = 0;
378 uint8_t ck_b = 0;
379 const uint8_t *data = (const uint8_t *)frame;
380
382 if (len != UBX_FRAME_SZ(frame->payload_size)) {
383 return 0xFFFF;
384 }
385
386 for (int i = UBX_FRAME_MSG_CLASS_IDX; i < (UBX_FRAME_SZ(frame->payload_size) - 2); i++) {
387 ck_a = ck_a + data[i];
388 ck_b = ck_b + ck_a;
389 }
390
391 return ((ck_a & 0xFF) | ((ck_b & 0xFF) << 8));
392}
393
394static inline int ubx_frame_encode(uint8_t class, uint8_t id, const uint8_t *payload,
395 size_t payload_len, uint8_t *buf, size_t buf_len)
396{
397 if (buf_len < UBX_FRAME_SZ(payload_len)) {
398 return -EINVAL;
399 }
400
401 struct ubx_frame *frame = (struct ubx_frame *)buf;
402
405 frame->class = class;
406 frame->id = id;
407 frame->payload_size = payload_len;
408 memcpy(frame->payload_and_checksum, payload, payload_len);
409
410 uint16_t checksum = ubx_calc_checksum(frame, UBX_FRAME_SZ(payload_len));
411
412 frame->payload_and_checksum[payload_len] = checksum & 0xFF;
413 frame->payload_and_checksum[payload_len + 1] = (checksum >> 8) & 0xFF;
414
415 return UBX_FRAME_SZ(payload_len);
416}
417
418#define UBX_FRAME_DEFINE(_name, _frame) const static struct ubx_frame _name = _frame
419
420#define UBX_FRAME_ARRAY_DEFINE(_name, ...) const struct ubx_frame *_name[] = {__VA_ARGS__};
421
422#define UBX_FRAME_ACK_INITIALIZER(_class_id, _msg_id) \
423 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_ACK, UBX_MSG_ID_ACK, _class_id, _msg_id)
424
425#define UBX_FRAME_NAK_INITIALIZER(_class_id, _msg_id) \
426 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_ACK, UBX_MSG_ID_NAK, _class_id, _msg_id)
427
428#define UBX_FRAME_CFG_RST_INITIALIZER(_start_mode, _reset_mode) \
429 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_CFG, UBX_MSG_ID_CFG_RST, (_start_mode & 0xFF), \
430 ((_start_mode >> 8) & 0xFF), _reset_mode, 0)
431
432#define UBX_FRAME_CFG_RATE_INITIALIZER(_meas_rate_ms, _nav_rate, _time_ref) \
433 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_CFG, UBX_MSG_ID_CFG_RATE, \
434 (_meas_rate_ms & 0xFF), ((_meas_rate_ms >> 8) & 0xFF), \
435 (_nav_rate & 0xFF), ((_nav_rate >> 8) & 0xFF), \
436 (_time_ref & 0xFF), ((_time_ref >> 8) & 0xFF))
437
438#define UBX_FRAME_CFG_MSG_RATE_INITIALIZER(_class_id, _msg_id, _rate) \
439 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_CFG, UBX_MSG_ID_CFG_MSG, _class_id, _msg_id, \
440 _rate)
441
442#define UBX_FRAME_CFG_VAL_SET_U8_INITIALIZER(_key, _value) \
443 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_CFG, UBX_MSG_ID_CFG_VAL_SET, 0x00, 0x01, 0x00, \
444 0x00, ((_key) & 0xFF), (((_key) >> 8) & 0xFF), \
445 (((_key) >> 16) & 0xFF), (((_key) >> 24) & 0xFF), \
446 ((_value) & 0xFF))
447
448#define UBX_FRAME_CFG_VAL_SET_U16_INITIALIZER(_key, _value) \
449 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_CFG, UBX_MSG_ID_CFG_VAL_SET, 0x00, 0x01, 0x00, \
450 0x00, ((_key) & 0xFF), (((_key) >> 8) & 0xFF), \
451 (((_key) >> 16) & 0xFF), (((_key) >> 24) & 0xFF), \
452 ((_value) & 0xFF), (((_value) >> 8) & 0xFF))
453
454#define UBX_FRAME_CFG_VAL_SET_U32_INITIALIZER(_key, _value) \
455 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_CFG, UBX_MSG_ID_CFG_VAL_SET, 0x00, 0x01, 0x00, \
456 0x00, ((_key) & 0xFF), (((_key) >> 8) & 0xFF), \
457 (((_key) >> 16) & 0xFF), (((_key) >> 24) & 0xFF), \
458 ((_value) & 0xFF), (((_value) >> 8) & 0xFF), \
459 (((_value) >> 16) & 0xFF), (((_value) >> 24) & 0xFF))
460
461#define UBX_FRAME_CFG_VAL_GET_INITIALIZER(_key) \
462 UBX_FRAME_INITIALIZER_PAYLOAD(UBX_CLASS_ID_CFG, UBX_MSG_ID_CFG_VAL_GET, 0x00, 0x00, 0x00, \
463 0x00, ((_key) & 0xFF), (((_key) >> 8) & 0xFF), \
464 (((_key) >> 16) & 0xFF), (((_key) >> 24) & 0xFF))
465
466#define UBX_FRAME_INITIALIZER_PAYLOAD(_class_id, _msg_id, ...) \
467 _UBX_FRAME_INITIALIZER_PAYLOAD(_class_id, _msg_id, __VA_ARGS__)
468
469#define _UBX_FRAME_INITIALIZER_PAYLOAD(_class_id, _msg_id, ...) \
470 { \
471 .preamble_sync_char_1 = UBX_PREAMBLE_SYNC_CHAR_1, \
472 .preamble_sync_char_2 = UBX_PREAMBLE_SYNC_CHAR_2, \
473 .class = _class_id, \
474 .id = _msg_id, \
475 .payload_size = (NUM_VA_ARGS(__VA_ARGS__)) & 0xFFFF, \
476 .payload_and_checksum = \
477 { \
478 __VA_ARGS__, \
479 UBX_CSUM(_class_id, _msg_id, ((NUM_VA_ARGS(__VA_ARGS__)) & 0xFF), \
480 (((NUM_VA_ARGS(__VA_ARGS__)) >> 8) & 0xFF), __VA_ARGS__), \
481 }, \
482 }
483
484#define UBX_FRAME_GET_INITIALIZER(_class_id, _msg_id) \
485 { \
486 .preamble_sync_char_1 = UBX_PREAMBLE_SYNC_CHAR_1, \
487 .preamble_sync_char_2 = UBX_PREAMBLE_SYNC_CHAR_2, \
488 .class = _class_id, \
489 .id = _msg_id, \
490 .payload_size = 0, \
491 .payload_and_checksum = \
492 { \
493 UBX_CSUM(_class_id, _msg_id, 0, 0), \
494 }, \
495 }
496
497#endif /* ZEPHYR_INCLUDE_MODEM_UBX_PROTOCOL_H_ */
#define EINVAL
Invalid argument.
Definition errno.h:61
time_t time(time_t *tloc)
ubx_msg_id_mon
Definition protocol.h:182
@ UBX_MSG_ID_MON_VER
Definition protocol.h:183
@ UBX_MSG_ID_MON_GNSS
Definition protocol.h:184
#define UBX_PREAMBLE_SYNC_CHAR_1
Definition protocol.h:20
ubx_nav_fix_type
Definition protocol.h:69
@ UBX_NAV_FIX_TYPE_3D
Definition protocol.h:73
@ UBX_NAV_FIX_TYPE_TIME_ONLY
Definition protocol.h:75
@ UBX_NAV_FIX_TYPE_GNSS_DR_COMBINED
Definition protocol.h:74
@ UBX_NAV_FIX_TYPE_NO_FIX
Definition protocol.h:70
@ UBX_NAV_FIX_TYPE_DR
Definition protocol.h:71
@ UBX_NAV_FIX_TYPE_2D
Definition protocol.h:72
ubx_msg_id_ack
Definition protocol.h:167
@ UBX_MSG_ID_ACK
Definition protocol.h:168
@ UBX_MSG_ID_NAK
Definition protocol.h:169
#define UBX_FRAME_MSG_CLASS_IDX
Definition protocol.h:25
ubx_cfg_parity
Definition protocol.h:222
@ UBX_CFG_PRT_PORT_MODE_PARITY_EVEN
Definition protocol.h:223
@ UBX_CFG_PRT_PORT_MODE_PARITY_NONE
Definition protocol.h:225
@ UBX_CFG_PRT_PORT_MODE_PARITY_ODD
Definition protocol.h:224
ubx_msg_id_cfg
Definition protocol.h:172
@ UBX_MSG_ID_CFG_NAV5
Definition protocol.h:177
@ UBX_MSG_ID_CFG_VAL_SET
Definition protocol.h:178
@ UBX_MSG_ID_CFG_PRT
Definition protocol.h:173
@ UBX_MSG_ID_CFG_RATE
Definition protocol.h:176
@ UBX_MSG_ID_CFG_VAL_GET
Definition protocol.h:179
@ UBX_MSG_ID_CFG_MSG
Definition protocol.h:174
@ UBX_MSG_ID_CFG_RST
Definition protocol.h:175
ubx_cfg_rst_start_mode
Definition protocol.h:280
@ UBX_CFG_RST_WARM_START
Definition protocol.h:282
@ UBX_CFG_RST_HOT_START
Definition protocol.h:281
@ UBX_CFG_RST_COLD_START
Definition protocol.h:283
static uint16_t ubx_calc_checksum(const struct ubx_frame *frame, size_t len)
Definition protocol.h:375
#define UBX_FRAME_SZ(payload_size)
Definition protocol.h:18
ubx_msg_id_nmea_pubx
Definition protocol.h:356
@ UBX_MSG_ID_NMEA_PUBX_CONFIG
Definition protocol.h:357
@ UBX_MSG_ID_NMEA_PUBX_POSITION
Definition protocol.h:358
@ UBX_MSG_ID_NMEA_PUBX_SVSTATUS
Definition protocol.h:360
@ UBX_MSG_ID_NMEA_PUBX_TIME
Definition protocol.h:361
@ UBX_MSG_ID_NMEA_PUBX_RATE
Definition protocol.h:359
ubx_cfg_rst_mode
Definition protocol.h:286
@ UBX_CFG_RST_MODE_GNSS_STOP
Definition protocol.h:289
@ UBX_CFG_RST_MODE_SW
Definition protocol.h:288
@ UBX_CFG_RST_MODE_HW
Definition protocol.h:287
@ UBX_CFG_RST_MODE_GNSS_START
Definition protocol.h:290
ubx_gnss_id
Definition protocol.h:139
@ UBX_GNSS_ID_QZSS
Definition protocol.h:144
@ UBX_GNSS_ID_SBAS
Definition protocol.h:141
@ UBX_GNSS_ID_GLONASS
Definition protocol.h:145
@ UBX_GNSS_ID_GALILEO
Definition protocol.h:142
@ UBX_GNSS_ID_BEIDOU
Definition protocol.h:143
@ UBX_GNSS_ID_GPS
Definition protocol.h:140
ubx_cfg_char_len
Definition protocol.h:215
@ UBX_CFG_PRT_PORT_MODE_CHAR_LEN_5
Definition protocol.h:216
@ UBX_CFG_PRT_PORT_MODE_CHAR_LEN_8
Definition protocol.h:219
@ UBX_CFG_PRT_PORT_MODE_CHAR_LEN_7
Definition protocol.h:218
@ UBX_CFG_PRT_PORT_MODE_CHAR_LEN_6
Definition protocol.h:217
ubx_msg_id_nav
Definition protocol.h:64
@ UBX_MSG_ID_NAV_PVT
Definition protocol.h:65
@ UBX_MSG_ID_NAV_SAT
Definition protocol.h:66
ubx_cfg_stop_bits
Definition protocol.h:228
@ UBX_CFG_PRT_PORT_MODE_STOP_BITS_1_5
Definition protocol.h:230
@ UBX_CFG_PRT_PORT_MODE_STOP_BITS_0_5
Definition protocol.h:232
@ UBX_CFG_PRT_PORT_MODE_STOP_BITS_2
Definition protocol.h:231
@ UBX_CFG_PRT_PORT_MODE_STOP_BITS_1
Definition protocol.h:229
ubx_msg_id_nmea_std
Definition protocol.h:334
@ UBX_MSG_ID_NMEA_STD_GGA
Definition protocol.h:338
@ UBX_MSG_ID_NMEA_STD_GLQ
Definition protocol.h:340
@ UBX_MSG_ID_NMEA_STD_GSV
Definition protocol.h:347
@ UBX_MSG_ID_NMEA_STD_GPQ
Definition protocol.h:343
@ UBX_MSG_ID_NMEA_STD_GBQ
Definition protocol.h:336
@ UBX_MSG_ID_NMEA_STD_VLW
Definition protocol.h:351
@ UBX_MSG_ID_NMEA_STD_VTG
Definition protocol.h:352
@ UBX_MSG_ID_NMEA_STD_GLL
Definition protocol.h:339
@ UBX_MSG_ID_NMEA_STD_GRS
Definition protocol.h:344
@ UBX_MSG_ID_NMEA_STD_RMC
Definition protocol.h:348
@ UBX_MSG_ID_NMEA_STD_THS
Definition protocol.h:349
@ UBX_MSG_ID_NMEA_STD_GST
Definition protocol.h:346
@ UBX_MSG_ID_NMEA_STD_GNQ
Definition protocol.h:341
@ UBX_MSG_ID_NMEA_STD_DTM
Definition protocol.h:335
@ UBX_MSG_ID_NMEA_STD_TXT
Definition protocol.h:350
@ UBX_MSG_ID_NMEA_STD_GSA
Definition protocol.h:345
@ UBX_MSG_ID_NMEA_STD_ZDA
Definition protocol.h:353
@ UBX_MSG_ID_NMEA_STD_GBS
Definition protocol.h:337
@ UBX_MSG_ID_NMEA_STD_GNS
Definition protocol.h:342
static int ubx_frame_encode(uint8_t class, uint8_t id, const uint8_t *payload, size_t payload_len, uint8_t *buf, size_t buf_len)
Definition protocol.h:394
ubx_class_id
Definition protocol.h:48
@ UBX_CLASS_ID_NMEA_PUBX
Definition protocol.h:61
@ UBX_CLASS_ID_LOG
Definition protocol.h:58
@ UBX_CLASS_ID_MGA
Definition protocol.h:57
@ UBX_CLASS_ID_RXM
Definition protocol.h:50
@ UBX_CLASS_ID_SEC
Definition protocol.h:59
@ UBX_CLASS_ID_NMEA_STD
Definition protocol.h:60
@ UBX_CLASS_ID_INF
Definition protocol.h:51
@ UBX_CLASS_ID_TIM
Definition protocol.h:56
@ UBX_CLASS_ID_NAV
Definition protocol.h:49
@ UBX_CLASS_ID_UPD
Definition protocol.h:54
@ UBX_CLASS_ID_MON
Definition protocol.h:55
@ UBX_CLASS_ID_ACK
Definition protocol.h:52
@ UBX_CLASS_ID_CFG
Definition protocol.h:53
ubx_cfg_val_ver
Definition protocol.h:305
@ UBX_CFG_VAL_VER_SIMPLE
Definition protocol.h:306
@ UBX_CFG_VAL_VER_TRANSACTION
Definition protocol.h:307
#define UBX_PREAMBLE_SYNC_CHAR_2
Definition protocol.h:21
ubx_cfg_port_id
Definition protocol.h:208
@ UBX_CFG_PORT_ID_USB
Definition protocol.h:211
@ UBX_CFG_PORT_ID_DDC
Definition protocol.h:209
@ UBX_CFG_PORT_ID_SPI
Definition protocol.h:212
@ UBX_CFG_PORT_ID_UART
Definition protocol.h:210
ubx_nav_sat_health
Definition protocol.h:133
@ UBX_NAV_SAT_HEALTH_UNKNOWN
Definition protocol.h:134
@ UBX_NAV_SAT_HEALTH_HEALTHY
Definition protocol.h:135
@ UBX_NAV_SAT_HEALTH_UNHEALTHY
Definition protocol.h:136
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__INT32_TYPE__ int32_t
Definition stdint.h:74
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
__INT8_TYPE__ int8_t
Definition stdint.h:72
__INT16_TYPE__ int16_t
Definition stdint.h:73
void * memcpy(void *ZRESTRICT d, const void *ZRESTRICT s, size_t n)
Definition protocol.h:187
uint8_t id
Definition protocol.h:189
Definition protocol.h:364
uint8_t rate
Definition protocol.h:367
uint8_t id
Definition protocol.h:366
Definition protocol.h:258
uint16_t p_acc
Definition protocol.h:268
int8_t min_elev
Definition protocol.h:264
uint8_t dgnss_timeout
Definition protocol.h:271
uint16_t t_dop
Definition protocol.h:267
uint16_t apply
Definition protocol.h:259
uint8_t static_hold_thresh
Definition protocol.h:270
uint16_t static_hold_max_dist
Definition protocol.h:275
uint8_t cno_thresh_num_svs
Definition protocol.h:272
uint8_t dyn_model
Definition protocol.h:260
uint16_t p_dop
Definition protocol.h:266
uint8_t fix_mode
Definition protocol.h:261
uint8_t reserved1[2]
Definition protocol.h:274
uint32_t fixed_alt_var
Definition protocol.h:263
uint8_t cno_thresh
Definition protocol.h:273
uint8_t reserved2[5]
Definition protocol.h:277
uint8_t dr_limit
Definition protocol.h:265
uint16_t t_acc
Definition protocol.h:269
uint8_t utc_standard
Definition protocol.h:276
int32_t fixed_alt
Definition protocol.h:262
Definition protocol.h:243
uint16_t rx_ready_pin
Definition protocol.h:246
uint16_t out_proto_mask
Definition protocol.h:250
uint32_t mode
Definition protocol.h:247
uint16_t flags
Definition protocol.h:251
uint16_t in_proto_mask
Definition protocol.h:249
uint8_t reserved1
Definition protocol.h:245
uint32_t baudrate
Definition protocol.h:248
uint16_t reserved2
Definition protocol.h:252
uint8_t port_id
Definition protocol.h:244
Definition protocol.h:299
uint16_t time_ref
Definition protocol.h:302
uint16_t nav_rate
Definition protocol.h:301
uint16_t meas_rate_ms
Definition protocol.h:300
Definition protocol.h:293
uint8_t reset_mode
Definition protocol.h:295
uint16_t nav_bbr_mask
Definition protocol.h:294
uint8_t reserved
Definition protocol.h:296
Definition protocol.h:310
uint8_t ver
Definition protocol.h:311
uint16_t position
Definition protocol.h:313
uint8_t layer
Definition protocol.h:312
Definition protocol.h:322
struct ubx_cfg_val_hdr hdr
Definition protocol.h:323
uint16_t value
Definition protocol.h:325
uint32_t key
Definition protocol.h:324
Definition protocol.h:328
uint32_t value
Definition protocol.h:331
uint32_t key
Definition protocol.h:330
struct ubx_cfg_val_hdr hdr
Definition protocol.h:329
Definition protocol.h:316
uint32_t key
Definition protocol.h:318
uint8_t value
Definition protocol.h:319
struct ubx_cfg_val_hdr hdr
Definition protocol.h:317
Definition protocol.h:39
uint16_t len
Definition protocol.h:44
struct ubx_frame_match::@352213364356211272240131006112257113241046164202 payload
uint8_t id
Definition protocol.h:41
uint8_t * buf
Definition protocol.h:43
Definition protocol.h:30
uint8_t class
Definition protocol.h:33
uint8_t id
Definition protocol.h:34
uint8_t payload_and_checksum[]
Definition protocol.h:36
uint16_t payload_size
Definition protocol.h:35
uint8_t preamble_sync_char_2
Definition protocol.h:32
uint8_t preamble_sync_char_1
Definition protocol.h:31
Definition protocol.h:197
uint8_t reserved1[3]
Definition protocol.h:205
uint8_t default_enabled
Definition protocol.h:201
uint8_t simultaneous
Definition protocol.h:204
uint8_t supported
Definition protocol.h:200
uint8_t enabled
Definition protocol.h:202
struct ubx_mon_gnss::@224205002314270241172347203256350144274361054317 selection
uint8_t ver
Definition protocol.h:198
Definition protocol.h:370
char hw_ver[10]
Definition protocol.h:372
char sw_ver[30]
Definition protocol.h:371
Definition protocol.h:89
uint8_t second
Definition protocol.h:97
uint32_t tacc
Definition protocol.h:99
int32_t vel_east
Definition protocol.h:114
uint8_t minute
Definition protocol.h:96
uint8_t flags
See ubx_nav_fix_type.
Definition protocol.h:103
int32_t nano
Definition protocol.h:100
int32_t vel_north
Definition protocol.h:113
uint8_t flags2
Definition protocol.h:104
int32_t latitude
Definition protocol.h:108
int32_t ground_speed
Definition protocol.h:116
uint16_t flags3
Definition protocol.h:123
uint8_t fix_type
Definition protocol.h:102
uint32_t itow
Definition protocol.h:91
uint8_t valid
Definition protocol.h:98
int32_t vel_down
Definition protocol.h:115
int16_t mag_decl
Definition protocol.h:128
uint16_t pdop
scaling: 1e-2
Definition protocol.h:122
uint32_t reserved
Definition protocol.h:124
uint16_t year
Definition protocol.h:92
int32_t head_vehicle
Definition protocol.h:125
uint32_t speed_acc
Definition protocol.h:118
uint32_t head_acc
Definition protocol.h:119
struct ubx_nav_pvt::@124110107202070056152323072100221212357171026061 nav
int32_t height
Definition protocol.h:109
int32_t head_motion
Definition protocol.h:117
uint16_t magacc
Definition protocol.h:129
uint32_t horiz_acc
Definition protocol.h:111
uint8_t month
Definition protocol.h:93
int32_t longitude
Definition protocol.h:107
int32_t hmsl
Definition protocol.h:110
uint8_t num_sv
Definition protocol.h:106
uint8_t day
Definition protocol.h:94
uint8_t hour
Definition protocol.h:95
uint32_t vert_acc
Definition protocol.h:112
Definition protocol.h:156
uint8_t gnss_id
Definition protocol.h:157
int16_t azimuth
Definition protocol.h:161
int16_t pseu_res
Definition protocol.h:162
uint8_t cno
Definition protocol.h:159
int8_t elevation
Definition protocol.h:160
uint8_t sv_id
Definition protocol.h:158
uint32_t flags
Definition protocol.h:163
Definition protocol.h:151
uint16_t reserved1
Definition protocol.h:155
uint8_t version
Definition protocol.h:153
uint32_t itow
Definition protocol.h:152
struct ubx_nav_sat::ubx_nav_sat_info sat[]
uint8_t num_sv
Definition protocol.h:154