@ -5,44 +5,44 @@
@@ -5,44 +5,44 @@
# 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 ;
// FUTURE: We might be able to trim it down if we disable long filenames with #define
void store_init ( ) {
card = new SdFat ( ) ;
if ( ! card - > begin ( PIN_SPI_CS_SD ) ) {
SdFat store_init ( ) {
SdFat card ;
if ( ! card . begin ( PIN_SPI_CS_SD ) ) {
Serial . println ( " Error: MicroSD card init failed " ) ;
while ( true ) delay ( 100 ) ;
}
return card ;
}
void store_reading ( uint32_t id , GPSLocation location ) {
// Port the rest of this to SdFat from SD
SdFat card = store_init ( ) ;
// 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 ) ;
File handle = card . open ( SD_FILENAME , O_APPEND | O_CREAT | O_WRONLY ) ;
uint8_t places = 6 ;
handle . printField ( id , ' \t ' ) ;
handle . printField ( location . lat , ' \t ' , places ) ;
handle . printField ( location . lng , ' \n ' , places ) ;
handle . close ( ) ; // Syncs implicitly
}
void store_debug ( char * buffer , int size ) {
File handle = card - > open ( SD_FILENAME_DEBUG , O_APPEND | O_CREAT | O_WRONLY ) ;
SdFat card = store_init ( ) ;
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 ( ) {
// Apparently we'ree fine so long as we don't have any open file handles - there's no end() method on the SdFat class
// card->end();
delete card ;
card = nullptr ;
}
*/