Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnSDUtils.cpp
- Revision:
- 4:a91682e19d6b
- Parent:
- 3:24c5f0f50bf1
- Child:
- 5:9cea89700c66
--- a/SnSDUtils.cpp Tue Jul 31 04:59:16 2012 +0000 +++ b/SnSDUtils.cpp Thu Aug 02 05:42:47 2012 +0000 @@ -6,12 +6,15 @@ #include "SnConfigFrame.h" #include "SnEventFrame.h" +#include "SnPowerFrame.h" const char* const SnSDUtils::kSDsubDir = "/sd"; char SnSDUtils::fgCurFileName[kFNBufSize]={0}; FILE* SnSDUtils::fgCurFile = 0; -const uint8_t SnSDUtils::kIOvers = 1; +const uint8_t SnSDUtils::kIOvers = 2; + +static const uint16_t __kMaxUShort = ~0; const char* SnSDUtils::GetOutFileName(const uint64_t macadr, const uint32_t run, @@ -56,6 +59,9 @@ while ( (dent = readdir(d))!=NULL ) { if (strncmp(dent->d_name, fn, ncomp)==0) { seq++; + if (seq==__kMaxUShort) { + break; + } } } closedir(d); @@ -82,7 +88,8 @@ } FILE* SnSDUtils::OpenNewOutputFile(const uint64_t macadr, - const uint32_t run) { + const uint32_t run, + const uint16_t v1, const uint16_t v2) { // opens a new file in the specified directory and writes this // this mbed's mac address as the first sizeof(uint64_t) bytes (i.e. 4 bytes) // @@ -94,30 +101,36 @@ if (fgCurFileName!=NULL) { fgCurFile = OpenSDFile(fgCurFileName, "wb"); if (fgCurFile!=NULL && ferror(fgCurFile)==0) { - WriteFileHeader(fgCurFile, macadr, run, seq); + WriteFileHeader(fgCurFile, macadr, run, seq, v1, v2); } } return fgCurFile; } bool SnSDUtils::WriteFileHeader(FILE* f, const uint64_t macadr, - const uint32_t run, const uint16_t seq) { + const uint32_t run, const uint16_t seq, + const uint16_t v1, const uint16_t v2) { // MUST INCREMENT kIOvers if these writes are altered fwrite(&kIOvers, sizeof(uint8_t), 1, f); fwrite(&macadr, sizeof(uint64_t), 1, f); fwrite(&run, sizeof(uint32_t), 1, f); fwrite(&seq, sizeof(uint16_t), 1, f); + SnPowerFrame::WriteTo(f, v1, v2); fflush(f); return ferror(f); } bool SnSDUtils::ReadFileHeader(FILE* f, uint64_t& macadr, - uint32_t& run, uint16_t& seq) { + uint32_t& run, uint16_t& seq, + uint16_t& v1, uint16_t& v2) { uint8_t Rv=0; fread(&Rv, sizeof(uint8_t), 1, f); fread(&macadr, sizeof(uint64_t), 1, f); fread(&run, sizeof(uint32_t), 1, f); fread(&seq, sizeof(uint16_t), 1, f); + if (Rv>1) { + SnPowerFrame::ReadFrom(f, v1, v2); + } return ferror(f); }