Avionics
Core avionics package for CURE flight computers
Loading...
Searching...
No Matches
Telemetry.h
Go to the documentation of this file.
1#ifndef TELEMETRY_H
2#define TELEMETRY_H
3
6#include <cstdint>
7#include <unordered_map>
8#include <vector>
9#include "ArduinoHAL.h"
10
11#define START_BYTE 51
12#define END_BYTE 52
13
32
33 SendableSensorData(SensorDataHandler* _singleSDH, SensorDataHandler** _multiSDH, int _multiSDHLength, int _multiSDHDataLabel, uint8_t _sendFrequencyHz) {
34 singleSDH = _singleSDH;
35 multiSDH = _multiSDH;
36 multiSDHLength = _multiSDHLength;
37 multiSDHDataLabel = _multiSDHDataLabel;
38 sendFrequencyHz = _sendFrequencyHz;
40 }
41
45 bool shouldBeSent(uint32_t time) {
46 uint32_t delta = time-lastSentTimestamp;
47 return delta >= (1000.0/sendFrequencyHz);
48 }
49
53 void markWasSent(uint32_t time) {
54 lastSentTimestamp = time;
55 }
56};
57
63class Telemetry {
64 public:
65
74 Telemetry(SendableSensorData* ssdArray[], int ssdArrayLength, Stream &rfdSerialConnection);
75
82 bool tick(uint32_t currentTime);
83
84 private:
85 void preparePacket(uint32_t timestamp);
86 void addSingleSDHToPacket(SensorDataHandler* sdh);
87 void addSSDToPacket(SendableSensorData* ssd);
88 void setPacketToZero();
89 void addEndMarker();
90
91 SendableSensorData** ssdArray;
92 int ssdArrayLength;
93 Stream &rfdSerialConnection;
94 int nextEmptyPacketIndex;
95 uint8_t packet[120]; //rfd settings indicate that 120 is the max packet size
96};
97
98#endif
Buffers sensor samples and forwards them to an IDataSaver at a controlled rate.
Telemetry(SendableSensorData *ssdArray[], int ssdArrayLength, Stream &rfdSerialConnection)
Initialize this object.
Definition Telemetry.cpp:5
bool tick(uint32_t currentTime)
No argument tick function that handles sending data at specified send frequencies.
Definition Telemetry.cpp:66
Bundles one or more SensorDataHandler pointers for telemetry packing.
Definition Telemetry.h:25
bool shouldBeSent(uint32_t time)
True if the packet should be sent.
Definition Telemetry.h:45
void markWasSent(uint32_t time)
Run when the packet is sent.
Definition Telemetry.h:53
SendableSensorData(SensorDataHandler *_singleSDH, SensorDataHandler **_multiSDH, int _multiSDHLength, int _multiSDHDataLabel, uint8_t _sendFrequencyHz)
Definition Telemetry.h:33
uint32_t lastSentTimestamp
Definition Telemetry.h:31
SensorDataHandler ** multiSDH
Definition Telemetry.h:27
SensorDataHandler * singleSDH
Definition Telemetry.h:26