6 : rfdSerialConnection(rfdSerialConnection)
8 this->ssdArray = ssdArray;
9 this->ssdArrayLength = ssdArrayLength;
15void Telemetry::preparePacket(uint32_t timestamp) {
20 this->packet[4] = (timestamp >> 24) & 0xFF;
21 this->packet[5] = (timestamp >> 16) & 0xFF;
22 this->packet[6] = (timestamp >> 8) & 0xFF;
23 this->packet[7] = timestamp & 0xFF;
24 nextEmptyPacketIndex = 8;
30 memcpy(&data, &floatData,
sizeof(data));
31 for (
int i = 3; i > -1; i--) {
32 this->packet[nextEmptyPacketIndex+(3-i)] = (data >> (i*8)) & 0xFF;
34 nextEmptyPacketIndex += 4;
40 nextEmptyPacketIndex += 1;
41 this->addSingleSDHToPacket(ssd->
singleSDH);
45 nextEmptyPacketIndex += 1;
47 this->addSingleSDHToPacket(ssd->
multiSDH[i]);
52void Telemetry::setPacketToZero() {
53 for (
int i = 0; i < 120; i++) {
58void Telemetry::addEndMarker() {
59 this->packet[nextEmptyPacketIndex] = 0;
60 this->packet[nextEmptyPacketIndex+1] = 0;
61 this->packet[nextEmptyPacketIndex+2] = 0;
62 this->packet[nextEmptyPacketIndex+3] =
END_BYTE;
63 nextEmptyPacketIndex += 4;
67 bool sendingPacketThisTick =
false;
68 int currentPacketIndex = 0;
69 for (
int i = 0; i < this->ssdArrayLength; i++) {
70 if (ssdArray[i]->shouldBeSent(currentTime)) {
71 if (!sendingPacketThisTick) {
73 preparePacket(currentTime);
74 addSSDToPacket(ssdArray[i]);
75 sendingPacketThisTick =
true;
77 addSSDToPacket(ssdArray[i]);
79 ssdArray[i]->markWasSent(currentTime);
82 if (sendingPacketThisTick) {
84 for (
int i = 0; i < nextEmptyPacketIndex; i++) {
85 this->rfdSerialConnection.write(this->packet[i]);
88 return sendingPacketThisTick;
Buffers sensor samples and forwards them to an IDataSaver at a controlled rate.
DataPoint getLastDataPointSaved() const
Telemetry(SendableSensorData *ssdArray[], int ssdArrayLength, Stream &rfdSerialConnection)
Initialize this object.
bool tick(uint32_t currentTime)
No argument tick function that handles sending data at specified send frequencies.
Bundles one or more SensorDataHandler pointers for telemetry packing.
SensorDataHandler ** multiSDH
SensorDataHandler * singleSDH