Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
5:9cea89700c66
Parent:
4:a91682e19d6b
Child:
6:6f002d202f59
--- a/SnSDUtils.h	Thu Aug 02 05:42:47 2012 +0000
+++ b/SnSDUtils.h	Fri Aug 03 00:04:34 2012 +0000
@@ -5,6 +5,8 @@
 #include <stdint.h>
 
 #include "SnCommWin.h"
+#include "SnBitUtils.h"
+#include "SnPowerFrame.h"
 
 class SnEventFrame;
 class SnConfigFrame;
@@ -16,6 +18,7 @@
     static const char* const kSDsubDir;
     static const uint8_t     kFNBufSize=128;
     static const uint8_t     kIOvers; // file I/O version
+    static const uint32_t    kMaxSizeOfFileHdr;
     
  private:
     
@@ -74,7 +77,7 @@
     static
     bool  WriteConfig(FILE* efile,
                       const SnConfigFrame& conf);
-
+    /*
     static
     bool  WriteFileHeader(FILE* f, const uint64_t macadr,
                           const uint32_t run, const uint16_t seq,
@@ -84,6 +87,39 @@
     bool  ReadFileHeader(FILE* f, uint64_t& macadr,
                          uint32_t& run, uint16_t& seq,
                          uint16_t& v1, uint16_t& v2);
+    */
+    template<class T>
+    static
+    SnCommWin::ECommWinResult WriteFileHeader(T& f, const uint64_t macadr,
+                      const uint32_t run, const uint16_t seq,
+                      const uint16_t v1, const uint16_t v2) {
+        // MUST INCREMENT kIOvers if these writes are altered
+        f = SnBitUtils::WriteTo(f, kIOvers);
+        f = SnBitUtils::WriteTo(f, macadr);
+        f = SnBitUtils::WriteTo(f, run);
+        f = SnBitUtils::WriteTo(f, seq);
+        SnPowerFrame::WriteTo(f, v1, v2);
+        return SnCommWin::kOkMsgSent;
+    }
+    
+    template<class T>
+    static
+    SnCommWin::ECommWinResult ReadFileHeader(T& f, uint64_t& macadr,
+                     uint32_t& run, uint16_t& seq,
+                     uint16_t& v1, uint16_t& v2) {
+        uint8_t Rv=0;
+        f = SnBitUtils::ReadFrom(f, Rv);
+        f = SnBitUtils::ReadFrom(f, macadr);
+        f = SnBitUtils::ReadFrom(f, run);
+        f = SnBitUtils::ReadFrom(f, seq);
+        if (Rv>1) {
+            SnPowerFrame::ReadFrom(f, v1, v2);
+        }
+        return SnCommWin::kOkWithMsg;
+    }
+    
+    static
+    uint32_t SizeOfFileHeader() { return kMaxSizeOfFileHdr; }
     
     friend class SnSDUtilsWhisperer; // to restrict access to specific functions
 };