diff --git a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp index 736bf51..a03ac88 100644 --- a/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp +++ b/src/SparkFun_u-blox_GNSS_Arduino_Library.cpp @@ -2014,7 +2014,8 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg) } } } - else if (msg->id == UBX_NAV_PVT && msg->len == UBX_NAV_PVT_LEN) + else if (msg->id == UBX_NAV_PVT + && (msg->len == UBX_NAV_PVT_LEN || msg->len == UBX_7_NAV_PVT_LEN)) { //Parse various byte fields into storage - but only if we have memory allocated for it if (packetUBXNAVPVT != NULL) @@ -2048,9 +2049,11 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg) packetUBXNAVPVT->data.headAcc = extractLong(msg, 72); packetUBXNAVPVT->data.pDOP = extractInt(msg, 76); packetUBXNAVPVT->data.flags3.all = extractByte(msg, 78); - packetUBXNAVPVT->data.headVeh = extractSignedLong(msg, 84); - packetUBXNAVPVT->data.magDec = extractSignedInt(msg, 88); - packetUBXNAVPVT->data.magAcc = extractInt(msg, 90); + if(msg->len == UBX_NAV_PVT_LEN) { + packetUBXNAVPVT->data.headVeh = extractSignedLong(msg, 84); + packetUBXNAVPVT->data.magDec = extractSignedInt(msg, 88); + packetUBXNAVPVT->data.magAcc = extractInt(msg, 90); + } //Mark all datums as fresh (not read before) packetUBXNAVPVT->moduleQueried.moduleQueried1.all = 0xFFFFFFFF; diff --git a/src/u-blox_structs.h b/src/u-blox_structs.h index 8f39453..60b165b 100644 --- a/src/u-blox_structs.h +++ b/src/u-blox_structs.h @@ -340,6 +340,7 @@ typedef struct // UBX-NAV-PVT (0x01 0x07): Navigation position velocity time solution const uint16_t UBX_NAV_PVT_LEN = 92; +const uint16_t UBX_7_NAV_PVT_LEN = 84; typedef struct {