Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

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) {