Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnSDUtils.cpp
- Revision:
- 2:e67f7c158087
- Parent:
- 1:e392595b4b76
- Child:
- 3:24c5f0f50bf1
--- a/SnSDUtils.cpp Fri Jul 20 19:04:02 2012 +0000 +++ b/SnSDUtils.cpp Tue Jul 24 02:07:23 2012 +0000 @@ -9,7 +9,7 @@ const char* const SnSDUtils::kSDsubDir = "/sd"; -char SnSDUtils::fgCurFileName[kFNBufSize]; +char SnSDUtils::fgCurFileName[kFNBufSize]={0}; FILE* SnSDUtils::fgCurFile = 0; const uint8_t SnSDUtils::kIOvers = 1; @@ -85,23 +85,39 @@ // const uint16_t seq = GetSeqNum(macadr, run); memset(fgCurFileName, 0, sizeof(char)*kFNBufSize); - strcpy(fgCurFileName,GetOutFileName(macadr, run, seq)); + strncpy(fgCurFileName,GetOutFileName(macadr, run, seq),kFNBufSize-1); //fprintf(stderr,"cur file = %s (%hu)\n\r",fgCurFileName,seq); fgCurFile = 0; if (fgCurFileName!=NULL) { fgCurFile = OpenSDFile(fgCurFileName); + if (fgCurFile!=NULL && ferror(fgCurFile)==0) { + WriteFileHeader(fgCurFile, macadr, run, seq); + } } return fgCurFile; } -bool SnSDUtils::WriteFileHeader(FILE* f, const uint64_t macadr) { +bool SnSDUtils::WriteFileHeader(FILE* f, const uint64_t macadr, + const uint32_t run, const uint16_t seq) { // 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); fflush(f); return ferror(f); } +bool SnSDUtils::ReadFileHeader(FILE* f, uint64_t& macadr, + uint32_t& run, uint16_t& seq) { + 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); + return ferror(f); +} + bool SnSDUtils::WriteEventTo(FILE* efile, char* const evtBuf, const SnEventFrame& evt, const SnConfigFrame& conf) {