start sd implementation
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include "esp_rom_crc.h"
|
||||
#include <hw/buscfg.h>
|
||||
#include "sensors.h"
|
||||
#include "sdcard.h"
|
||||
|
||||
#define TAG "LoRa"
|
||||
|
||||
@@ -71,6 +72,8 @@ static void send_packet_without_retries(uint8_t *data, uint16_t size)
|
||||
{
|
||||
if (xSemaphoreTake(loraRadioMutex, portMAX_DELAY) == pdTRUE)
|
||||
{
|
||||
writeFile(sensFile, data, size);
|
||||
|
||||
if (!LoRaSend(data, size, SX126x_TXMODE_SYNC))
|
||||
{
|
||||
ESP_LOGW(TAG, "LoRaSend failed");
|
||||
@@ -86,9 +89,10 @@ static void send_packet_without_retries(uint8_t *data, uint16_t size)
|
||||
|
||||
static void send_packet_with_retries(uint8_t *data, uint16_t size)
|
||||
{
|
||||
for (int retry = 0; retry <= MAX_RETRIES; retry++)
|
||||
if (xSemaphoreTake(loraRadioMutex, portMAX_DELAY) == pdTRUE)
|
||||
{
|
||||
if (xSemaphoreTake(loraRadioMutex, portMAX_DELAY) == pdTRUE)
|
||||
writeFile(sensFile, data, size);
|
||||
for (int retry = 0; retry <= MAX_RETRIES; retry++)
|
||||
{
|
||||
if (!LoRaSend(data, size, SX126x_TXMODE_SYNC))
|
||||
{
|
||||
@@ -135,6 +139,69 @@ void prepare_and_send_telemetry(uint64_t missionTimer)
|
||||
memcpy(bufOut + offset, &telemetryPacket, sizeof(telemetryPacket));
|
||||
offset += sizeof(telemetryPacket);
|
||||
|
||||
if (csvFile != NULL) {
|
||||
fprintf(csvFile,
|
||||
"%llu,%lu,%u,%u," // missionTimer, packetIndex, telemetryIndex, packetType
|
||||
"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d," // MPU
|
||||
"%u,%u,%d,%u," // CCS
|
||||
"%u,%u,%u,%lu,%u,%lu,%u," // INA, BME basic
|
||||
"%s,%s,%u,%u," // bools and gas index/range
|
||||
"%.2f,%.2f,%.2f,%.2f," // Bosch env data
|
||||
"%u,%.2f,%.2f,%.2f," // IAQ + scores
|
||||
"%lu,%ld,%ld,%d,%u,%u,%u,%u," // GPS data
|
||||
"%ld,%ld,%d," // Predicted GPS
|
||||
"%ld,%ld,%ld,%ld," // ADC
|
||||
"%d,%d,%d,%d," // Servo
|
||||
"%u\n", // presentDevices
|
||||
|
||||
missionTimer,
|
||||
downboundPacket.packetIndex,
|
||||
telemetryPacket.telemetryIndex,
|
||||
downboundPacket.packetType,
|
||||
|
||||
telemetryPacket.accelerationX, telemetryPacket.accelerationY, telemetryPacket.accelerationZ,
|
||||
telemetryPacket.gyroX, telemetryPacket.gyroY, telemetryPacket.gyroZ,
|
||||
telemetryPacket.magnetX, telemetryPacket.magnetY, telemetryPacket.magnetZ,
|
||||
telemetryPacket.accelerometer_temperature,
|
||||
|
||||
telemetryPacket.eCO2, telemetryPacket.tvoc, telemetryPacket.currentCCS, telemetryPacket.rawCCSData,
|
||||
|
||||
telemetryPacket.volts, telemetryPacket.current, telemetryPacket.power,
|
||||
telemetryPacket.temperature, telemetryPacket.humidity, telemetryPacket.pressure, telemetryPacket.gas,
|
||||
|
||||
telemetryPacket.gas_valid ? "Yes" : "No",
|
||||
telemetryPacket.heater_stable ? "Yes" : "No",
|
||||
telemetryPacket.gas_range, telemetryPacket.gas_index,
|
||||
|
||||
telemetryPacket.air_temperature, telemetryPacket.relative_humidity,
|
||||
telemetryPacket.barometric_pressure, telemetryPacket.gas_resistance,
|
||||
|
||||
telemetryPacket.iaq_score,
|
||||
telemetryPacket.temperature_score, telemetryPacket.humidity_score, telemetryPacket.gas_score,
|
||||
|
||||
telemetryPacket.time_seconds,
|
||||
telemetryPacket.latitude_centi_degrees,
|
||||
telemetryPacket.longitude_centi_degrees,
|
||||
telemetryPacket.altitude_centi_meters,
|
||||
telemetryPacket.fix_quality,
|
||||
telemetryPacket.num_satellites,
|
||||
telemetryPacket.date_yyddmm,
|
||||
telemetryPacket.speed_centi_knots,
|
||||
|
||||
telemetryPacket.predicted_latitude_centi_degrees,
|
||||
telemetryPacket.predicted_longitude_centi_degrees,
|
||||
telemetryPacket.predicted_altitude_centi_meters,
|
||||
|
||||
telemetryPacket.NH3, telemetryPacket.CO, telemetryPacket.NO2, telemetryPacket.UVC,
|
||||
|
||||
telemetryPacket.currentServoA, telemetryPacket.targetServoA,
|
||||
telemetryPacket.currentServoB, telemetryPacket.targetServoB,
|
||||
|
||||
telemetryPacket.presentDevices);
|
||||
fflush(csvFile);
|
||||
fsync(fileno(csvFile)); // Critical: this ensures actual write to disk
|
||||
}
|
||||
|
||||
send_packet_without_retries(bufOut, offset);
|
||||
packetReadiness = 0;
|
||||
}
|
||||
@@ -308,7 +375,6 @@ void lora_comms_task(void *pvParameters)
|
||||
{
|
||||
int64_t start_time = esp_timer_get_time();
|
||||
|
||||
ESP_LOGI(TAG, "fdfgtfet");
|
||||
if (packetReadiness)
|
||||
{
|
||||
ESP_LOGI(TAG, "Preparing telemetry");
|
||||
|
Reference in New Issue
Block a user