#include #include // #include #include "settings.h" #include "gps.h" // FUTURE: We might be able to trim it down if we disable long filenames with #define USE_LONG_FILE_NAMES 0 SdFat* card = nullptr; void store_init() { card = new SdFat(); card->begin(PIN_SPI_CS_SD); } void store_reading(uint32_t id, GPSLocation location) { // Port the rest of this to SdFat from SD // Open the file to write the data to. If it doesn't exist it will be created. // Unlike elsewhere, FILE_WRITE opens the file with the cursor starting at the end, so it's basically actually equivalent to FILE_APPEND that we use in other environments. Confusing, I know. File handle = card->open(SD_FILENAME, O_APPEND | O_CREAT | O_WRONLY); char line[33]; int chars = snprintf(line, 33, "%d\t%06d\t%06d\n", id, location.lat, location.lng ); handle.write(line, chars); handle.close(); // Syncs implicitly } void store_debug(char* buffer, int size) { File handle = card->open(SD_FILENAME_DEBUG, O_APPEND | O_CREAT | O_WRONLY); handle.write(buffer, size); handle.write('\n'); handle.close(); } void store_end() { card.end(); delete card; }