Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

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);
 }