From c120744e8e89bff0ddc9785c4a19928b42163330 Mon Sep 17 00:00:00 2001 From: Hector van der Aa Date: Sun, 17 May 2026 14:40:55 +0200 Subject: [PATCH] Added Packet3 for Lap completion --- cpp/telemetry_common.h | 9 +++++++++ python/telemetry_common.py | 24 +++++++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/cpp/telemetry_common.h b/cpp/telemetry_common.h index 6bd0295..5acdc98 100644 --- a/cpp/telemetry_common.h +++ b/cpp/telemetry_common.h @@ -2,6 +2,7 @@ // Copyright (C) 2026 Association Exergie // SPDX-License-Identifier: MIT #pragma once +#include #include #pragma pack(push, 1) @@ -21,6 +22,14 @@ struct TelemetryPacket2 { }; #pragma pack(pop) +#pragma pack(push, 1) +struct TelemetryPacket3 { + uint32_t start_time_; + uint32_t duration_; + uint16_t count_; +}; +#pragma pack(pop) + #pragma pack(push, 1) struct TelemetryLoRaHeader { uint8_t source_; diff --git a/python/telemetry_common.py b/python/telemetry_common.py index 577dbbc..3faec2c 100644 --- a/python/telemetry_common.py +++ b/python/telemetry_common.py @@ -4,17 +4,19 @@ import struct from dataclasses import dataclass -UART_MAGIC = b"\xAA\x55\xAA\x55" +UART_MAGIC = b"\xaa\x55\xaa\x55" LORA_HEADER_FORMAT = " int: crc = 0xFFFF for byte in data: @@ -54,7 +63,9 @@ def crc16_ccitt(data: bytes) -> int: def unpack_lora_header(data: bytes) -> TelemetryLoRaHeader: - source, dest, version, size, crc16 = struct.unpack(LORA_HEADER_FORMAT, data[:LORA_HEADER_SIZE]) + source, dest, version, size, crc16 = struct.unpack( + LORA_HEADER_FORMAT, data[:LORA_HEADER_SIZE] + ) return TelemetryLoRaHeader(source, dest, version, size, crc16) @@ -64,5 +75,12 @@ def unpack_packet1(payload: bytes) -> TelemetryPacket1: def unpack_packet2(payload: bytes) -> TelemetryPacket2: - time_stamp, vbat, teng, lat, lng, speed = struct.unpack(PACKET2_FORMAT, payload[:PACKET2_SIZE]) + time_stamp, vbat, teng, lat, lng, speed = struct.unpack( + PACKET2_FORMAT, payload[:PACKET2_SIZE] + ) return TelemetryPacket2(time_stamp, vbat, teng, lat, lng, speed) + + +def unpack_packet3(payload: bytes) -> TelemetryPacket3: + start_time, duration = struct.unpack(PACKET3_FORMAT, payload[:PACKET3_SIZE]) + return TelemetryPacket2(start_time, duration)