From d1a8c5f14c56482136039f2020396d0e3594d39d Mon Sep 17 00:00:00 2001 From: PaulZC Date: Thu, 1 Aug 2024 11:10:23 +0100 Subject: [PATCH 1/3] Add keys for HPG 1.50 --- ...on_UBXDOC-963802114-12815_keys_sorted.txt} | 37 ++++++++++++++++--- keys/u-blox_config_keys_sorted.txt | 17 +++++++++ src/u-blox_config_keys.h | 24 +++++++++++- 3 files changed, 70 insertions(+), 8 deletions(-) rename keys/{u-blox-F9-HPG-1.32_InterfaceDescription_UBX-22008968_keys_sorted.txt => u-blox-F9-HPG-1.50_InterfaceDescription_UBXDOC-963802114-12815_keys_sorted.txt} (96%) diff --git a/keys/u-blox-F9-HPG-1.32_InterfaceDescription_UBX-22008968_keys_sorted.txt b/keys/u-blox-F9-HPG-1.50_InterfaceDescription_UBXDOC-963802114-12815_keys_sorted.txt similarity index 96% rename from keys/u-blox-F9-HPG-1.32_InterfaceDescription_UBX-22008968_keys_sorted.txt rename to keys/u-blox-F9-HPG-1.50_InterfaceDescription_UBXDOC-963802114-12815_keys_sorted.txt index 7c16f91..79eb9dc 100644 --- a/keys/u-blox-F9-HPG-1.32_InterfaceDescription_UBX-22008968_keys_sorted.txt +++ b/keys/u-blox-F9-HPG-1.50_InterfaceDescription_UBXDOC-963802114-12815_keys_sorted.txt @@ -7,8 +7,10 @@ 0x10110025 0x10110061 0x101100d7 +0x101100dd 0x10170001 0x10170002 +0x10170003 0x10220001 0x10220002 0x10220003 @@ -37,15 +39,16 @@ 0x10310024 0x10310025 0x10340014 +0x10350005 +0x10350009 0x10360002 0x10360003 0x10360004 0x10360005 +0x10360007 0x10370005 0x10370006 0x10370007 -0x1041000d -0x10410013 0x10510002 0x10510003 0x10520005 @@ -120,9 +123,10 @@ 0x10c70001 0x10c70002 0x10de0002 -0x10de0003 0x10de0004 0x10f60009 +0x10f60051 +0x10f6005d 0x20030001 0x20030002 0x20030006 @@ -157,9 +161,7 @@ 0x20240013 0x20240014 0x20250038 -0x20410001 -0x20410002 -0x20410010 +0x20350007 0x20510001 0x20520002 0x20520003 @@ -548,6 +550,11 @@ 0x2091038d 0x2091038e 0x2091038f +0x209103a8 +0x209103a9 +0x209103aa +0x209103ab +0x209103ac 0x20910400 0x20910401 0x20910402 @@ -678,6 +685,11 @@ 0x20910607 0x20910608 0x20910609 +0x20910634 +0x20910635 +0x20910636 +0x20910637 +0x20910638 0x20910652 0x20910653 0x20910654 @@ -713,6 +725,11 @@ 0x20910681 0x20910682 0x20910683 +0x20910689 +0x2091068a +0x2091068b +0x2091068c +0x2091068d 0x2091069d 0x2091069e 0x2091069f @@ -723,6 +740,11 @@ 0x209106b8 0x209106b9 0x209106ba +0x209106ca +0x209106cb +0x209106cc +0x209106cd +0x209106ce 0x20920001 0x20920002 0x20920003 @@ -757,15 +779,18 @@ 0x301100b3 0x301100b4 0x301100b5 +0x301100de 0x30210001 0x30210002 0x3025003b +0x30360008 0x30370008 0x3065000a 0x3065000b 0x3065000c 0x30930033 0x30a20004 +0x30a3003c 0x30de0005 0x30de0006 0x30de0007 diff --git a/keys/u-blox_config_keys_sorted.txt b/keys/u-blox_config_keys_sorted.txt index 22273db..d7b0363 100644 --- a/keys/u-blox_config_keys_sorted.txt +++ b/keys/u-blox_config_keys_sorted.txt @@ -26,8 +26,10 @@ 0x10110025 0x10110061 0x101100d7 +0x101100dd 0x10170001 0x10170002 +0x10170003 0x10220001 0x10220002 0x10220003 @@ -64,6 +66,8 @@ 0x10310026 0x10310028 0x10340014 +0x10350005 +0x10350009 0x10360002 0x10360003 0x10360004 @@ -168,6 +172,7 @@ 0x10de0004 0x10f60009 0x10f60051 +0x10f6005d 0x20030001 0x20030002 0x20030006 @@ -213,6 +218,7 @@ 0x20240013 0x20240014 0x20250038 +0x20350007 0x20370020 0x20370030 0x20370050 @@ -682,6 +688,11 @@ 0x2091038d 0x2091038e 0x2091038f +0x209103a8 +0x209103a9 +0x209103aa +0x209103ab +0x209103ac 0x20910400 0x20910401 0x20910402 @@ -902,6 +913,11 @@ 0x209106b8 0x209106b9 0x209106ba +0x209106ca +0x209106cb +0x209106cc +0x209106cd +0x209106ce 0x20920001 0x20920002 0x20920003 @@ -950,6 +966,7 @@ 0x301100b3 0x301100b4 0x301100b5 +0x301100de 0x30210001 0x30210002 0x30230002 diff --git a/src/u-blox_config_keys.h b/src/u-blox_config_keys.h index 7a1e4ed..40bb690 100644 --- a/src/u-blox_config_keys.h +++ b/src/u-blox_config_keys.h @@ -132,6 +132,12 @@ const uint32_t UBLOX_CFG_BDS_USE_PRN_1_TO_5 = UBX_CFG_L | 0x10340014; // Use Bei //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- const uint32_t UBLOX_CFG_CLOCK_OSC_FREQ = UBX_CFG_U4 | 0x40a4000d; // Oscillator speed +// CFG-GAL: Galileo system configuration +//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +const uint32_t UBLOX_CFG_GAL_USE_OSNMA = UBX_CFG_L | 0x10350005; // Enable using Galileo Open Service Navigation Message Authentication (OSNMA) protocol +const uint32_t UBLOX_CFG_GAL_OSNMA_MINTAGLENGTH = UBX_CFG_U1 | 0x20350007; // Minimum equivalent tag length +const uint32_t UBLOX_CFG_GAL_OSNMA_TIMESYNC = UBX_CFG_L | 0x10350009; // Apply the time synchronization requirement + // CFG-GEOFENCE: Geofencing configuration //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- const uint32_t UBLOX_CFG_GEOFENCE_CONFLVL = UBX_CFG_E1 | 0x20240011; // Required confidence level for state evaluation @@ -588,6 +594,11 @@ const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_SPI = UBX_CFG_U1 | 0x2091038a; const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART1 = UBX_CFG_U1 | 0x20910387; // Output rate of the UBX-NAV-TIMEQZSSmessage on port UART1 const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART2 = UBX_CFG_U1 | 0x20910388; // Output rate of the UBX-NAV-TIMEQZSSmessage on port UART2 const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_USB = UBX_CFG_U1 | 0x20910389; // Output rate of the UBX-NAV-TIMEQZSSmessage on port USB +const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMETRUSTED_I2C = UBX_CFG_U1 | 0x209103a8; // Output rate of the UBX-NAV-TIMETRUSTED message on port I2C +const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMETRUSTED_SPI = UBX_CFG_U1 | 0x209103ac; // Output rate of the UBX-NAV-TIMETRUSTED message on port SPI +const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMETRUSTED_UART1 = UBX_CFG_U1 | 0x209103a9; // Output rate of the UBX-NAV-TIMETRUSTED message on port UART1 +const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMETRUSTED_UART2 = UBX_CFG_U1 | 0x209103aa; // Output rate of the UBX-NAV-TIMETRUSTED message on port UART2 +const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMETRUSTED_USB = UBX_CFG_U1 | 0x209103ab; // Output rate of the UBX-NAV-TIMETRUSTED message on port USB const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_I2C = UBX_CFG_U1 | 0x2091005b; // Output rate of the UBX-NAV-TIMEUTC message on port I2C const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_SPI = UBX_CFG_U1 | 0x2091005f; // Output rate of the UBX-NAV-TIMEUTC message on port SPI const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_UART1 = UBX_CFG_U1 | 0x2091005c; // Output rate of the UBX-NAV-TIMEUTC message on port UART1 @@ -643,6 +654,11 @@ const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_SIG_SPI = UBX_CFG_U1 | 0x20910638; const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_SIG_UART1 = UBX_CFG_U1 | 0x20910635; // Output rate of the UBX-SEC-SIG message on port UART1 const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_SIG_UART2 = UBX_CFG_U1 | 0x20910636; // Output rate of the UBX-SEC-SIG message on port UART2 const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_SIG_USB = UBX_CFG_U1 | 0x20910637; // Output rate of the UBX-SEC-SIG message on port USB +const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_OSNMA_I2C = UBX_CFG_U1 | 0x209106ca; // Output rate of the UBX-SEC-OSNMA message on port I2C +const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_OSNMA_SPI = UBX_CFG_U1 | 0x209106ce; // Output rate of the UBX-SEC-OSNMA message on port SPI +const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_OSNMA_UART1 = UBX_CFG_U1 | 0x209106cb; // Output rate of the UBX-SEC-OSNMA message on port UART1 +const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_OSNMA_UART2 = UBX_CFG_U1 | 0x209106cc; // Output rate of the UBX-SEC-OSNMA message on port UART2 +const uint32_t UBLOX_CFG_MSGOUT_UBX_SEC_OSNMA_USB = UBX_CFG_U1 | 0x209106cd; // Output rate of the UBX-SEC-OSNMA message on port USB const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_I2C = UBX_CFG_U1 | 0x20910178; // Output rate of the UBX-TIM-TM2 message on port I2C const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_SPI = UBX_CFG_U1 | 0x2091017c; // Output rate of the UBX-TIM-TM2 message on port SPI const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_UART1 = UBX_CFG_U1 | 0x20910179; // Output rate of the UBX-TIM-TM2 message on port UART1 @@ -934,8 +950,9 @@ const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_QZSSL6_USB = UBX_CFG_U1 | 0x2091033d; // CFG-NAV2: Secondary output configuration //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -const uint32_t UBLOX_CFG_NAV2_OUT_ENABLED = UBX_CFG_L | 0x10170001; // Enable secondary (NAV2) output -const uint32_t UBLOX_CFG_NAV2_SBAS_USE_INTEGRITY = UBX_CFG_L | 0x10170002; // Use SBAS integrity information in the secondary output +const uint32_t UBLOX_CFG_NAV2_OUT_ENABLED = UBX_CFG_L | 0x10170001; // Enable secondary (NAV2) output +const uint32_t UBLOX_CFG_NAV2_SBAS_USE_INTEGRITY = UBX_CFG_L | 0x10170002; // Use SBAS integrity information in the secondary output +const uint32_t UBLOX_CFG_NAV2_NAVSPG_ONLY_AUTHDATA = UBX_CFG_L | 0x10170003; // Enable using only signals with authenticated navigation data // CFG-NAVHPG: High precision navigation configuration //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @@ -1005,6 +1022,8 @@ const uint32_t UBLOX_CFG_NAVSPG_CONSTR_ALTVAR = UBX_CFG_U4 | 0x401100c2; // Fix const uint32_t UBLOX_CFG_NAVSPG_CONSTR_DGNSSTO = UBX_CFG_U1 | 0x201100c4; // DGNSS timeout const uint32_t UBLOX_CFG_NAVSPG_SIGATTCOMP = UBX_CFG_E1 | 0x201100d6; // Permanently attenuated signal compensation mode const uint32_t UBLOX_CFG_NAVSPG_PL_ENA = UBX_CFG_L | 0x101100d7; // Enable Protection level. If enabled, protection level computing will be on. +const uint32_t UBLOX_CFG_NAVSPG_ONLY_AUTHDATA = UBX_CFG_L | 0x101100dd; // Enable using only signals with authenticated navigation data +const uint32_t UBLOX_CFG_NAVSPG_MAX_TIMETRUSTED_ACC = UBX_CFG_U2 | 0x301100de; // Maximum trusted time accuracy // CFG-NMEA: NMEA protocol configuration //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @@ -1128,6 +1147,7 @@ const uint32_t UBLOX_CFG_SBAS_PRNSCANMASK = UBX_CFG_X8 | 0x50360006; / const uint32_t UBLOX_CFG_SEC_CFG_LOCK = UBX_CFG_L | 0x10f60009; // Configuration lockdown const uint32_t UBLOX_CFG_SEC_CFG_LOCK_UNLOCKGRP1 = UBX_CFG_U2 | 0x30f6000a; // Configuration lockdown exempted group 1 const uint32_t UBLOX_CFG_SEC_CFG_LOCK_UNLOCKGRP2 = UBX_CFG_U2 | 0x30f6000b; // Configuration lockdown exempted group 2 +const uint32_t UBLOX_CFG_SEC_SPOOFDET_SIM_SIG_DIS = UBX_CFG_L | 0x10f6005d; // Disabling the simulated signal spoofing detection const uint32_t UBLOX_CFG_SEC_JAMDET_SENSITIVITY_HI = UBX_CFG_L | 0x10f60051; // go for a more sensitive jamming detection // CFG-SFCORE: Sensor fusion (SF) core configuration (ZED-F9R) From 976d42f47bf7e3273d9bcec6e7570ad912015a3f Mon Sep 17 00:00:00 2001 From: PaulZC Date: Thu, 1 Aug 2024 11:45:37 +0100 Subject: [PATCH 2/3] Add new NAV-PVT flags3 bits --- src/u-blox_GNSS.cpp | 2 +- src/u-blox_structs.h | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/u-blox_GNSS.cpp b/src/u-blox_GNSS.cpp index a5a1059..0cc1f7d 100644 --- a/src/u-blox_GNSS.cpp +++ b/src/u-blox_GNSS.cpp @@ -3474,7 +3474,7 @@ void DevUBLOXGNSS::processUBXpacket(ubxPacket *msg) packetUBXNAVPVT->data.sAcc = extractLong(msg, 68); packetUBXNAVPVT->data.headAcc = extractLong(msg, 72); packetUBXNAVPVT->data.pDOP = extractInt(msg, 76); - packetUBXNAVPVT->data.flags3.all = extractByte(msg, 78); + packetUBXNAVPVT->data.flags3.all = extractInt(msg, 78); packetUBXNAVPVT->data.headVeh = extractSignedLong(msg, 84); packetUBXNAVPVT->data.magDec = extractSignedInt(msg, 88); packetUBXNAVPVT->data.magAcc = extractInt(msg, 90); diff --git a/src/u-blox_structs.h b/src/u-blox_structs.h index 1664e88..6666d8f 100644 --- a/src/u-blox_structs.h +++ b/src/u-blox_structs.h @@ -428,11 +428,11 @@ typedef struct uint16_t pDOP; // Position DOP * 0.01 union { - uint8_t all; + uint16_t all; struct { - uint8_t invalidLlh : 1; // 1 = Invalid lon, lat, height and hMSL - uint8_t lastCorrectionAge : 4; // Age of the most recently received differential correction: + uint16_t invalidLlh : 1; // 1 = Invalid lon, lat, height and hMSL + uint16_t lastCorrectionAge : 4; // Age of the most recently received differential correction: // 0: Not available // 1: Age between 0 and 1 second // 2: Age between 1 (inclusive) and 2 seconds @@ -446,9 +446,16 @@ typedef struct // 10: Age between 60 (inclusive) and 90 seconds // 11: Age between 90 (inclusive) and 120 seconds // >=12: Age greater or equal than 120 seconds + uint16_t reserved : 8; + uint16_t authTime : 1; // Flag that indicates if the output time has been validated + // against an external trusted time source + uint16_t nmaFixStatus : 1; // Flag assigned to a fix that has been computed + // mixing satellites with data authenticated through + // Navigation Message Authentication (NMA) methods + // and satellites using unauthenticated data. } bits; } flags3; - uint8_t reserved1[5]; + uint8_t reserved0[4]; int32_t headVeh; // Heading of vehicle (2-D): deg * 1e-5 int16_t magDec; // Magnetic declination: deg * 1e-2 uint16_t magAcc; // Magnetic declination accuracy: deg * 1e-2 @@ -513,6 +520,9 @@ typedef struct uint32_t pDOP : 1; uint32_t invalidLlh : 1; + uint32_t lastCorrectionAge : 1; + uint32_t authTime : 1; + uint32_t nmaFixStatus : 1; uint32_t headVeh : 1; uint32_t magDec : 1; From 6cdd0e57945ac109beb5c4ee25d0f2baa040ce27 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Thu, 1 Aug 2024 12:10:58 +0100 Subject: [PATCH 3/3] v3.1.6 --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index f60bfa7..83ffbdc 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=SparkFun u-blox GNSS v3 -version=3.1.5 +version=3.1.6 author=SparkFun Electronics maintainer=SparkFun Electronics sentence=Library for I2C, Serial and SPI Communication with u-blox GNSS modules