Avionics
Core avionics package for CURE flight computers
Loading...
Searching...
No Matches
Telemetry.h File Reference

Packs SensorDataHandler values into a fixed-size byte packet and streams over a Stream (UART). More...

#include <array>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include "ArduinoHAL.h"
#include "data_handling/SensorDataHandler.h"
Include dependency graph for Telemetry.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  SendableSensorData
 Declares one telemetry "stream" to include in packets. More...
class  Telemetry
 Packetizes telemetry streams and sends them out over a Stream. More...

Namespaces

namespace  TelemetryFmt

Functions

void TelemetryFmt::write_u32_be (std::uint8_t *dst, std::uint32_t v)
 Write a 32-bit value in big-endian order to dst[0..3].
std::uint16_t TelemetryFmt::hz_to_period_ms (std::uint16_t hz)
 Convert frequency (Hz) to period (ms), using integer math.

Variables

constexpr std::size_t TelemetryFmt::kPacketCapacity = 120
constexpr std::size_t TelemetryFmt::kSyncZeros = 3
constexpr std::size_t TelemetryFmt::kU32Bytes = 4
constexpr std::size_t TelemetryFmt::kStartByteIndex = kSyncZeros
constexpr std::size_t TelemetryFmt::kTimestampIndex = kStartByteIndex + 1
constexpr std::size_t TelemetryFmt::kPacketCounterIndex = kTimestampIndex + kU32Bytes
constexpr std::size_t TelemetryFmt::kHeaderBytes = kSyncZeros + 1 + kU32Bytes + kU32Bytes
constexpr std::size_t TelemetryFmt::kEndMarkerBytes = kSyncZeros + 1
constexpr std::uint8_t TelemetryFmt::kStartByteValue = 51
constexpr std::uint8_t TelemetryFmt::kEndByteValue = 52
constexpr std::size_t TelemetryFmt::kBytesIn32Bit = 4
constexpr unsigned TelemetryFmt::kBitsPerByte = 8
constexpr std::uint8_t TelemetryFmt::kAllOnesByte = 0xFF

Detailed Description

Packs SensorDataHandler values into a fixed-size byte packet and streams over a Stream (UART).

Design goals:

  • Keep Telemetry as a normal class (non-templated) so implementation lives in Telemetry.cpp.
  • Allow callers to provide the list of telemetry streams as either:
    • pointer + count (most general)
    • std::array (compile-time sized, convenient)
    • C array (compile-time sized, convenient)

Lifetime rule:

  • Telemetry stores a non-owning pointer to the caller-provided stream list. The stream list must outlive the Telemetry instance (use static storage in embedded code).

Definition in file Telemetry.h.