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 <zephyr/net_buf.h>
15#include <zephyr/sys/byteorder.h>
16
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
38
40enum _ubx_cfg_key_size {
41 _UBX_CFG_KEY_SIZE_1BIT_ = (0x01 << 28),
42 _UBX_CFG_KEY_SIZE_1BYTE = (0x02 << 28),
43 _UBX_CFG_KEY_SIZE_2BYTE = (0x03 << 28),
44 _UBX_CFG_KEY_SIZE_4BYTE = (0x04 << 28),
45 _UBX_CFG_KEY_SIZE_8BYTE = (0x05 << 28),
46 _UBX_CFG_KEY_SIZE_MASK = (0x07 << 28),
47};
48
50enum _ubx_cfg_key_grp {
52 _UBX_CFG_KEY_GRP_ANA = (0x23 << 16),
54 _UBX_CFG_KEY_GRP_BATCH = (0x26 << 16),
56 _UBX_CFG_KEY_GRP_BDS = (0x34 << 16),
58 _UBX_CFG_KEY_GRP_HW = (0xa3 << 16),
60 _UBX_CFG_KEY_GRP_I2C = (0x51 << 16),
62 _UBX_CFG_KEY_GRP_I2CINPROT = (0x71 << 16),
64 _UBX_CFG_KEY_GRP_I2COUTPROT = (0x72 << 16),
66 _UBX_CFG_KEY_GRP_INFMSG = (0x92 << 16),
68 _UBX_CFG_KEY_GRP_ITFM = (0x41 << 16),
70 _UBX_CFG_KEY_GRP_MOT = (0x25 << 16),
72 _UBX_CFG_KEY_GRP_MSGOUT = (0x91 << 16),
74 _UBX_CFG_KEY_GRP_NAVSPG = (0x11 << 16),
76 _UBX_CFG_KEY_GRP_NMEA = (0x93 << 16),
78 _UBX_CFG_KEY_GRP_ODO = (0x22 << 16),
80 _UBX_CFG_KEY_GRP_PM = (0xd0 << 16),
82 _UBX_CFG_KEY_GRP_QZSS = (0x37 << 16),
84 _UBX_CFG_KEY_GRP_RATE = (0x21 << 16),
86 _UBX_CFG_KEY_GRP_RINV = (0xc7 << 16),
88 _UBX_CFG_KEY_GRP_SBAS = (0x36 << 16),
90 _UBX_CFG_KEY_GRP_SEC = (0xf6 << 16),
92 _UBX_CFG_KEY_GRP_SIGNAL = (0x31 << 16),
94 _UBX_CFG_KEY_GRP_SPI = (0x64 << 16),
96 _UBX_CFG_KEY_GRP_SPIINPROT = (0x79 << 16),
98 _UBX_CFG_KEY_GRP_SPIOUTPROT = (0x7a << 16),
100 _UBX_CFG_KEY_GRP_TP = (0x05 << 16),
102 _UBX_CFG_KEY_GRP_TXREADY = (0xa2 << 16),
104 _UBX_CFG_KEY_GRP_UART1 = (0x52 << 16),
106 _UBX_CFG_KEY_GRP_UART1INPROT = (0x73 << 16),
108 _UBX_CFG_KEY_GRP_UART1OUTPROT = (0x74 << 16),
109};
110
111#define _UBX_CFG_KEY_NAME(group, name) UBX_CFG_KEY_##group##_##name
112
121#define _UBX_CFG_KEY_DEFINE(size, group, id, name) \
122 _UBX_CFG_KEY_NAME(group, name) = (size | (_UBX_CFG_KEY_GRP_##group) | id)
123
129
131 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ANA, 0x01, USE_ANA),
132 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, ANA, 0x02, ORBMAXERR),
133};
134
138
144
146 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x13, ENABLE),
147 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x14, PIOENABLE),
148 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, BATCH, 0x15, MAXENTRIES),
149 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, BATCH, 0x16, WARNTHRS),
150 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x18, PIOACTIVELOW),
151 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, BATCH, 0x19, PIOID),
152 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x1a, EXTRAPVT),
153 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BATCH, 0x1b, EXTRAODO),
154};
155
159
165
167 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, BDS, 0x14, USE_GEO_PRN),
168};
169
173
179
181 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x2E, ANT_CFG_VOLTCTRL),
182 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x2F, ANT_CFG_SHORTDET),
183 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x30, ANT_CFG_SHORTDET_POL),
184 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x31, ANT_CFG_OPENDET),
185 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x32, ANT_CFG_OPENDET_POL),
186 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x33, ANT_CFG_PWRDOWN),
187 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x34, ANT_CFG_PWRDOWN_POL),
188 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, HW, 0x35, ANT_CFG_RECOVER),
189 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x36, ANT_SUP_SWITCH_PIN),
190 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x37, ANT_SUP_SHORT_PIN),
191 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x38, ANT_SUP_OPEN_PIN),
192 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, HW, 0x3C, ANT_ON_SHORT_US),
193 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x54, ANT_SUP_ENGINE),
194 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x55, ANT_SUP_SHORT_THR),
195 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x56, ANT_SUP_OPEN_THR),
196 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, HW, 0x57, RF_LNA_MODE),
197};
198
203
209
213
219
221 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, I2C, 1, ADDRESS),
222 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2C, 2, EXTENDEDTIMEOUT),
223 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2C, 3, ENABLED),
224};
225
229
235
237 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2CINPROT, 1, UBX),
238 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2CINPROT, 2, NMEA),
239};
240
244
250
252 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2COUTPROT, 1, UBX),
253 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, I2COUTPROT, 2, NMEA),
254};
255
259
265
267 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x01, UBX_I2C),
268 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x02, UBX_UART1),
269 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x05, UBX_SPI),
270 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x06, NMEA_I2C),
271 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x07, NMEA_UART1),
272 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, INFMSG, 0x0a, NMEA_SPI),
273};
274
275/* All messages in this class are always from this enum */
283
287
293
295 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ITFM, 0x01, BBTHRESHOLD),
296 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ITFM, 0x02, CWTHRESHOLD),
297 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ITFM, 0x0d, ENABLE),
298 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ITFM, 0x10, ANTSETTING),
299 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ITFM, 0x13, ENABLE_AUX),
300};
301
307
311
317
319 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MOT, 0x38, GNSSSPEED_THRS),
320 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, MOT, 0x3b, GNSSDIST_THRS),
321};
322
326
332
338#define _UBX_CFG_MSGOUT_KEY_DEFINE(i2c_val, name) \
339 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MSGOUT, (i2c_val), name##_I2C), \
340 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MSGOUT, (i2c_val + 1), name##_UART1), \
341 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, MSGOUT, (i2c_val + 4), name##_SPI)
342
344 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00a6, NMEA_ID_DTM_I2C),
345 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00aa, NMEA_ID_DTM_SPI),
346 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00a7, NMEA_ID_DTM_UART1),
347 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00dd, NMEA_ID_GBS_I2C),
348 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00e1, NMEA_ID_GBS_SPI),
349 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00de, NMEA_ID_GBS_UART1),
350 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ba, NMEA_ID_GGA_I2C),
351 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00be, NMEA_ID_GGA_SPI),
352 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00bb, NMEA_ID_GGA_UART1),
353 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c9, NMEA_ID_GLL_I2C),
354 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00cd, NMEA_ID_GLL_SPI),
355 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ca, NMEA_ID_GLL_UART1),
356 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b5, NMEA_ID_GNS_I2C),
357 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b9, NMEA_ID_GNS_SPI),
358 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b6, NMEA_ID_GNS_UART1),
359 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ce, NMEA_ID_GRS_I2C),
360 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d2, NMEA_ID_GRS_SPI),
361 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00cf, NMEA_ID_GRS_UART1),
362 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00bf, NMEA_ID_GSA_I2C),
363 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c3, NMEA_ID_GSA_SPI),
364 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c0, NMEA_ID_GSA_UART1),
365 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d3, NMEA_ID_GST_I2C),
366 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d7, NMEA_ID_GST_SPI),
367 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d4, NMEA_ID_GST_UART1),
368 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c4, NMEA_ID_GSV_I2C),
369 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c8, NMEA_ID_GSV_SPI),
370 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00c5, NMEA_ID_GSV_UART1),
371 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0400, NMEA_ID_RLM_I2C),
372 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0404, NMEA_ID_RLM_SPI),
373 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0401, NMEA_ID_RLM_UART1),
374 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ab, NMEA_ID_RMC_I2C),
375 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00af, NMEA_ID_RMC_SPI),
376 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ac, NMEA_ID_RMC_UART1),
377 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00e7, NMEA_ID_VLW_I2C),
378 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00eb, NMEA_ID_VLW_SPI),
379 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00e8, NMEA_ID_VLW_UART1),
380 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b0, NMEA_ID_VTG_I2C),
381 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b4, NMEA_ID_VTG_SPI),
382 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00b1, NMEA_ID_VTG_UART1),
383 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d8, NMEA_ID_ZDA_I2C),
384 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00dc, NMEA_ID_ZDA_SPI),
385 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00d9, NMEA_ID_ZDA_UART1),
386 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ec, PUBX_ID_POLYP_I2C),
387 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f0, PUBX_ID_POLYP_SPI),
388 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00ed, PUBX_ID_POLYP_UART1),
389 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f1, PUBX_ID_POLYS_I2C),
390 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f5, PUBX_ID_POLYS_SPI),
391 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f2, PUBX_ID_POLYS_UART1),
392 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f6, PUBX_ID_POLYT_I2C),
393 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00fa, PUBX_ID_POLYT_SPI),
394 _UBX_CFG_MSGOUT_KEY_DEFINE(0x00f7, PUBX_ID_POLYT_UART1),
395 _UBX_CFG_MSGOUT_KEY_DEFINE(0x034f, UBX_MON_COMMS),
396 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01b9, UBX_MON_HW2),
397 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0354, UBX_MON_HW3),
398 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01b4, UBX_MON_HW),
399 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01a5, UBX_MON_IO),
400 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0196, UBX_MON_MSGPP),
401 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0359, UBX_MON_RF),
402 _UBX_CFG_MSGOUT_KEY_DEFINE(0x01a0, UBX_MON_RXBUF),
403 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0187, UBX_MON_RXR),
404 _UBX_CFG_MSGOUT_KEY_DEFINE(0x038b, UBX_MON_SPAN),
405 _UBX_CFG_MSGOUT_KEY_DEFINE(0x019b, UBX_MON_TXBUF),
406 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0079, UBX_NAV_AOPSTATUS),
407 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0065, UBX_NAV_CLOCK),
408 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0083, UBX_NAV_COV),
409 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0038, UBX_NAV_DOP),
410 _UBX_CFG_MSGOUT_KEY_DEFINE(0x015f, UBX_NAV_EOE),
411 _UBX_CFG_MSGOUT_KEY_DEFINE(0x007e, UBX_NAV_ODO),
412 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0010, UBX_NAV_ORB),
413 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0024, UBX_NAV_PL),
414 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0024, UBX_NAV_POSECEF),
415 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0029, UBX_NAV_POSLLH),
416 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0006, UBX_NAV_PVT),
417 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0015, UBX_NAV_SAT),
418 _UBX_CFG_MSGOUT_KEY_DEFINE(0x006a, UBX_NAV_SBAS),
419 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0345, UBX_NAV_SIG),
420 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0336, UBX_NAV_SLAS),
421 _UBX_CFG_MSGOUT_KEY_DEFINE(0x001a, UBX_NAV_STATUS),
422 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0051, UBX_NAV_TIMEBDS),
423 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0056, UBX_NAV_TIMEGAL),
424 _UBX_CFG_MSGOUT_KEY_DEFINE(0x004c, UBX_NAV_TIMEGLO),
425 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0047, UBX_NAV_TIMEGPS),
426 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0060, UBX_NAV_TIMELS),
427 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0386, UBX_NAV_TIMEQZSS),
428 _UBX_CFG_MSGOUT_KEY_DEFINE(0x005b, UBX_NAV_TIMEUTC),
429 _UBX_CFG_MSGOUT_KEY_DEFINE(0x003d, UBX_NAV_VELECEF),
430 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0042, UBX_NAV_VELNED),
431 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0643, UBX_RXM_MEAS20),
432 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0648, UBX_RXM_MEAS50),
433 _UBX_CFG_MSGOUT_KEY_DEFINE(0x063e, UBX_RXM_MEASC12),
434 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0639, UBX_RXM_MEASD12),
435 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0204, UBX_RXM_MEASX),
436 _UBX_CFG_MSGOUT_KEY_DEFINE(0x025e, UBX_RXM_RLM),
437 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0231, UBX_RXM_SFRBX),
438 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0178, UBX_RXM_TIM_TM2),
439 _UBX_CFG_MSGOUT_KEY_DEFINE(0x017d, UBX_RXM_TIM_TP),
440 _UBX_CFG_MSGOUT_KEY_DEFINE(0x0092, UBX_RXM_TIM_VRFY),
441};
442
446
452
454 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0x11, FIXMODE),
455 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NAVSPG, 0x13, INIFIX3D),
456 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0x17, WKNROLLOVER),
457 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0x1c, UTCSTANDARD),
458 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0x21, DYNMODEL),
459 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NAVSPG, 0x25, ACKAIDING),
460 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa1, INFIL_MINSVS),
461 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa2, INFIL_MAXSVS),
462 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa3, INFIL_MINCNO),
463 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xa4, INFIL_MINELEV),
464 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xaa, INFIL_NCNOTHRS),
465 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xab, INFIL_CNOTHRS),
466 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb1, OUTFIL_PDOP),
467 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb2, OUTFIL_TDOP),
468 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb3, OUTFIL_PACC),
469 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb4, OUTFIL_TACC),
470 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NAVSPG, 0xb5, OUTFIL_FACC),
471 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, NAVSPG, 0xc1, CONSTR_ALT),
472 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, NAVSPG, 0xc2, CONSTR_ALTVAR),
473 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xc4, CONSTR_DGNSSTO),
474 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NAVSPG, 0xd6, SIGATTCOMP),
475};
476
482
499
506 /* Max Alt: 12 km Max Hor Vel: 310 m/s Max Ver Vel: 50 m/s */
508 /* Max Alt: 9 km Max Hor Vel: 10 m/s Max Ver Vel: 6 m/s */
510 /* Max Alt: 9 km Max Hor Vel: 30 m/s Max Ver Vel: 20 m/s */
512 /* Max Alt: 6 km Max Hor Vel: 100 m/s Max Ver Vel: 15 m/s */
514 /* Max Alt: 0.5 km Max Hor Vel: 25 m/s Max Ver Vel: 5 m/s */
516 /* Max Alt: 80 km Max Hor Vel: 100 m/s Max Ver Vel: 6400 m/s */
518 /* Max Alt: 80 km Max Hor Vel: 250 m/s Max Ver Vel: 10000 m/s */
520 /* Max Alt: 80 km Max Hor Vel: 500 m/s Max Ver Vel: 20000 m/s */
522 /* Max Alt: 9 km Max Hor Vel: 30 m/s Max Ver Vel: 20 m/s */
524 /* Unknown */
526 /* Unknown */
528 /* Unknown */
530};
531
535
541
543 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x01, PROTVER),
544 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x02, MAXSVS),
545 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x03, COMPAT),
546 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x04, CONSIDER),
547 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x05, LIMIT82),
548 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x06, HIGHPREC),
549 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x07, SVNUMBERING),
550
551 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x11, FILST_GPS),
552 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x12, FILST_SBAS),
553 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x13, FILST_GAL),
554 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x15, FILST_QZSS),
555 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x16, FILST_GLO),
556 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x17, FILST_BDS),
557 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x21, FILST_INVFIX),
558 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x22, FILST_MSKFIX),
559 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x23, FILST_INVTIME),
560 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x24, FILST_INVDATE),
561 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x25, FILST_ONLYGPS),
562 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, NMEA, 0x26, FILST_FROZENCOG),
563 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x31, MAINTALKERID),
564 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, NMEA, 0x32, GSVTALKERID),
565 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, NMEA, 0x33, BDSTALKERID),
566};
567
572
582
587
591
597
599 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x01, USE_ODO),
600 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x02, USE_COG),
601 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x03, OUTLPVEL),
602 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, ODO, 0x04, OUTLPCOG),
603 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x05, PROFILE),
604 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x21, COGMAXSPEED),
605 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x22, COGMAXPOSACC),
606 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x31, VELLPGAIN),
607 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, ODO, 0x32, COGLPGAIN),
608};
609
617
621
627
629 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, PM, 0x01, OPERATEMODE),
630 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x02, POSUPDATEPERIOD),
631 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x03, ACQPERIOD),
632 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x04, GRIDOFFSET),
633 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, PM, 0x05, ONTIME),
634 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, PM, 0x06, MINACQTIME),
635 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, PM, 0x07, MAXACQTIME),
636 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x08, DONOTENTEROFF),
637 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x09, WAITTIMEFIX),
638 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0a, UPDATEEPH),
639 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0c, EXTINTWAKE),
640 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0d, EXTINTBACKUP),
641 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x0e, EXTINTINACTIVE),
642 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, PM, 0x0f, EXTINTINACTIVITY),
643 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, PM, 0x10, LIMITPEAKCURR),
644};
645
654
658
664
666 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, QZSS, 0x05, USE_SLAS_DGNSS),
667 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, QZSS, 0x06, USE_SLAS_TESTMODE),
668 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, QZSS, 0x07, USE_SLAS_RAIM_),
669 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, QZSS, 0x08, SLAS_MAX_BASELINE),
670};
671
675
681
683 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, RATE, 1, MEAS),
684 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, RATE, 2, NAV),
685 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, RATE, 3, TIMEREF),
686};
687
696
700
706
708 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, RINV, 0x01, DUMP),
709 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, RINV, 0x02, BINARY),
710 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, RINV, 0x03, DATA_SIZE),
711 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x04, CHUNK0),
712 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x05, CHUNK1),
713 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x06, CHUNK2),
714 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, RINV, 0x07, CHUNK3),
715};
716
720
726
728 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x02, USE_TESTMODE),
729 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x03, USE_RANGING),
730 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x04, USE_DIFFCORR),
731 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SBAS, 0x05, USE_INTEGRITY),
732 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, SBAS, 0x06, PRNSCANMASK),
733};
734
776};
777
781
787
789 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SEC, 0x09, CFG_LOCK),
790 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, SEC, 0x0a, CFG_LOCK_UNLOCKGRP1),
791 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, SEC, 0x0b, CFG_LOCK_UNLOCKGRP2),
792};
793
797
803
805 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x1f, GPS_ENA),
806 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x01, GPS_L1CA_ENA),
807 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x20, SBAS_ENA),
808 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x05, SBAS_L1CA_ENA),
809 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x21, GALILEO_ENA),
810 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x07, GALILEO_E1_ENA),
811 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x22, BEIDOU_ENA),
812 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x0d, BEIDOU_B1I_ENA),
813 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x0f, BEIDOU_B1C_ENA),
814 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x24, QZSS_ENA),
815 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x12, QZSS_L1CA_ENA),
816 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x14, QZSS_L1S_ENA),
817 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x25, GLONASS_ENA),
818 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SIGNAL, 0x18, GLONASS_L1CA_ENA),
819};
820
824
830
832 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, SPI, 0x01, MAXFF),
833 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x02, CPOLARITY),
834 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x03, CPHASE),
835 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x05, EXTENDEDTIMEOUT),
836 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPI, 0x06, ENABLED),
837};
838
842
848
850 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIINPROT, 0x01, UBX),
851 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIINPROT, 0x02, NMEA),
852};
853
857
863
865 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIOUTPROT, 0x01, UBX),
866 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, SPIOUTPROT, 0x02, NMEA),
867};
868
872
878
880 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TP, 0x23, PULSE_DEF),
881 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TP, 0x30, PULSE_LENGTH_DEF),
882 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, TP, 0x01, CABLEDELAY),
883 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x02, PERIOD_TP1),
884 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x03, PERIOD_LOCK_TP1),
885 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x24, FREQ_TP1),
886 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x25, FREQ_LOCK_TP1),
887 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x04, LEN_TP1),
888 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x05, LEN_LOCK_TP1),
889 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, TP, 0x2a, DUTY_TP1),
890 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_8BYTE, TP, 0x2b, DUTY_LOCK_TP1),
891 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, TP, 0x06, USER_DELAY_TP1),
892 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x07, TP1_ENA),
893 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x08, SYNC_GNSS_TP1),
894 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x09, USE_LOCKED_TP1),
895 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x0a, ALIGN_TO_TOW_TP1),
896 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TP, 0x0b, POL_TP1),
897 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TP, 0x0c, TIMEGRID_TP1),
898};
899
904
909
914
924
928
934
936 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TXREADY, 1, ENABLED),
937 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, TXREADY, 2, POLARITY),
938 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TXREADY, 3, PIN),
939 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_2BYTE, TXREADY, 4, THRESHOLD),
940 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, TXREADY, 5, INTERFACE),
941};
942
947
952
956
962
964 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_4BYTE, UART1, 1, BAUDRATE),
965 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, UART1, 2, STOPBITS),
966 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, UART1, 3, DATABITS),
967 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BYTE, UART1, 4, PARITY),
968 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1, 5, ENABLED),
969};
970
974
980
982 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1INPROT, 0x01, UBX),
983 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1INPROT, 0x02, NMEA),
984};
985
989
995
997 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1OUTPROT, 0x01, UBX),
998 _UBX_CFG_KEY_DEFINE(_UBX_CFG_KEY_SIZE_1BIT_, UART1OUTPROT, 0x02, NMEA),
999};
1000
1004
1011static inline void ubx_msg_prepare_valset(struct net_buf_simple *buf, uint8_t layers)
1012{
1013 struct ubx_msg_cfg_valset_v0 *valset;
1014
1016 valset = net_buf_simple_add(buf, sizeof(*valset));
1017 valset->version = 0x00;
1018 valset->layers = layers;
1019}
1020
1028static inline void ubx_msg_prepare_valget(struct net_buf_simple *buf, uint8_t layer, uint8_t offset)
1029{
1030 struct ubx_msg_cfg_valget_query *valget;
1031
1033 valget = net_buf_simple_add(buf, sizeof(*valget));
1034 valget->version = 0x00;
1035 valget->layer = layer;
1036 valget->position = offset;
1037}
1038
1050#define UBX_CFG_VALUE_APPEND(buf, key, value) \
1051 net_buf_simple_add_le32(buf, key); \
1052 switch (key & _UBX_CFG_KEY_SIZE_MASK) { \
1053 case _UBX_CFG_KEY_SIZE_1BIT_: \
1054 net_buf_simple_add_u8(buf, value ? 0x01 : 0x00); \
1055 break; \
1056 case _UBX_CFG_KEY_SIZE_1BYTE: \
1057 net_buf_simple_add_u8(buf, value); \
1058 break; \
1059 case _UBX_CFG_KEY_SIZE_2BYTE: \
1060 net_buf_simple_add_le16(buf, value); \
1061 break; \
1062 case _UBX_CFG_KEY_SIZE_4BYTE: \
1063 net_buf_simple_add_le32(buf, value); \
1064 break; \
1065 default: \
1066 net_buf_simple_add_le64(buf, value); \
1067 break; \
1068 }
1069
1073 uint32_t key;
1075 union {
1076 uint8_t l;
1077 uint8_t u1;
1078 uint8_t e1;
1079 uint8_t x1;
1080 int8_t i1;
1081 uint16_t u2;
1082 uint16_t e2;
1083 uint16_t x2;
1084 int16_t i2;
1085 uint32_t u4;
1086 uint32_t e4;
1087 uint32_t x4;
1088 int32_t i4;
1089 float r4;
1090 uint64_t u8;
1091 uint64_t e8;
1092 uint64_t x8;
1093 int64_t i8;
1094 double r8;
1096};
1097
1117static inline int ubx_cfg_val_parse(const uint8_t **ptr, size_t *remaining, struct ubx_cfg_val *cfg)
1118{
1119 if (*remaining <= 4) {
1120 return -ENOMEM;
1121 }
1122 cfg->key = sys_get_le32(*ptr);
1123 *ptr += 4;
1124 switch (cfg->key & _UBX_CFG_KEY_SIZE_MASK) {
1125 case _UBX_CFG_KEY_SIZE_1BIT_:
1126 case _UBX_CFG_KEY_SIZE_1BYTE:
1127 cfg->val.u1 = **ptr;
1128 *ptr += 1;
1129 *remaining -= 1;
1130 break;
1131 case _UBX_CFG_KEY_SIZE_2BYTE:
1132 cfg->val.u2 = sys_get_le16(*ptr);
1133 *ptr += 2;
1134 *remaining -= 2;
1135 break;
1136 case _UBX_CFG_KEY_SIZE_4BYTE:
1137 cfg->val.u4 = sys_get_le32(*ptr);
1138 *ptr += 4;
1139 *remaining -= 4;
1140 break;
1141 case _UBX_CFG_KEY_SIZE_8BYTE:
1142 cfg->val.u8 = sys_get_le64(*ptr);
1143 *ptr += 8;
1144 *remaining -= 8;
1145 break;
1146 default:
1147 return -EINVAL;
1148 }
1149 return 0;
1150}
1151
1155
1156#ifdef __cplusplus
1157}
1158#endif
1159
1160#endif /* INFUSE_GNSS_UBX_CFG_H_ */
ubx_cfg_key_ana
Definition cfg.h:130
ubx_cfg_key_batch
Definition cfg.h:145
ubx_cfg_key_bds
Definition cfg.h:166
ubx_cfg_key_hw_rf_lna_mode
Definition cfg.h:204
ubx_cfg_key_hw
Definition cfg.h:180
ubx_cfg_key_hw_ant_sup_engine
Definition cfg.h:199
@ UBX_CFG_HW_RF_LNA_MODE_LOWGAIN
Definition cfg.h:206
@ UBX_CFG_HW_RF_LNA_MODE_NORMAL
Definition cfg.h:205
@ UBX_CFG_HW_RF_LNA_MODE_BYPASS
Definition cfg.h:207
@ UBX_CFG_HW_ANT_SUP_ENGINE_EXT
Definition cfg.h:200
@ UBX_CFG_HW_ANT_SUP_ENGINE_MADC
Definition cfg.h:201
ubx_cfg_key_i2cinprot
Definition cfg.h:236
ubx_cfg_key_i2coutprot
Definition cfg.h:251
ubx_cfg_key_i2c
Definition cfg.h:220
ubx_cfg_key_infmsg
Definition cfg.h:266
ubx_cfg_key_infmsg_all
Definition cfg.h:276
@ UBX_CFG_INFMSG_ALL_TEST
Definition cfg.h:280
@ UBX_CFG_INFMSG_ALL_WARNING
Definition cfg.h:278
@ UBX_CFG_INFMSG_ALL_NOTICE
Definition cfg.h:279
@ UBX_CFG_INFMSG_ALL_ERROR
Definition cfg.h:277
@ UBX_CFG_INFMSG_ALL_DEBUG
Definition cfg.h:281
ubx_cfg_key_itfm_antsetting
Definition cfg.h:302
ubx_cfg_key_itfm
Definition cfg.h:294
@ UBX_CFG_ITFM_ANTSETTING_UNKNOWN
Definition cfg.h:303
@ UBX_CFG_ITFM_ANTSETTING_ACTIVE
Definition cfg.h:305
@ UBX_CFG_ITFM_ANTSETTING_PASSIVE
Definition cfg.h:304
ubx_cfg_key_mot
Definition cfg.h:318
ubx_cfg_key_msgout
Definition cfg.h:343
ubx_cfg_key_navspg_dynmodel
Dynamic model for the modem.
Definition cfg.h:505
ubx_cfg_key_navspg_utcstandard
Definition cfg.h:483
ubx_cfg_key_navspg_fixmode
Definition cfg.h:477
ubx_cfg_key_navspg
Definition cfg.h:453
@ UBX_CFG_NAVSPG_DYNMODEL_ESCOOTER
Definition cfg.h:529
@ UBX_CFG_NAVSPG_DYNMODEL_AIRBORNE4G
Definition cfg.h:521
@ UBX_CFG_NAVSPG_DYNMODEL_BIKE
Definition cfg.h:525
@ UBX_CFG_NAVSPG_DYNMODEL_AIRBORNE2G
Definition cfg.h:519
@ UBX_CFG_NAVSPG_DYNMODEL_AIRBORNE1G
Definition cfg.h:517
@ UBX_CFG_NAVSPG_DYNMODEL_PEDESTRIAN
Definition cfg.h:511
@ UBX_CFG_NAVSPG_DYNMODEL_MOWER
Definition cfg.h:527
@ UBX_CFG_NAVSPG_DYNMODEL_SEA
Definition cfg.h:515
@ UBX_CFG_NAVSPG_DYNMODEL_PORTABLE
Definition cfg.h:507
@ UBX_CFG_NAVSPG_DYNMODEL_STATIONARY
Definition cfg.h:509
@ UBX_CFG_NAVSPG_DYNMODEL_AUTOMOTIVE
Definition cfg.h:513
@ UBX_CFG_NAVSPG_DYNMODEL_WRIST
Definition cfg.h:523
@ UBX_CFG_NAVSPG_UTCSTANDARD_SU
Former Soviet Union (GLONASS)
Definition cfg.h:491
@ UBX_CFG_NAVSPG_UTCSTANDARD_EU
Derived from multiple European laboratories (Galileo)
Definition cfg.h:489
@ UBX_CFG_NAVSPG_UTCSTANDARD_NTSC
National Time Service Center, China (BeiDou)
Definition cfg.h:493
@ UBX_CFG_NAVSPG_UTCSTANDARD_USNO
U.S.
Definition cfg.h:487
@ UBX_CFG_NAVSPG_UTCSTANDARD_AUTO
Automatically selected based on receiver configuration.
Definition cfg.h:485
@ UBX_CFG_NAVSPG_UTCSTANDARD_NICT
National Institute of Information and Communications Technology, Japan (QZSS)
Definition cfg.h:497
@ UBX_CFG_NAVSPG_UTCSTANDARD_NPLI
National Physics Laboratory, India (NAVIC)
Definition cfg.h:495
@ UBX_CFG_NAVSPG_FIXMODE_3DONLY
Definition cfg.h:479
@ UBX_CFG_NAVSPG_FIXMODE_2DONLY
Definition cfg.h:478
@ UBX_CFG_NAVSPG_FIXMODE_AUTO
Definition cfg.h:480
ubx_cfg_key_nmea_gsvtalkerid
Definition cfg.h:583
ubx_cfg_key_nmea_maintalkerid
Definition cfg.h:573
ubx_cfg_key_nmea
Definition cfg.h:542
ubx_cfg_key_nmea_svnumbering
Definition cfg.h:568
@ UBX_CFG_NMEA_GSVTALKERID_GNSS
Definition cfg.h:584
@ UBX_CFG_NMEA_GSVTALKERID_MAIN
Definition cfg.h:585
@ UBX_CFG_NMEA_MAINTALKERID_GP
Definition cfg.h:575
@ UBX_CFG_NMEA_MAINTALKERID_GL
Definition cfg.h:576
@ UBX_CFG_NMEA_MAINTALKERID_GN
Definition cfg.h:577
@ UBX_CFG_NMEA_MAINTALKERID_GA
Definition cfg.h:578
@ UBX_CFG_NMEA_MAINTALKERID_AUTO
Definition cfg.h:574
@ UBX_CFG_NMEA_MAINTALKERID_GQ
Definition cfg.h:580
@ UBX_CFG_NMEA_MAINTALKERID_GB
Definition cfg.h:579
@ UBX_CFG_NMEA_SVNUMBERING_STRICT
Definition cfg.h:569
@ UBX_CFG_NMEA_SVNUMBERING_EXTENDED
Definition cfg.h:570
ubx_cfg_key_odo
Definition cfg.h:598
ubx_cfg_key_odo_profile
Definition cfg.h:610
@ UBX_CFG_ODO_PROFILE_SWIM
Definition cfg.h:613
@ UBX_CFG_ODO_PROFILE_CYCL
Definition cfg.h:612
@ UBX_CFG_ODO_PROFILE_RUN
Definition cfg.h:611
@ UBX_CFG_ODO_PROFILE_CAR
Definition cfg.h:614
@ UBX_CFG_ODO_PROFILE_CUSTOM
Definition cfg.h:615
ubx_cfg_key_pm_operatemode
Definition cfg.h:646
ubx_cfg_key_pm
Definition cfg.h:628
@ UBX_CFG_PM_OPERATEMODE_PSMCT
PSM cyclic tracking operation.
Definition cfg.h:652
@ UBX_CFG_PM_OPERATEMODE_PSMOO
PSM ON/OFF operation.
Definition cfg.h:650
@ UBX_CFG_PM_OPERATEMODE_FULL
Normal operation, no power save mode active.
Definition cfg.h:648
ubx_cfg_key_qzss
Definition cfg.h:665
ubx_cfg_key_rate
Definition cfg.h:682
ubx_cfg_key_rate_timeref
Definition cfg.h:688
@ UBX_CFG_RATE_TIMEREF_GLO
Definition cfg.h:691
@ UBX_CFG_RATE_TIMEREF_NAVIC
Definition cfg.h:694
@ UBX_CFG_RATE_TIMEREF_GPS
Definition cfg.h:690
@ UBX_CFG_RATE_TIMEREF_GAL
Definition cfg.h:693
@ UBX_CFG_RATE_TIMEREF_BDS
Definition cfg.h:692
@ UBX_CFG_RATE_TIMEREF_UTC
Definition cfg.h:689
ubx_cfg_key_rinv
Definition cfg.h:707
ubx_cfg_key_sbas_prnscanmask
Definition cfg.h:735
ubx_cfg_key_sbas
Definition cfg.h:727
@ UBX_CFG_SBAS_PRNSCANMASK_PRN123
Definition cfg.h:740
@ UBX_CFG_SBAS_PRNSCANMASK_PRN155
Definition cfg.h:772
@ UBX_CFG_SBAS_PRNSCANMASK_PRN138
Definition cfg.h:755
@ UBX_CFG_SBAS_PRNSCANMASK_PRN139
Definition cfg.h:756
@ UBX_CFG_SBAS_PRNSCANMASK_PRN126
Definition cfg.h:743
@ UBX_CFG_SBAS_PRNSCANMASK_PRN141
Definition cfg.h:758
@ UBX_CFG_SBAS_PRNSCANMASK_PRN157
Definition cfg.h:774
@ UBX_CFG_SBAS_PRNSCANMASK_PRN143
Definition cfg.h:760
@ UBX_CFG_SBAS_PRNSCANMASK_PRN130
Definition cfg.h:747
@ UBX_CFG_SBAS_PRNSCANMASK_PRN152
Definition cfg.h:769
@ UBX_CFG_SBAS_PRNSCANMASK_PRN151
Definition cfg.h:768
@ UBX_CFG_SBAS_PRNSCANMASK_PRN128
Definition cfg.h:745
@ UBX_CFG_SBAS_PRNSCANMASK_PRN144
Definition cfg.h:761
@ UBX_CFG_SBAS_PRNSCANMASK_PRN124
Definition cfg.h:741
@ UBX_CFG_SBAS_PRNSCANMASK_PRN125
Definition cfg.h:742
@ UBX_CFG_SBAS_PRNSCANMASK_PRN153
Definition cfg.h:770
@ UBX_CFG_SBAS_PRNSCANMASK_PRN122
Definition cfg.h:739
@ UBX_CFG_SBAS_PRNSCANMASK_PRN145
Definition cfg.h:762
@ UBX_CFG_SBAS_PRNSCANMASK_PRN154
Definition cfg.h:771
@ UBX_CFG_SBAS_PRNSCANMASK_PRN142
Definition cfg.h:759
@ UBX_CFG_SBAS_PRNSCANMASK_PRN156
Definition cfg.h:773
@ UBX_CFG_SBAS_PRNSCANMASK_PRN135
Definition cfg.h:752
@ UBX_CFG_SBAS_PRNSCANMASK_PRN136
Definition cfg.h:753
@ UBX_CFG_SBAS_PRNSCANMASK_PRN147
Definition cfg.h:764
@ UBX_CFG_SBAS_PRNSCANMASK_PRN131
Definition cfg.h:748
@ UBX_CFG_SBAS_PRNSCANMASK_PRN140
Definition cfg.h:757
@ UBX_CFG_SBAS_PRNSCANMASK_PRN120
Definition cfg.h:737
@ UBX_CFG_SBAS_PRNSCANMASK_PRN148
Definition cfg.h:765
@ UBX_CFG_SBAS_PRNSCANMASK_PRN150
Definition cfg.h:767
@ UBX_CFG_SBAS_PRNSCANMASK_ALL
Definition cfg.h:736
@ UBX_CFG_SBAS_PRNSCANMASK_PRN121
Definition cfg.h:738
@ UBX_CFG_SBAS_PRNSCANMASK_PRN149
Definition cfg.h:766
@ UBX_CFG_SBAS_PRNSCANMASK_PRN137
Definition cfg.h:754
@ UBX_CFG_SBAS_PRNSCANMASK_PRN132
Definition cfg.h:749
@ UBX_CFG_SBAS_PRNSCANMASK_PRN127
Definition cfg.h:744
@ UBX_CFG_SBAS_PRNSCANMASK_PRN158
Definition cfg.h:775
@ UBX_CFG_SBAS_PRNSCANMASK_PRN134
Definition cfg.h:751
@ UBX_CFG_SBAS_PRNSCANMASK_PRN146
Definition cfg.h:763
@ UBX_CFG_SBAS_PRNSCANMASK_PRN133
Definition cfg.h:750
@ UBX_CFG_SBAS_PRNSCANMASK_PRN129
Definition cfg.h:746
ubx_cfg_key_sec
Definition cfg.h:788
ubx_cfg_key_signal
Definition cfg.h:804
ubx_cfg_key_spiinprot
Definition cfg.h:849
ubx_cfg_key_spioutprot
Definition cfg.h:864
ubx_cfg_key_spi
Definition cfg.h:831
ubx_cfg_key_tp_pulse_def
Definition cfg.h:900
ubx_cfg_key_tp_timegrid_tp1
Definition cfg.h:915
ubx_cfg_key_tp
Definition cfg.h:879
ubx_cfg_key_tp_pol_tp1
Definition cfg.h:910
ubx_cfg_key_tp_pulse_length_def
Definition cfg.h:905
@ UBX_CFG_TP_PULSE_DEF_PERIOD
Definition cfg.h:901
@ UBX_CFG_TP_PULSE_DEF_FREQ
Definition cfg.h:902
@ UBX_CFG_TP_TIMEGRID_TP1_GPS
Definition cfg.h:917
@ UBX_CFG_TP_TIMEGRID_TP1_UTC
Definition cfg.h:916
@ UBX_CFG_TP_TIMEGRID_TP1_BDS
Definition cfg.h:919
@ UBX_CFG_TP_TIMEGRID_TP1_GLO
Definition cfg.h:918
@ UBX_CFG_TP_TIMEGRID_TP1_GAL
Definition cfg.h:920
@ UBX_CFG_TP_TIMEGRID_TP1_LOCAL
Definition cfg.h:922
@ UBX_CFG_TP_TIMEGRID_TP1_NAVIC
Definition cfg.h:921
@ UBX_CFG_TP_POL_TP1_RISING_EDGE
Definition cfg.h:912
@ UBX_CFG_TP_POL_TP1_FALLING_EDGE
Definition cfg.h:911
@ UBX_CFG_TP_PULSE_LENGTH_DEF_RATIO
Definition cfg.h:906
@ UBX_CFG_TP_PULSE_LENGTH_DEF_LENGTH
Definition cfg.h:907
ubx_cfg_key_txready
Definition cfg.h:935
ubx_cfg_key_rate_txready_polarity
Definition cfg.h:943
ubx_cfg_key_rate_txready_interface
Definition cfg.h:948
@ UBX_CFG_TXREADY_POLARITY_ACTIVE_LOW
Definition cfg.h:945
@ UBX_CFG_TXREADY_POLARITY_ACTIVE_HIGH
Definition cfg.h:944
@ UBX_CFG_TXREADY_INTERFACE_I2C
Definition cfg.h:949
@ UBX_CFG_TXREADY_INTERFACE_SPI
Definition cfg.h:950
ubx_cfg_key_uart1inprot
Definition cfg.h:981
ubx_cfg_key_uart1outprot
Definition cfg.h:996
ubx_cfg_key_uart1
Definition cfg.h:963
@ UBX_MSG_ID_CFG_VALGET
Definition protocol.h:104
@ UBX_MSG_ID_CFG_VALSET
Definition protocol.h:103
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:1117
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:1011
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:1028
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:847
@ UBX_MSG_CLASS_CFG
Definition protocol.h:47
Configuration value structure as returned by parser.
Definition cfg.h:1071
float r4
Definition cfg.h:1089
int8_t i1
Definition cfg.h:1080
int64_t i8
Definition cfg.h:1093
uint8_t l
Definition cfg.h:1076
uint32_t u4
Definition cfg.h:1085
uint16_t x2
Definition cfg.h:1083
uint16_t e2
Definition cfg.h:1082
double r8
Definition cfg.h:1094
uint64_t e8
Definition cfg.h:1091
int16_t i2
Definition cfg.h:1084
uint16_t u2
Definition cfg.h:1081
uint8_t x1
Definition cfg.h:1079
uint8_t e1
Definition cfg.h:1078
uint64_t u8
Definition cfg.h:1090
uint8_t u1
Definition cfg.h:1077
uint32_t key
Configuration key ID.
Definition cfg.h:1073
union ubx_cfg_val::@251015111260002307074370326166047173105021262317 val
Configuration key value.
int32_t i4
Definition cfg.h:1088
uint32_t e4
Definition cfg.h:1086
uint64_t x8
Definition cfg.h:1092
uint32_t x4
Definition cfg.h:1087
Query for UBX_MSG_ID_CFG_VALGET.
Definition protocol.h:315
uint16_t position
Definition protocol.h:318
uint8_t layer
Definition protocol.h:317
uint8_t version
Definition protocol.h:316
UBX_MSG_ID_CFG_VALSET
Definition protocol.h:283
uint8_t layers
Definition protocol.h:285
uint8_t version
Definition protocol.h:284