Skip to content

Commit 8eecdd5

Browse files
committed
Step_6.3
1 parent b746d8e commit 8eecdd5

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

src/SparkFun_u-blox_GNSS_Arduino_Library.cpp

+64
Original file line numberDiff line numberDiff line change
@@ -2491,6 +2491,70 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
24912491
}
24922492
}
24932493
}
2494+
else if (msg->id == UBX_NAV_PVAT && msg->len == UBX_NAV_PVAT_LEN)
2495+
{
2496+
//Parse various byte fields into storage - but only if we have memory allocated for it
2497+
if (packetUBXNAVPVAT != NULL)
2498+
{
2499+
packetUBXNAVPVAT->data.iTOW = extractLong(msg, 0);
2500+
packetUBXNAVPVAT->data.version = extractByte(msg, 4);
2501+
packetUBXNAVPVAT->data.valid.all = extractByte(msg, 5);
2502+
packetUBXNAVPVAT->data.year = extractInt(msg, 6);
2503+
packetUBXNAVPVAT->data.month = extractByte(msg, 8);
2504+
packetUBXNAVPVAT->data.day = extractByte(msg, 9);
2505+
packetUBXNAVPVAT->data.hour = extractByte(msg, 10);
2506+
packetUBXNAVPVAT->data.min = extractByte(msg, 11);
2507+
packetUBXNAVPVAT->data.sec = extractByte(msg, 12);
2508+
packetUBXNAVPVAT->data.tAcc = extractLong(msg, 16);
2509+
packetUBXNAVPVAT->data.nano = extractSignedLong(msg, 20); //Includes milliseconds
2510+
packetUBXNAVPVAT->data.fixType = extractByte(msg, 24);
2511+
packetUBXNAVPVAT->data.flags.all = extractByte(msg, 25);
2512+
packetUBXNAVPVAT->data.flags2.all = extractByte(msg, 26);
2513+
packetUBXNAVPVAT->data.numSV = extractByte(msg, 27);
2514+
packetUBXNAVPVAT->data.lon = extractSignedLong(msg, 28);
2515+
packetUBXNAVPVAT->data.lat = extractSignedLong(msg, 32);
2516+
packetUBXNAVPVAT->data.height = extractSignedLong(msg, 36);
2517+
packetUBXNAVPVAT->data.hMSL = extractSignedLong(msg, 40);
2518+
packetUBXNAVPVAT->data.hAcc = extractLong(msg, 44);
2519+
packetUBXNAVPVAT->data.vAcc = extractLong(msg, 48);
2520+
packetUBXNAVPVAT->data.velN = extractSignedLong(msg, 52);
2521+
packetUBXNAVPVAT->data.velE = extractSignedLong(msg, 56);
2522+
packetUBXNAVPVAT->data.velD = extractSignedLong(msg, 60);
2523+
packetUBXNAVPVAT->data.gSpeed = extractSignedLong(msg, 64);
2524+
packetUBXNAVPVAT->data.sAcc = extractLong(msg, 68);
2525+
packetUBXNAVPVAT->data.vehRoll = extractSignedLong(msg, 72);
2526+
packetUBXNAVPVAT->data.vehPitch = extractSignedLong(msg, 76);
2527+
packetUBXNAVPVAT->data.vehHeading = extractSignedLong(msg, 80);
2528+
packetUBXNAVPVAT->data.motHeading = extractSignedLong(msg, 84);
2529+
packetUBXNAVPVAT->data.accRoll = extractInt(msg, 88);
2530+
packetUBXNAVPVAT->data.accPitch = extractInt(msg, 90);
2531+
packetUBXNAVPVAT->data.accHeading = extractInt(msg, 92);
2532+
packetUBXNAVPVAT->data.magDec = extractSignedInt(msg, 94);
2533+
packetUBXNAVPVAT->data.magAcc = extractInt(msg, 96);
2534+
packetUBXNAVPVAT->data.errEllipseOrient = extractInt(msg, 98);
2535+
packetUBXNAVPVAT->data.errEllipseMajor = extractLong(msg, 100);
2536+
packetUBXNAVPVAT->data.errEllipseMinor = extractLong(msg, 104);
2537+
2538+
2539+
//Mark all datums as fresh (not read before)
2540+
packetUBXNAVPVAT->moduleQueried.moduleQueried1.all = 0xFFFFFFFF;
2541+
packetUBXNAVPVAT->moduleQueried.moduleQueried2.all = 0xFFFFFFFF;
2542+
2543+
//Check if we need to copy the data for the callback
2544+
if ((packetUBXNAVPVAT->callbackData != NULL) // If RAM has been allocated for the copy of the data
2545+
&& (packetUBXNAVPVAT->automaticFlags.flags.bits.callbackCopyValid == false)) // AND the data is stale
2546+
{
2547+
memcpy(&packetUBXNAVPVAT->callbackData->iTOW, &packetUBXNAVPVAT->data.iTOW, sizeof(UBX_NAV_PVAT_data_t));
2548+
packetUBXNAVPVAT->automaticFlags.flags.bits.callbackCopyValid = true;
2549+
}
2550+
2551+
//Check if we need to copy the data into the file buffer
2552+
if (packetUBXNAVPVAT->automaticFlags.flags.bits.addToFileBuffer)
2553+
{
2554+
storePacket(msg);
2555+
}
2556+
}
2557+
}
24942558
else if (msg->id == UBX_NAV_CLOCK && msg->len == UBX_NAV_CLOCK_LEN)
24952559
{
24962560
//Parse various byte fields into storage - but only if we have memory allocated for it

0 commit comments

Comments
 (0)