This commit is contained in:
PaulZC
2022-01-11 14:48:19 +00:00
parent b746d8e274
commit 8eecdd5044
@@ -2491,6 +2491,70 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
}
}
}
else if (msg->id == UBX_NAV_PVAT && msg->len == UBX_NAV_PVAT_LEN)
{
//Parse various byte fields into storage - but only if we have memory allocated for it
if (packetUBXNAVPVAT != NULL)
{
packetUBXNAVPVAT->data.iTOW = extractLong(msg, 0);
packetUBXNAVPVAT->data.version = extractByte(msg, 4);
packetUBXNAVPVAT->data.valid.all = extractByte(msg, 5);
packetUBXNAVPVAT->data.year = extractInt(msg, 6);
packetUBXNAVPVAT->data.month = extractByte(msg, 8);
packetUBXNAVPVAT->data.day = extractByte(msg, 9);
packetUBXNAVPVAT->data.hour = extractByte(msg, 10);
packetUBXNAVPVAT->data.min = extractByte(msg, 11);
packetUBXNAVPVAT->data.sec = extractByte(msg, 12);
packetUBXNAVPVAT->data.tAcc = extractLong(msg, 16);
packetUBXNAVPVAT->data.nano = extractSignedLong(msg, 20); //Includes milliseconds
packetUBXNAVPVAT->data.fixType = extractByte(msg, 24);
packetUBXNAVPVAT->data.flags.all = extractByte(msg, 25);
packetUBXNAVPVAT->data.flags2.all = extractByte(msg, 26);
packetUBXNAVPVAT->data.numSV = extractByte(msg, 27);
packetUBXNAVPVAT->data.lon = extractSignedLong(msg, 28);
packetUBXNAVPVAT->data.lat = extractSignedLong(msg, 32);
packetUBXNAVPVAT->data.height = extractSignedLong(msg, 36);
packetUBXNAVPVAT->data.hMSL = extractSignedLong(msg, 40);
packetUBXNAVPVAT->data.hAcc = extractLong(msg, 44);
packetUBXNAVPVAT->data.vAcc = extractLong(msg, 48);
packetUBXNAVPVAT->data.velN = extractSignedLong(msg, 52);
packetUBXNAVPVAT->data.velE = extractSignedLong(msg, 56);
packetUBXNAVPVAT->data.velD = extractSignedLong(msg, 60);
packetUBXNAVPVAT->data.gSpeed = extractSignedLong(msg, 64);
packetUBXNAVPVAT->data.sAcc = extractLong(msg, 68);
packetUBXNAVPVAT->data.vehRoll = extractSignedLong(msg, 72);
packetUBXNAVPVAT->data.vehPitch = extractSignedLong(msg, 76);
packetUBXNAVPVAT->data.vehHeading = extractSignedLong(msg, 80);
packetUBXNAVPVAT->data.motHeading = extractSignedLong(msg, 84);
packetUBXNAVPVAT->data.accRoll = extractInt(msg, 88);
packetUBXNAVPVAT->data.accPitch = extractInt(msg, 90);
packetUBXNAVPVAT->data.accHeading = extractInt(msg, 92);
packetUBXNAVPVAT->data.magDec = extractSignedInt(msg, 94);
packetUBXNAVPVAT->data.magAcc = extractInt(msg, 96);
packetUBXNAVPVAT->data.errEllipseOrient = extractInt(msg, 98);
packetUBXNAVPVAT->data.errEllipseMajor = extractLong(msg, 100);
packetUBXNAVPVAT->data.errEllipseMinor = extractLong(msg, 104);
//Mark all datums as fresh (not read before)
packetUBXNAVPVAT->moduleQueried.moduleQueried1.all = 0xFFFFFFFF;
packetUBXNAVPVAT->moduleQueried.moduleQueried2.all = 0xFFFFFFFF;
//Check if we need to copy the data for the callback
if ((packetUBXNAVPVAT->callbackData != NULL) // If RAM has been allocated for the copy of the data
&& (packetUBXNAVPVAT->automaticFlags.flags.bits.callbackCopyValid == false)) // AND the data is stale
{
memcpy(&packetUBXNAVPVAT->callbackData->iTOW, &packetUBXNAVPVAT->data.iTOW, sizeof(UBX_NAV_PVAT_data_t));
packetUBXNAVPVAT->automaticFlags.flags.bits.callbackCopyValid = true;
}
//Check if we need to copy the data into the file buffer
if (packetUBXNAVPVAT->automaticFlags.flags.bits.addToFileBuffer)
{
storePacket(msg);
}
}
}
else if (msg->id == UBX_NAV_CLOCK && msg->len == UBX_NAV_CLOCK_LEN)
{
//Parse various byte fields into storage - but only if we have memory allocated for it