Avionics
Core avionics package for CURE flight computers
Loading...
Searching...
No Matches
DataSaverSDSerial.cpp
Go to the documentation of this file.
1#include "ArduinoHAL.h"
3#include <cstdint>
4
5#pragma pack(push, 1)
6
7// NOLINTBEGIN(cppcoreguidelines-pro-type-member-init, hicpp-member-init)
8struct SerialData {
9 uint32_t timestamp_ms;
10 float data;
11 uint8_t name;
12 std::array<char, 3> dlim;
13};
14// NOLINTEND(cppcoreguidelines-pro-type-member-init, hicpp-member-init)
15#pragma pack(pop)
16
17
18/*
19* Saves the data to the SD card via serial
20* Only uses the first 3 characters of the name, so make sure the first 3 characters are unique
21*/
22void dataToSDCardSerial(uint8_t name, uint32_t timestamp_ms, float data, HardwareSerial &SD_serial) { // NOLINT(bugprone-easily-swappable-parameters)
23 SerialData serialData = {timestamp_ms, data, name, {{'\0', '\r', '\n'}}};
24 // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
25 SD_serial.write(reinterpret_cast<const uint8_t*>(&serialData), sizeof(SerialData));
26}
27
28DataSaverSDSerial::DataSaverSDSerial(HardwareSerial &SD_serial) : SD_serial(SD_serial) {
29 // Nothing to do here
30}
31
32int DataSaverSDSerial::saveDataPoint(const DataPoint& dataPoint, uint8_t name){
33 dataToSDCardSerial(name, dataPoint.timestamp_ms, dataPoint.data, this->SD_serial);
34 return 0;
35}
void dataToSDCardSerial(uint8_t name, uint32_t timestamp_ms, float data, HardwareSerial &SD_serial)
Timestamped float measurement container.
Definition DataPoint.h:11
float data
Definition DataPoint.h:14
uint32_t timestamp_ms
Definition DataPoint.h:13
virtual int saveDataPoint(const DataPoint &dataPoint, uint8_t name) override
Write a timestamped value to the serial logger.
DataSaverSDSerial(HardwareSerial &SD_serial)
Create a saver that streams CSV over UART to an external data logger.
size_t write(uint8_t)
Definition serial_mock.h:58
MockSerial HardwareSerial
Definition serial_mock.h:65
uint32_t timestamp_ms
std::array< char, 3 > dlim