From 53a4e5ecaabe147c7046d398ed6d832eb95c6ef8 Mon Sep 17 00:00:00 2001 From: Josh Stikeleather Date: Tue, 3 Feb 2026 17:06:04 -0500 Subject: [PATCH 1/2] _ --- src/data_handling/Telemetry.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/data_handling/Telemetry.cpp b/src/data_handling/Telemetry.cpp index 7105c11..5745ebb 100644 --- a/src/data_handling/Telemetry.cpp +++ b/src/data_handling/Telemetry.cpp @@ -69,12 +69,12 @@ bool Telemetry::tick(uint32_t currentTime) { for (int i = 0; i < this->ssdArrayLength; i++) { if (ssdArray[i]->shouldBeSent(currentTime)) { if (!sendingPacketThisTick) { - setPacketToZero(); - preparePacket(currentTime); - addSSDToPacket(ssdArray[i]); + setPacketToZero(); //Clears the packet buffer + preparePacket(currentTime); //Adds header with timestamp + addSSDToPacket(ssdArray[i]); //Add the first sensors data sendingPacketThisTick = true; } else { - addSSDToPacket(ssdArray[i]); + addSSDToPacket(ssdArray[i]); //Add more sensors to the packet } ssdArray[i]->markWasSent(currentTime); } From c344a0e5b27caeee87a8be660701e16e4c98a8bc Mon Sep 17 00:00:00 2001 From: Josh Stikeleather Date: Tue, 3 Feb 2026 17:51:09 -0500 Subject: [PATCH 2/2] Added packet counter in the header of each packet --- include/data_handling/Telemetry.h | 4 +++- src/data_handling/Telemetry.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/data_handling/Telemetry.h b/include/data_handling/Telemetry.h index 763d745..d6307f9 100644 --- a/include/data_handling/Telemetry.h +++ b/include/data_handling/Telemetry.h @@ -39,7 +39,8 @@ constexpr std::size_t kU32Bytes = 4; /** Header layout: [0..2]=0, [3]=START, [4..7]=timestamp (big-endian). */ constexpr std::size_t kStartByteIndex = kSyncZeros; // 3 constexpr std::size_t kTimestampIndex = kStartByteIndex + 1; // 4 -constexpr std::size_t kHeaderBytes = kSyncZeros + 1 + kU32Bytes; +constexpr std::size_t kPacketCounterIndex = kTimestampIndex + kU32Bytes; // 8 +constexpr std::size_t kHeaderBytes = kSyncZeros + 1 + kU32Bytes + kU32Bytes; // 12 (CHANGED from 8 to 12) /** End marker layout: 3 zeros followed by an end byte. */ constexpr std::size_t kEndMarkerBytes = kSyncZeros + 1; @@ -230,6 +231,7 @@ class Telemetry { Stream& rfdSerialConnection; // Packet state + std::uint32_t packetCounter = 0; std::size_t nextEmptyPacketIndex; std::array packet; }; diff --git a/src/data_handling/Telemetry.cpp b/src/data_handling/Telemetry.cpp index ccbd7ef..47505c6 100644 --- a/src/data_handling/Telemetry.cpp +++ b/src/data_handling/Telemetry.cpp @@ -32,6 +32,9 @@ void Telemetry::preparePacket(std::uint32_t timestamp) { // Write the timestamp in big-endian format TelemetryFmt::write_u32_be(&this->packet[TelemetryFmt::kTimestampIndex], timestamp); + // Packet counter (4 bytes, big-endian) + TelemetryFmt::write_u32_be(&this->packet[TelemetryFmt::kPacketCounterIndex], packetCounter); + nextEmptyPacketIndex = TelemetryFmt::kHeaderBytes; } @@ -113,6 +116,9 @@ bool Telemetry::tick(uint32_t currentTime) { for (std::size_t i = 0; i < nextEmptyPacketIndex; i++) { rfdSerialConnection.write(packet[i]); } + + packetCounter++; //Increment after each successful send + return true; }