UART Command Parser Time Manager Data Store for SD Card for stm32l476 [it's not Licensed as BSD/GPLx]
Dependencies: mbed SDFileSystem
Diff: common/SDDataStore.cpp
- Revision:
- 16:602bc04e3cb5
- Parent:
- 10:db2be22bc2f9
--- a/common/SDDataStore.cpp Mon May 27 08:17:29 2019 +0000 +++ b/common/SDDataStore.cpp Thu May 30 03:00:15 2019 +0000 @@ -1,4 +1,5 @@ #include "SDDataStore.h" +#include "global.h" /* constructor, pSD, TimeManager */ SDDataStore::SDDataStore(TimeManager *pSetTM) @@ -64,11 +65,12 @@ sprintf(filePath, "/sd/%s", fname); pathTermination(filePath); - fp = fopen(filePath, "w"); + fp = fopen(filePath, "a+"); if (fp == NULL) { return false; } fpCurrent = fp; + dbgprintf("SDDataStore::openFile(%p) as %s\n", fpCurrent, filePath); sprintf(fnameCurrent, "%s", fname); return true; } @@ -88,14 +90,27 @@ /* close file with this Class */ void SDDataStore::syncFile(void) { + FILE *fp; + char filePath[MaxPathLength]; + sprintf(filePath, "/sd/%s", getFileName()); + + dbgprintf("SDDataStore::syncFile(%p) as %s\n", fpCurrent, filePath); if (fpCurrent != NULL) { - fflush(fpCurrent); + /* fflush is not working on SDFileSystem :p */ + fclose(fpCurrent); + fp = fopen(filePath, "a+"); + if (fp == NULL) { + dbgprintf("SDDataStore::syncFile(CRITICAL) in fopen\n"); + return; + } + fpCurrent = fp; } } /* close file with this Class */ void SDDataStore::closeFile(void) { + dbgprintf("SDDataStore::closeFile(%p)\n", fpCurrent); if (fpCurrent != NULL) { fclose(fpCurrent); fpCurrent = NULL;