8#ifndef ZEPHYR_INCLUDE_MODEM_UBX_PROTOCOL_H_
9#define ZEPHYR_INCLUDE_MODEM_UBX_PROTOCOL_H_
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)
20#define UBX_PREAMBLE_SYNC_CHAR_1 0xB5
21#define UBX_PREAMBLE_SYNC_CHAR_2 0x62
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
27#define UBX_PAYLOAD_SZ_MAX 512
28#define UBX_FRAME_SZ_MAX UBX_FRAME_SZ(UBX_PAYLOAD_SZ_MAX)
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)
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)
87#define UBX_NAV_PVT_FLAGS3_INVALID_LLH BIT(0)
148#define UBX_NAV_SAT_FLAGS_SV_USED BIT(3)
149#define UBX_NAV_SAT_FLAGS_RTCM_CORR_USED BIT(17)
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)
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)
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)
255#define UBX_CFG_NAV5_APPLY_DYN BIT(0)
256#define UBX_CFG_NAV5_APPLY_FIX_MODE BIT(2)
387 ck_a = ck_a + data[i];
391 return ((ck_a & 0xFF) | ((ck_b & 0xFF) << 8));
395 size_t payload_len,
uint8_t *buf,
size_t buf_len)
405 frame->
class =
class;
418#define UBX_FRAME_DEFINE(_name, _frame) const static struct ubx_frame _name = _frame
420#define UBX_FRAME_ARRAY_DEFINE(_name, ...) const struct ubx_frame *_name[] = {__VA_ARGS__};
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)
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)
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)
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))
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, \
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), \
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))
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))
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))
466#define UBX_FRAME_INITIALIZER_PAYLOAD(_class_id, _msg_id, ...) \
467 _UBX_FRAME_INITIALIZER_PAYLOAD(_class_id, _msg_id, __VA_ARGS__)
469#define _UBX_FRAME_INITIALIZER_PAYLOAD(_class_id, _msg_id, ...) \
471 .preamble_sync_char_1 = UBX_PREAMBLE_SYNC_CHAR_1, \
472 .preamble_sync_char_2 = UBX_PREAMBLE_SYNC_CHAR_2, \
473 .class = _class_id, \
475 .payload_size = (NUM_VA_ARGS(__VA_ARGS__)) & 0xFFFF, \
476 .payload_and_checksum = \
479 UBX_CSUM(_class_id, _msg_id, ((NUM_VA_ARGS(__VA_ARGS__)) & 0xFF), \
480 (((NUM_VA_ARGS(__VA_ARGS__)) >> 8) & 0xFF), __VA_ARGS__), \
484#define UBX_FRAME_GET_INITIALIZER(_class_id, _msg_id) \
486 .preamble_sync_char_1 = UBX_PREAMBLE_SYNC_CHAR_1, \
487 .preamble_sync_char_2 = UBX_PREAMBLE_SYNC_CHAR_2, \
488 .class = _class_id, \
491 .payload_and_checksum = \
493 UBX_CSUM(_class_id, _msg_id, 0, 0), \
#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
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
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
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