Infuse-IoT SDK API 0.0.1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
cfg.h
Go to the documentation of this file.
1
10
11#ifndef INFUSE_GNSS_UBX_CFG_H_
12#define INFUSE_GNSS_UBX_CFG_H_
13
14#include <stdbool.h>
15
16#include <zephyr/net_buf.h>
17#include <zephyr/sys/byteorder.h>
18
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
41
43enum _ubx_cfg_key_size {
44 _UBX_CFG_KEY_SIZE_1BIT_ = (0x01 << 28),
45 _UBX_CFG_KEY_SIZE_1BYTE = (0x02 << 28),
46 _UBX_CFG_KEY_SIZE_2BYTE = (0x03 << 28),
47 _UBX_CFG_KEY_SIZE_4BYTE = (0x04 << 28),
48 _UBX_CFG_KEY_SIZE_8BYTE = (0x05 << 28),
49 _UBX_CFG_KEY_SIZE_MASK = (0x07 << 28),
50};
51
53enum _ubx_cfg_key_grp {
55 _UBX_CFG_KEY_GRP_ANA = (0x23 << 16),
57 _UBX_CFG_KEY_GRP_BATCH = (0x26 << 16),
59 _UBX_CFG_KEY_GRP_BDS = (0x34 << 16),
61 _UBX_CFG_KEY_GRP_HW = (0xa3 << 16),
63 _UBX_CFG_KEY_GRP_I2C = (0x51 << 16),
65 _UBX_CFG_KEY_GRP_I2CINPROT = (0x71 << 16),
67 _UBX_CFG_KEY_GRP_I2COUTPROT = (0x72 << 16),
69 _UBX_CFG_KEY_GRP_INFMSG = (0x92 << 16),
71 _UBX_CFG_KEY_GRP_ITFM = (0x41 << 16),
73 _UBX_CFG_KEY_GRP_MOT = (0x25 << 16),
75 _UBX_CFG_KEY_GRP_MSGOUT = (0x91 << 16),
77 _UBX_CFG_KEY_GRP_NAVSPG = (0x11 << 16),
79 _UBX_CFG_KEY_GRP_NMEA = (0x93 << 16),
81 _UBX_CFG_KEY_GRP_ODO = (0x22 << 16),
83 _UBX_CFG_KEY_GRP_PM = (0xd0 << 16),
85 _UBX_CFG_KEY_GRP_QZSS = (0x37 << 16),
87 _UBX_CFG_KEY_GRP_RATE = (0x21 << 16),
89 _UBX_CFG_KEY_GRP_RINV = (0xc7 << 16),
91 _UBX_CFG_KEY_GRP_SBAS = (0x36 << 16),
93 _UBX_CFG_KEY_GRP_SEC = (0xf6 << 16),
95 _UBX_CFG_KEY_GRP_SIGNAL = (0x31 << 16),
97 _UBX_CFG_KEY_GRP_SPI = (0x64 << 16),
99 _UBX_CFG_KEY_GRP_SPIINPROT = (0x79 << 16),
101 _UBX_CFG_KEY_GRP_SPIOUTPROT = (0x7a << 16),
103 _UBX_CFG_KEY_GRP_TP = (0x05 << 16),
105 _UBX_CFG_KEY_GRP_TXREADY = (0xa2 << 16),
107 _UBX_CFG_KEY_GRP_UART1 = (0x52 << 16),
109 _UBX_CFG_KEY_GRP_UART1INPROT = (0x73 << 16),
111 _UBX_CFG_KEY_GRP_UART1OUTPROT = (0x74 << 16),
112};
113
114#define _UBX_CFG_KEY_NAME(group, name) UBX_CFG_KEY_##group##_##name
115
124#define _UBX_CFG_KEY_DEFINE(size, group, id, name) \
125 _UBX_CFG_KEY_NAME(group, name) = (size | (_UBX_CFG_KEY_GRP_##group) | id)
126
132
135 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ANA, 0x01, USE_ANA),
136 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, ANA, 0x02, ORBMAXERR),
137};
138
142
148
151 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x13, ENABLE),
152 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x14, PIOENABLE),
153 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, BATCH, 0x15, MAXENTRIES),
154 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, BATCH, 0x16, WARNTHRS),
155 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x18, PIOACTIVELOW),
156 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, BATCH, 0x19, PIOID),
157 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x1a, EXTRAPVT),
158 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x1b, EXTRAODO),
159};
160
164
170
173 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BDS, 0x14, USE_GEO_PRN),
174};
175
179
185
188 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x2E, ANT_CFG_VOLTCTRL),
189 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x2F, ANT_CFG_SHORTDET),
190 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x30, ANT_CFG_SHORTDET_POL),
191 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x31, ANT_CFG_OPENDET),
192 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x32, ANT_CFG_OPENDET_POL),
193 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x33, ANT_CFG_PWRDOWN),
194 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x34, ANT_CFG_PWRDOWN_POL),
195 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x35, ANT_CFG_RECOVER),
196 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x36, ANT_SUP_SWITCH_PIN),
197 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x37, ANT_SUP_SHORT_PIN),
198 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x38, ANT_SUP_OPEN_PIN),
199 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, HW, 0x3C, ANT_ON_SHORT_US),
200 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x54, ANT_SUP_ENGINE),
201 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x55, ANT_SUP_SHORT_THR),
202 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x56, ANT_SUP_OPEN_THR),
203 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x57, RF_LNA_MODE),
204};
205
211
218
222
228
231 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, I2C, 1, ADDRESS),
232 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2C, 2, EXTENDEDTIMEOUT),
233 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2C, 3, ENABLED),
234};
235
239
245
248 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2CINPROT, 1, UBX),
249 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2CINPROT, 2, NMEA),
250};
251
255
261
264 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2COUTPROT, 1, UBX),
265 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2COUTPROT, 2, NMEA),
266};
267
271
277
280 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x01, UBX_I2C),
281 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x02, UBX_UART1),
282 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x05, UBX_SPI),
283 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x06, NMEA_I2C),
284 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x07, NMEA_UART1),
285 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x0a, NMEA_SPI),
286};
287
296
300
306
309 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ITFM, 0x01, BBTHRESHOLD),
310 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ITFM, 0x02, CWTHRESHOLD),
311 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ITFM, 0x0d, ENABLE),
312 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ITFM, 0x10, ANTSETTING),
313 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ITFM, 0x13, ENABLE_AUX),
314};
315
322
326
332
335 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MOT, 0x38, GNSSSPEED_THRS),
336 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, MOT, 0x3b, GNSSDIST_THRS),
337};
338
342
348
354#define _UBX_CFG_MSGOUT_KEY_DEFINE(i2c_val, name) \
355 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MSGOUT, (i2c_val), name##_I2C), \
356 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MSGOUT, (i2c_val + 1), name##_UART1), \
357 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MSGOUT, (i2c_val + 4), name##_SPI)
358
361 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00a6, NMEA_ID_DTM_I2C),
362 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00aa, NMEA_ID_DTM_SPI),
363 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00a7, NMEA_ID_DTM_UART1),
364 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00dd, NMEA_ID_GBS_I2C),
365 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00e1, NMEA_ID_GBS_SPI),
366 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00de, NMEA_ID_GBS_UART1),
367 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ba, NMEA_ID_GGA_I2C),
368 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00be, NMEA_ID_GGA_SPI),
369 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00bb, NMEA_ID_GGA_UART1),
370 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c9, NMEA_ID_GLL_I2C),
371 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00cd, NMEA_ID_GLL_SPI),
372 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ca, NMEA_ID_GLL_UART1),
373 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b5, NMEA_ID_GNS_I2C),
374 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b9, NMEA_ID_GNS_SPI),
375 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b6, NMEA_ID_GNS_UART1),
376 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ce, NMEA_ID_GRS_I2C),
377 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d2, NMEA_ID_GRS_SPI),
378 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00cf, NMEA_ID_GRS_UART1),
379 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00bf, NMEA_ID_GSA_I2C),
380 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c3, NMEA_ID_GSA_SPI),
381 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c0, NMEA_ID_GSA_UART1),
382 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d3, NMEA_ID_GST_I2C),
383 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d7, NMEA_ID_GST_SPI),
384 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d4, NMEA_ID_GST_UART1),
385 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c4, NMEA_ID_GSV_I2C),
386 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c8, NMEA_ID_GSV_SPI),
387 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c5, NMEA_ID_GSV_UART1),
388 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0400, NMEA_ID_RLM_I2C),
389 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0404, NMEA_ID_RLM_SPI),
390 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0401, NMEA_ID_RLM_UART1),
391 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ab, NMEA_ID_RMC_I2C),
392 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00af, NMEA_ID_RMC_SPI),
393 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ac, NMEA_ID_RMC_UART1),
394 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00e7, NMEA_ID_VLW_I2C),
395 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00eb, NMEA_ID_VLW_SPI),
396 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00e8, NMEA_ID_VLW_UART1),
397 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b0, NMEA_ID_VTG_I2C),
398 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b4, NMEA_ID_VTG_SPI),
399 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b1, NMEA_ID_VTG_UART1),
400 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d8, NMEA_ID_ZDA_I2C),
401 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00dc, NMEA_ID_ZDA_SPI),
402 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d9, NMEA_ID_ZDA_UART1),
403 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ec, PUBX_ID_POLYP_I2C),
404 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f0, PUBX_ID_POLYP_SPI),
405 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ed, PUBX_ID_POLYP_UART1),
406 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f1, PUBX_ID_POLYS_I2C),
407 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f5, PUBX_ID_POLYS_SPI),
408 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f2, PUBX_ID_POLYS_UART1),
409 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f6, PUBX_ID_POLYT_I2C),
410 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00fa, PUBX_ID_POLYT_SPI),
411 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f7, PUBX_ID_POLYT_UART1),
412 _UBX_CFG_MSGOUT_KEY_DEFINE(0x034f, UBX_MON_COMMS),
413 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01b9, UBX_MON_HW2),
414 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0354, UBX_MON_HW3),
415 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01b4, UBX_MON_HW),
416 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01a5, UBX_MON_IO),
417 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0196, UBX_MON_MSGPP),
418 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0359, UBX_MON_RF),
419 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01a0, UBX_MON_RXBUF),
420 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0187, UBX_MON_RXR),
421 _UBX_CFG_MSGOUT_KEY_DEFINE(0x038b, UBX_MON_SPAN),
422 _UBX_CFG_MSGOUT_KEY_DEFINE(0x019b, UBX_MON_TXBUF),
423 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0079, UBX_NAV_AOPSTATUS),
424 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0065, UBX_NAV_CLOCK),
425 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0083, UBX_NAV_COV),
426 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0038, UBX_NAV_DOP),
427 _UBX_CFG_MSGOUT_KEY_DEFINE(0x015f, UBX_NAV_EOE),
428 _UBX_CFG_MSGOUT_KEY_DEFINE(0x007e, UBX_NAV_ODO),
429 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0010, UBX_NAV_ORB),
430 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0024, UBX_NAV_PL),
431 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0024, UBX_NAV_POSECEF),
432 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0029, UBX_NAV_POSLLH),
433 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0006, UBX_NAV_PVT),
434 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0015, UBX_NAV_SAT),
435 _UBX_CFG_MSGOUT_KEY_DEFINE(0x006a, UBX_NAV_SBAS),
436 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0345, UBX_NAV_SIG),
437 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0336, UBX_NAV_SLAS),
438 _UBX_CFG_MSGOUT_KEY_DEFINE(0x001a, UBX_NAV_STATUS),
439 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0051, UBX_NAV_TIMEBDS),
440 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0056, UBX_NAV_TIMEGAL),
441 _UBX_CFG_MSGOUT_KEY_DEFINE(0x004c, UBX_NAV_TIMEGLO),
442 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0047, UBX_NAV_TIMEGPS),
443 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0060, UBX_NAV_TIMELS),
444 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0386, UBX_NAV_TIMEQZSS),
445 _UBX_CFG_MSGOUT_KEY_DEFINE(0x005b, UBX_NAV_TIMEUTC),
446 _UBX_CFG_MSGOUT_KEY_DEFINE(0x003d, UBX_NAV_VELECEF),
447 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0042, UBX_NAV_VELNED),
448 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0643, UBX_RXM_MEAS20),
449 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0648, UBX_RXM_MEAS50),
450 _UBX_CFG_MSGOUT_KEY_DEFINE(0x063e, UBX_RXM_MEASC12),
451 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0639, UBX_RXM_MEASD12),
452 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0204, UBX_RXM_MEASX),
453 _UBX_CFG_MSGOUT_KEY_DEFINE(0x025e, UBX_RXM_RLM),
454 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0231, UBX_RXM_SFRBX),
455 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0178, UBX_RXM_TIM_TM2),
456 _UBX_CFG_MSGOUT_KEY_DEFINE(0x017d, UBX_RXM_TIM_TP),
457 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0092, UBX_RXM_TIM_VRFY),
458};
459
463
469
472 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0x11, FIXMODE),
473 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NAVSPG, 0x13, INIFIX3D),
474 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0x17, WKNROLLOVER),
475 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0x1c, UTCSTANDARD),
476 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0x21, DYNMODEL),
477 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NAVSPG, 0x25, ACKAIDING),
478 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa1, INFIL_MINSVS),
479 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa2, INFIL_MAXSVS),
480 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa3, INFIL_MINCNO),
481 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa4, INFIL_MINELEV),
482 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xaa, INFIL_NCNOTHRS),
483 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xab, INFIL_CNOTHRS),
484 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb1, OUTFIL_PDOP),
485 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb2, OUTFIL_TDOP),
486 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb3, OUTFIL_PACC),
487 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb4, OUTFIL_TACC),
488 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb5, OUTFIL_FACC),
489 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, NAVSPG, 0xc1, CONSTR_ALT),
490 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, NAVSPG, 0xc2, CONSTR_ALTVAR),
491 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xc4, CONSTR_DGNSSTO),
492 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xd6, SIGATTCOMP),
493};
494
501
519
551
555
561
564 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x01, PROTVER),
565 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x02, MAXSVS),
566 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x03, COMPAT),
567 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x04, CONSIDER),
568 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x05, LIMIT82),
569 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x06, HIGHPREC),
570 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x07, SVNUMBERING),
571
572 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x11, FILST_GPS),
573 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x12, FILST_SBAS),
574 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x13, FILST_GAL),
575 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x15, FILST_QZSS),
576 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x16, FILST_GLO),
577 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x17, FILST_BDS),
578 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x21, FILST_INVFIX),
579 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x22, FILST_MSKFIX),
580 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x23, FILST_INVTIME),
581 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x24, FILST_INVDATE),
582 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x25, FILST_ONLYGPS),
583 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x26, FILST_FROZENCOG),
584 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x31, MAINTALKERID),
585 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x32, GSVTALKERID),
586 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NMEA, 0x33, BDSTALKERID),
587};
588
594
605
611
615
621
624 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x01, USE_ODO),
625 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x02, USE_COG),
626 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x03, OUTLPVEL),
627 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x04, OUTLPCOG),
628 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x05, PROFILE),
629 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x21, COGMAXSPEED),
630 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x22, COGMAXPOSACC),
631 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x31, VELLPGAIN),
632 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x32, COGLPGAIN),
633};
634
643
647
653
656 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, PM, 0x01, OPERATEMODE),
657 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x02, POSUPDATEPERIOD),
658 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x03, ACQPERIOD),
659 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x04, GRIDOFFSET),
660 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, PM, 0x05, ONTIME),
661 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, PM, 0x06, MINACQTIME),
662 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, PM, 0x07, MAXACQTIME),
663 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x08, DONOTENTEROFF),
664 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x09, WAITTIMEFIX),
665 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0a, UPDATEEPH),
666 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0c, EXTINTWAKE),
667 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0d, EXTINTBACKUP),
668 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0e, EXTINTINACTIVE),
669 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x0f, EXTINTINACTIVITY),
670 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x10, LIMITPEAKCURR),
671};
672
682
686
692
695 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, QZSS, 0x05, USE_SLAS_DGNSS),
696 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, QZSS, 0x06, USE_SLAS_TESTMODE),
697 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, QZSS, 0x07, USE_SLAS_RAIM_),
698 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, QZSS, 0x08, SLAS_MAX_BASELINE),
699};
700
704
710
713 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, RATE, 1, MEAS),
714 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, RATE, 2, NAV),
715 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, RATE, 3, TIMEREF),
716};
717
727
731
737
740 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, RINV, 0x01, DUMP),
741 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, RINV, 0x02, BINARY),
742 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, RINV, 0x03, DATA_SIZE),
743 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x04, CHUNK0),
744 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x05, CHUNK1),
745 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x06, CHUNK2),
746 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x07, CHUNK3),
747};
748
752
758
761 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x02, USE_TESTMODE),
762 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x03, USE_RANGING),
763 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x04, USE_DIFFCORR),
764 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x05, USE_INTEGRITY),
765 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, SBAS, 0x06, PRNSCANMASK),
766};
767
810};
811
815
821
824 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SEC, 0x09, CFG_LOCK),
825 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, SEC, 0x0a, CFG_LOCK_UNLOCKGRP1),
826 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, SEC, 0x0b, CFG_LOCK_UNLOCKGRP2),
827};
828
832
838
841 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x1f, GPS_ENA),
842 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x01, GPS_L1CA_ENA),
843 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x20, SBAS_ENA),
844 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x05, SBAS_L1CA_ENA),
845 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x21, GALILEO_ENA),
846 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x07, GALILEO_E1_ENA),
847 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x22, BEIDOU_ENA),
848 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x0d, BEIDOU_B1I_ENA),
849 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x0f, BEIDOU_B1C_ENA),
850 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x24, QZSS_ENA),
851 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x12, QZSS_L1CA_ENA),
852 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x14, QZSS_L1S_ENA),
853 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x25, GLONASS_ENA),
854 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x18, GLONASS_L1CA_ENA),
855};
856
860
866
869 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, SPI, 0x01, MAXFF),
870 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x02, CPOLARITY),
871 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x03, CPHASE),
872 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x05, EXTENDEDTIMEOUT),
873 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x06, ENABLED),
874};
875
879
885
888 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIINPROT, 0x01, UBX),
889 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIINPROT, 0x02, NMEA),
890};
891
895
901
904 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIOUTPROT, 0x01, UBX),
905 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIOUTPROT, 0x02, NMEA),
906};
907
911
917
920 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TP, 0x23, PULSE_DEF),
921 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TP, 0x30, PULSE_LENGTH_DEF),
922 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, TP, 0x01, CABLEDELAY),
923 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x02, PERIOD_TP1),
924 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x03, PERIOD_LOCK_TP1),
925 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x24, FREQ_TP1),
926 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x25, FREQ_LOCK_TP1),
927 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x04, LEN_TP1),
928 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x05, LEN_LOCK_TP1),
929 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, TP, 0x2a, DUTY_TP1),
930 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, TP, 0x2b, DUTY_LOCK_TP1),
931 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x06, USER_DELAY_TP1),
932 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x07, TP1_ENA),
933 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x08, SYNC_GNSS_TP1),
934 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x09, USE_LOCKED_TP1),
935 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x0a, ALIGN_TO_TOW_TP1),
936 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x0b, POL_TP1),
937 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TP, 0x0c, TIMEGRID_TP1),
938};
939
945
951
957
968
972
978
981 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TXREADY, 1, ENABLED),
982 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TXREADY, 2, POLARITY),
983 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TXREADY, 3, PIN),
984 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, TXREADY, 4, THRESHOLD),
985 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TXREADY, 5, INTERFACE),
986};
987
993
999
1003
1009
1012 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, UART1, 1, BAUDRATE),
1013 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, UART1, 2, STOPBITS),
1014 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, UART1, 3, DATABITS),
1015 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, UART1, 4, PARITY),
1016 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1, 5, ENABLED),
1017};
1018
1022
1028
1031 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1INPROT, 0x01, UBX),
1032 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1INPROT, 0x02, NMEA),
1033};
1034
1038
1044
1047 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1OUTPROT, 0x01, UBX),
1048 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1OUTPROT, 0x02, NMEA),
1049};
1050
1054
1061static inline void ubx_msg_prepare_valset(struct net_buf_simple *buf, uint8_t layers)
1062{
1063 struct ubx_msg_cfg_valset_v0 *valset;
1064
1066 valset = net_buf_simple_add(buf, sizeof(*valset));
1067 valset->version = 0x00;
1068 valset->layers = layers;
1069}
1070
1078static inline void ubx_msg_prepare_valget(struct net_buf_simple *buf, uint8_t layer, uint8_t offset)
1079{
1080 struct ubx_msg_cfg_valget_query *valget;
1081
1083 valget = net_buf_simple_add(buf, sizeof(*valget));
1084 valget->version = 0x00;
1085 valget->layer = layer;
1086 valget->position = offset;
1087}
1088
1090
1091static inline void _ubx_cfg_value_append_1bit(struct net_buf_simple *buf, bool value)
1092{
1093 net_buf_simple_add_u8(buf, value ? 0x01 : 0x00);
1094}
1095
1101#define _UBX_CFG_VALUE_APPEND_FN(key_size) \
1102 __builtin_choose_expr( \
1103 key_size == _UBX_CFG_KEY_SIZE_1BIT_, _ubx_cfg_value_append_1bit, \
1104 __builtin_choose_expr( \
1105 key_size == _UBX_CFG_KEY_SIZE_1BYTE, net_buf_simple_add_u8, \
1106 __builtin_choose_expr( \
1107 key_size == _UBX_CFG_KEY_SIZE_2BYTE, net_buf_simple_add_le16, \
1108 __builtin_choose_expr(key_size == _UBX_CFG_KEY_SIZE_4BYTE, \
1109 net_buf_simple_add_le32, \
1110 net_buf_simple_add_le64))))
1111
1113
1125#define UBX_CFG_VALUE_APPEND(buf, key, value) \
1126 do { \
1127 net_buf_simple_add_le32(buf, key); \
1128 _UBX_CFG_VALUE_APPEND_FN(((key) & _UBX_CFG_KEY_SIZE_MASK))(buf, value); \
1129 } while (0)
1130
1134 uint32_t key;
1136 union {
1137 uint8_t l;
1138 uint8_t u1;
1139 uint8_t e1;
1140 uint8_t x1;
1141 int8_t i1;
1142 uint16_t u2;
1143 uint16_t e2;
1144 uint16_t x2;
1145 int16_t i2;
1146 uint32_t u4;
1147 uint32_t e4;
1148 uint32_t x4;
1149 int32_t i4;
1150 float r4;
1151 uint64_t u8;
1152 uint64_t e8;
1153 uint64_t x8;
1154 int64_t i8;
1155 double r8;
1157};
1158
1178static inline int ubx_cfg_val_parse(const uint8_t **ptr, size_t *remaining, struct ubx_cfg_val *cfg)
1179{
1180 if (*remaining <= 4) {
1181 return -ENOMEM;
1182 }
1183 cfg->key = sys_get_le32(*ptr);
1184 *ptr += 4;
1185 switch (cfg->key & _UBX_CFG_KEY_SIZE_MASK) {
1186 case _UBX_CFG_KEY_SIZE_1BIT_:
1187 case _UBX_CFG_KEY_SIZE_1BYTE:
1188 cfg->val.u1 = **ptr;
1189 *ptr += 1;
1190 *remaining -= 1;
1191 break;
1192 case _UBX_CFG_KEY_SIZE_2BYTE:
1193 cfg->val.u2 = sys_get_le16(*ptr);
1194 *ptr += 2;
1195 *remaining -= 2;
1196 break;
1197 case _UBX_CFG_KEY_SIZE_4BYTE:
1198 cfg->val.u4 = sys_get_le32(*ptr);
1199 *ptr += 4;
1200 *remaining -= 4;
1201 break;
1202 case _UBX_CFG_KEY_SIZE_8BYTE:
1203 cfg->val.u8 = sys_get_le64(*ptr);
1204 *ptr += 8;
1205 *remaining -= 8;
1206 break;
1207 default:
1208 return -EINVAL;
1209 }
1210 return 0;
1211}
1212
1216
1217#ifdef __cplusplus
1218}
1219#endif
1220
1221#endif /* INFUSE_GNSS_UBX_CFG_H_ */
ubx_cfg_key_ana
CFG-ANA configuration keys.
Definition cfg.h:134
ubx_cfg_key_batch
CFG-BATCH configuration keys.
Definition cfg.h:150
ubx_cfg_key_bds
CFG-BDS configuration keys.
Definition cfg.h:172
ubx_cfg_key_hw_rf_lna_mode
Values for UBX_CFG_KEY_HW_RF_LNA_MODE (internal LNA mode)
Definition cfg.h:213
ubx_cfg_key_hw
CFG-HW configuration keys.
Definition cfg.h:187
ubx_cfg_key_hw_ant_sup_engine
Values for UBX_CFG_KEY_HW_ANT_SUP_ENGINE (antenna supervisor engine)
Definition cfg.h:207
@ UBX_CFG_HW_RF_LNA_MODE_LOWGAIN
Definition cfg.h:215
@ UBX_CFG_HW_RF_LNA_MODE_NORMAL
Definition cfg.h:214
@ UBX_CFG_HW_RF_LNA_MODE_BYPASS
Definition cfg.h:216
@ UBX_CFG_HW_ANT_SUP_ENGINE_EXT
Definition cfg.h:208
@ UBX_CFG_HW_ANT_SUP_ENGINE_MADC
Definition cfg.h:209
ubx_cfg_key_i2c
CFG-I2C configuration keys.
Definition cfg.h:230
ubx_cfg_key_i2cinprot
CFG-I2CINPROT configuration keys.
Definition cfg.h:247
ubx_cfg_key_i2coutprot
CFG-I2COUTPROT configuration keys.
Definition cfg.h:263
ubx_cfg_key_infmsg
CFG-INFMSG configuration keys.
Definition cfg.h:279
ubx_cfg_key_infmsg_all
Values for all CFG-INFMSG keys (bitmask of enabled information message types)
Definition cfg.h:289
@ UBX_CFG_INFMSG_ALL_TEST
Definition cfg.h:293
@ UBX_CFG_INFMSG_ALL_WARNING
Definition cfg.h:291
@ UBX_CFG_INFMSG_ALL_NOTICE
Definition cfg.h:292
@ UBX_CFG_INFMSG_ALL_ERROR
Definition cfg.h:290
@ UBX_CFG_INFMSG_ALL_DEBUG
Definition cfg.h:294
ubx_cfg_key_itfm_antsetting
Values for UBX_CFG_KEY_ITFM_ANTSETTING (antenna setting)
Definition cfg.h:317
ubx_cfg_key_itfm
CFG-ITFM configuration keys.
Definition cfg.h:308
@ UBX_CFG_ITFM_ANTSETTING_UNKNOWN
Definition cfg.h:318
@ UBX_CFG_ITFM_ANTSETTING_ACTIVE
Definition cfg.h:320
@ UBX_CFG_ITFM_ANTSETTING_PASSIVE
Definition cfg.h:319
ubx_cfg_key_mot
CFG-MOT configuration keys.
Definition cfg.h:334
ubx_cfg_key_msgout
CFG-MSGOUT configuration keys.
Definition cfg.h:360
ubx_cfg_key_navspg_dynmodel
Dynamic model for the modem.
Definition cfg.h:525
ubx_cfg_key_navspg_utcstandard
Values for UBX_CFG_KEY_NAVSPG_UTCSTANDARD (UTC standard)
Definition cfg.h:503
ubx_cfg_key_navspg_fixmode
Values for UBX_CFG_KEY_NAVSPG_FIXMODE (position fix mode)
Definition cfg.h:496
ubx_cfg_key_navspg
CFG-NAVSPG configuration keys.
Definition cfg.h:471
@ UBX_CFG_NAVSPG_DYNMODEL_ESCOOTER
Unknown.
Definition cfg.h:549
@ UBX_CFG_NAVSPG_DYNMODEL_AIRBORNE4G
Max Alt: 80 km Max Hor Vel: 500 m/s Max Ver Vel: 20000 m/s.
Definition cfg.h:541
@ UBX_CFG_NAVSPG_DYNMODEL_BIKE
Unknown.
Definition cfg.h:545
@ UBX_CFG_NAVSPG_DYNMODEL_AIRBORNE2G
Max Alt: 80 km Max Hor Vel: 250 m/s Max Ver Vel: 10000 m/s.
Definition cfg.h:539
@ UBX_CFG_NAVSPG_DYNMODEL_AIRBORNE1G
Max Alt: 80 km Max Hor Vel: 100 m/s Max Ver Vel: 6400 m/s.
Definition cfg.h:537
@ UBX_CFG_NAVSPG_DYNMODEL_PEDESTRIAN
Max Alt: 9 km Max Hor Vel: 30 m/s Max Ver Vel: 20 m/s.
Definition cfg.h:531
@ UBX_CFG_NAVSPG_DYNMODEL_MOWER
Unknown.
Definition cfg.h:547
@ UBX_CFG_NAVSPG_DYNMODEL_SEA
Max Alt: 0.5 km Max Hor Vel: 25 m/s Max Ver Vel: 5 m/s.
Definition cfg.h:535
@ UBX_CFG_NAVSPG_DYNMODEL_PORTABLE
Max Alt: 12 km Max Hor Vel: 310 m/s Max Ver Vel: 50 m/s.
Definition cfg.h:527
@ UBX_CFG_NAVSPG_DYNMODEL_STATIONARY
Max Alt: 9 km Max Hor Vel: 10 m/s Max Ver Vel: 6 m/s.
Definition cfg.h:529
@ UBX_CFG_NAVSPG_DYNMODEL_AUTOMOTIVE
Max Alt: 6 km Max Hor Vel: 100 m/s Max Ver Vel: 15 m/s.
Definition cfg.h:533
@ UBX_CFG_NAVSPG_DYNMODEL_WRIST
Max Alt: 9 km Max Hor Vel: 30 m/s Max Ver Vel: 20 m/s.
Definition cfg.h:543
@ UBX_CFG_NAVSPG_UTCSTANDARD_SU
Former Soviet Union (GLONASS)
Definition cfg.h:511
@ UBX_CFG_NAVSPG_UTCSTANDARD_EU
Derived from multiple European laboratories (Galileo)
Definition cfg.h:509
@ UBX_CFG_NAVSPG_UTCSTANDARD_NTSC
National Time Service Center, China (BeiDou)
Definition cfg.h:513
@ UBX_CFG_NAVSPG_UTCSTANDARD_USNO
U.S.
Definition cfg.h:507
@ UBX_CFG_NAVSPG_UTCSTANDARD_AUTO
Automatically selected based on receiver configuration.
Definition cfg.h:505
@ UBX_CFG_NAVSPG_UTCSTANDARD_NICT
National Institute of Information and Communications Technology, Japan (QZSS)
Definition cfg.h:517
@ UBX_CFG_NAVSPG_UTCSTANDARD_NPLI
National Physics Laboratory, India (NAVIC)
Definition cfg.h:515
@ UBX_CFG_NAVSPG_FIXMODE_3DONLY
Definition cfg.h:498
@ UBX_CFG_NAVSPG_FIXMODE_2DONLY
Definition cfg.h:497
@ UBX_CFG_NAVSPG_FIXMODE_AUTO
Definition cfg.h:499
ubx_cfg_key_nmea_gsvtalkerid
Values for UBX_CFG_KEY_NMEA_GSVTALKERID (talker ID for GSV messages)
Definition cfg.h:607
ubx_cfg_key_nmea_maintalkerid
Values for UBX_CFG_KEY_NMEA_MAINTALKERID (main talker ID)
Definition cfg.h:596
ubx_cfg_key_nmea
CFG-NMEA configuration keys.
Definition cfg.h:563
ubx_cfg_key_nmea_svnumbering
Values for UBX_CFG_KEY_NMEA_SVNUMBERING (satellite numbering)
Definition cfg.h:590
@ UBX_CFG_NMEA_GSVTALKERID_GNSS
Definition cfg.h:608
@ UBX_CFG_NMEA_GSVTALKERID_MAIN
Definition cfg.h:609
@ UBX_CFG_NMEA_MAINTALKERID_GP
Definition cfg.h:598
@ UBX_CFG_NMEA_MAINTALKERID_GL
Definition cfg.h:599
@ UBX_CFG_NMEA_MAINTALKERID_GN
Definition cfg.h:600
@ UBX_CFG_NMEA_MAINTALKERID_GA
Definition cfg.h:601
@ UBX_CFG_NMEA_MAINTALKERID_AUTO
Definition cfg.h:597
@ UBX_CFG_NMEA_MAINTALKERID_GQ
Definition cfg.h:603
@ UBX_CFG_NMEA_MAINTALKERID_GB
Definition cfg.h:602
@ UBX_CFG_NMEA_SVNUMBERING_STRICT
Definition cfg.h:591
@ UBX_CFG_NMEA_SVNUMBERING_EXTENDED
Definition cfg.h:592
ubx_cfg_key_odo
CFG-ODO configuration keys.
Definition cfg.h:623
ubx_cfg_key_odo_profile
Values for UBX_CFG_KEY_ODO_PROFILE (odometer profile)
Definition cfg.h:636
@ UBX_CFG_ODO_PROFILE_SWIM
Definition cfg.h:639
@ UBX_CFG_ODO_PROFILE_CYCL
Definition cfg.h:638
@ UBX_CFG_ODO_PROFILE_RUN
Definition cfg.h:637
@ UBX_CFG_ODO_PROFILE_CAR
Definition cfg.h:640
@ UBX_CFG_ODO_PROFILE_CUSTOM
Definition cfg.h:641
ubx_cfg_key_pm_operatemode
Values for UBX_CFG_KEY_PM_OPERATEMODE (power management mode)
Definition cfg.h:674
ubx_cfg_key_pm
CFG-PM configuration keys.
Definition cfg.h:655
@ UBX_CFG_PM_OPERATEMODE_PSMCT
PSM cyclic tracking operation.
Definition cfg.h:680
@ UBX_CFG_PM_OPERATEMODE_PSMOO
PSM ON/OFF operation.
Definition cfg.h:678
@ UBX_CFG_PM_OPERATEMODE_FULL
Normal operation, no power save mode active.
Definition cfg.h:676
ubx_cfg_key_qzss
CFG-QZSS configuration keys.
Definition cfg.h:694
ubx_cfg_key_rate
CFG-RATE configuration keys.
Definition cfg.h:712
ubx_cfg_key_rate_timeref
Values for UBX_CFG_KEY_RATE_TIMEREF (time system measurements are aligned to)
Definition cfg.h:719
@ UBX_CFG_RATE_TIMEREF_GLO
Definition cfg.h:722
@ UBX_CFG_RATE_TIMEREF_NAVIC
Definition cfg.h:725
@ UBX_CFG_RATE_TIMEREF_GPS
Definition cfg.h:721
@ UBX_CFG_RATE_TIMEREF_GAL
Definition cfg.h:724
@ UBX_CFG_RATE_TIMEREF_BDS
Definition cfg.h:723
@ UBX_CFG_RATE_TIMEREF_UTC
Definition cfg.h:720
ubx_cfg_key_rinv
CFG-RINV configuration keys.
Definition cfg.h:739
ubx_cfg_key_sbas_prnscanmask
Values for UBX_CFG_KEY_SBAS_PRNSCANMASK (SBAS PRNs to search for)
Definition cfg.h:769
ubx_cfg_key_sbas
CFG-SBAS configuration keys.
Definition cfg.h:760
@ UBX_CFG_SBAS_PRNSCANMASK_PRN123
Definition cfg.h:774
@ UBX_CFG_SBAS_PRNSCANMASK_PRN155
Definition cfg.h:806
@ UBX_CFG_SBAS_PRNSCANMASK_PRN138
Definition cfg.h:789
@ UBX_CFG_SBAS_PRNSCANMASK_PRN139
Definition cfg.h:790
@ UBX_CFG_SBAS_PRNSCANMASK_PRN126
Definition cfg.h:777
@ UBX_CFG_SBAS_PRNSCANMASK_PRN141
Definition cfg.h:792
@ UBX_CFG_SBAS_PRNSCANMASK_PRN157
Definition cfg.h:808
@ UBX_CFG_SBAS_PRNSCANMASK_PRN143
Definition cfg.h:794
@ UBX_CFG_SBAS_PRNSCANMASK_PRN130
Definition cfg.h:781
@ UBX_CFG_SBAS_PRNSCANMASK_PRN152
Definition cfg.h:803
@ UBX_CFG_SBAS_PRNSCANMASK_PRN151
Definition cfg.h:802
@ UBX_CFG_SBAS_PRNSCANMASK_PRN128
Definition cfg.h:779
@ UBX_CFG_SBAS_PRNSCANMASK_PRN144
Definition cfg.h:795
@ UBX_CFG_SBAS_PRNSCANMASK_PRN124
Definition cfg.h:775
@ UBX_CFG_SBAS_PRNSCANMASK_PRN125
Definition cfg.h:776
@ UBX_CFG_SBAS_PRNSCANMASK_PRN153
Definition cfg.h:804
@ UBX_CFG_SBAS_PRNSCANMASK_PRN122
Definition cfg.h:773
@ UBX_CFG_SBAS_PRNSCANMASK_PRN145
Definition cfg.h:796
@ UBX_CFG_SBAS_PRNSCANMASK_PRN154
Definition cfg.h:805
@ UBX_CFG_SBAS_PRNSCANMASK_PRN142
Definition cfg.h:793
@ UBX_CFG_SBAS_PRNSCANMASK_PRN156
Definition cfg.h:807
@ UBX_CFG_SBAS_PRNSCANMASK_PRN135
Definition cfg.h:786
@ UBX_CFG_SBAS_PRNSCANMASK_PRN136
Definition cfg.h:787
@ UBX_CFG_SBAS_PRNSCANMASK_PRN147
Definition cfg.h:798
@ UBX_CFG_SBAS_PRNSCANMASK_PRN131
Definition cfg.h:782
@ UBX_CFG_SBAS_PRNSCANMASK_PRN140
Definition cfg.h:791
@ UBX_CFG_SBAS_PRNSCANMASK_PRN120
Definition cfg.h:771
@ UBX_CFG_SBAS_PRNSCANMASK_PRN148
Definition cfg.h:799
@ UBX_CFG_SBAS_PRNSCANMASK_PRN150
Definition cfg.h:801
@ UBX_CFG_SBAS_PRNSCANMASK_ALL
Definition cfg.h:770
@ UBX_CFG_SBAS_PRNSCANMASK_PRN121
Definition cfg.h:772
@ UBX_CFG_SBAS_PRNSCANMASK_PRN149
Definition cfg.h:800
@ UBX_CFG_SBAS_PRNSCANMASK_PRN137
Definition cfg.h:788
@ UBX_CFG_SBAS_PRNSCANMASK_PRN132
Definition cfg.h:783
@ UBX_CFG_SBAS_PRNSCANMASK_PRN127
Definition cfg.h:778
@ UBX_CFG_SBAS_PRNSCANMASK_PRN158
Definition cfg.h:809
@ UBX_CFG_SBAS_PRNSCANMASK_PRN134
Definition cfg.h:785
@ UBX_CFG_SBAS_PRNSCANMASK_PRN146
Definition cfg.h:797
@ UBX_CFG_SBAS_PRNSCANMASK_PRN133
Definition cfg.h:784
@ UBX_CFG_SBAS_PRNSCANMASK_PRN129
Definition cfg.h:780
ubx_cfg_key_sec
CFG-SEC configuration keys.
Definition cfg.h:823
ubx_cfg_key_signal
CFG-SIGNAL configuration keys.
Definition cfg.h:840
ubx_cfg_key_spi
CFG-SPI configuration keys.
Definition cfg.h:868
ubx_cfg_key_spiinprot
CFG-SPIINPROT configuration keys.
Definition cfg.h:887
ubx_cfg_key_spioutprot
CFG-SPIOUTPROT configuration keys.
Definition cfg.h:903
ubx_cfg_key_tp_pulse_def
Values for UBX_CFG_KEY_TP_PULSE_DEF (time pulse period definition)
Definition cfg.h:941
ubx_cfg_key_tp_timegrid_tp1
Values for UBX_CFG_KEY_TP_TIMEGRID_TP1 (time pulse time grid)
Definition cfg.h:959
ubx_cfg_key_tp
CFG-TP configuration keys.
Definition cfg.h:919
ubx_cfg_key_tp_pol_tp1
Values for UBX_CFG_KEY_TP_POL_TP1 (time pulse polarity)
Definition cfg.h:953
ubx_cfg_key_tp_pulse_length_def
Values for UBX_CFG_KEY_TP_PULSE_LENGTH_DEF (time pulse length definition)
Definition cfg.h:947
@ UBX_CFG_TP_PULSE_DEF_PERIOD
Definition cfg.h:942
@ UBX_CFG_TP_PULSE_DEF_FREQ
Definition cfg.h:943
@ UBX_CFG_TP_TIMEGRID_TP1_GPS
Definition cfg.h:961
@ UBX_CFG_TP_TIMEGRID_TP1_UTC
Definition cfg.h:960
@ UBX_CFG_TP_TIMEGRID_TP1_BDS
Definition cfg.h:963
@ UBX_CFG_TP_TIMEGRID_TP1_GLO
Definition cfg.h:962
@ UBX_CFG_TP_TIMEGRID_TP1_GAL
Definition cfg.h:964
@ UBX_CFG_TP_TIMEGRID_TP1_LOCAL
Definition cfg.h:966
@ UBX_CFG_TP_TIMEGRID_TP1_NAVIC
Definition cfg.h:965
@ UBX_CFG_TP_POL_TP1_RISING_EDGE
Definition cfg.h:955
@ UBX_CFG_TP_POL_TP1_FALLING_EDGE
Definition cfg.h:954
@ UBX_CFG_TP_PULSE_LENGTH_DEF_RATIO
Definition cfg.h:948
@ UBX_CFG_TP_PULSE_LENGTH_DEF_LENGTH
Definition cfg.h:949
ubx_cfg_key_txready
CFG-TXREADY configuration keys.
Definition cfg.h:980
ubx_cfg_key_rate_txready_polarity
Values for UBX_CFG_KEY_TXREADY_POLARITY (TX ready pin polarity)
Definition cfg.h:989
ubx_cfg_key_rate_txready_interface
Values for UBX_CFG_KEY_TXREADY_INTERFACE (interface TX ready applies to)
Definition cfg.h:995
@ UBX_CFG_TXREADY_POLARITY_ACTIVE_LOW
Definition cfg.h:991
@ UBX_CFG_TXREADY_POLARITY_ACTIVE_HIGH
Definition cfg.h:990
@ UBX_CFG_TXREADY_INTERFACE_I2C
Definition cfg.h:996
@ UBX_CFG_TXREADY_INTERFACE_SPI
Definition cfg.h:997
ubx_cfg_key_uart1
CFG-UART1 configuration keys.
Definition cfg.h:1011
ubx_cfg_key_uart1inprot
CFG-UART1INPROT configuration keys.
Definition cfg.h:1030
ubx_cfg_key_uart1outprot
CFG-UART1OUTPROT configuration keys.
Definition cfg.h:1046
static int ubx_cfg_val_parse(const uint8_t **ptr, size_t *remaining, struct ubx_cfg_val *cfg)
Iteratively parse configuration values from a buffer.
Definition cfg.h:1178
static void ubx_msg_prepare_valset(struct net_buf_simple *buf, uint8_t layers)
Helper to prepare the common CFG-VALSET message.
Definition cfg.h:1061
static void ubx_msg_prepare_valget(struct net_buf_simple *buf, uint8_t layer, uint8_t offset)
Helper to prepare the common CFG-VALGET message.
Definition cfg.h:1078
static void ubx_msg_prepare(struct net_buf_simple *buf, uint8_t msg_class, uint8_t msg_id)
Prepare a net_buf_simple to be used as a UBX protocol message.
Definition protocol.h:1196
@ UBX_MSG_CLASS_CFG
Configuration input messages.
Definition protocol.h:59
@ UBX_MSG_ID_CFG_VALGET
Get configuration item values.
Definition protocol.h:143
@ UBX_MSG_ID_CFG_VALSET
Set configuration item values.
Definition protocol.h:141
Configuration value structure as returned by parser.
Definition cfg.h:1132
float r4
Definition cfg.h:1150
int8_t i1
Definition cfg.h:1141
int64_t i8
Definition cfg.h:1154
uint8_t l
Definition cfg.h:1137
uint32_t u4
Definition cfg.h:1146
uint16_t x2
Definition cfg.h:1144
uint16_t e2
Definition cfg.h:1143
double r8
Definition cfg.h:1155
uint64_t e8
Definition cfg.h:1152
int16_t i2
Definition cfg.h:1145
uint16_t u2
Definition cfg.h:1142
uint8_t x1
Definition cfg.h:1140
uint8_t e1
Definition cfg.h:1139
uint64_t u8
Definition cfg.h:1151
uint8_t u1
Definition cfg.h:1138
uint32_t key
Configuration key ID.
Definition cfg.h:1134
union ubx_cfg_val::@251015111260002307074370326166047173105021262317 val
Configuration key value.
int32_t i4
Definition cfg.h:1149
uint32_t e4
Definition cfg.h:1147
uint64_t x8
Definition cfg.h:1153
uint32_t x4
Definition cfg.h:1148
Poll request for UBX_MSG_ID_CFG_VALGET.
Definition protocol.h:485
uint16_t position
Number of values to skip before returning results.
Definition protocol.h:491
uint8_t layer
Configuration layer to read (ubx_msg_cfg_valget_layer)
Definition protocol.h:489
uint8_t version
Message version (0x00 for this version)
Definition protocol.h:487
Command for UBX_MSG_ID_CFG_VALSET (version 0, no transaction support)
Definition protocol.h:435
uint8_t layers
Configuration layers to update (ubx_msg_cfg_valset_layers)
Definition protocol.h:439
uint8_t version
Message version (0x00 for this version)
Definition protocol.h:437