Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
21:ce51bb0ba4a5
Parent:
10:3c93db1cfb12
Child:
25:57b2627fe756
--- a/SnStatusFrame.h	Wed Oct 03 00:22:27 2012 +0000
+++ b/SnStatusFrame.h	Wed Oct 10 05:54:12 2012 +0000
@@ -7,6 +7,7 @@
 #include "SnCommWin.h"
 #include "SnConfigFrame.h"
 #include "SnEventFrame.h"
+#include "SnSDUtils.h"
 
 struct SnStatusFrame {
     //
@@ -29,33 +30,35 @@
             sizeof(uint64_t) + (3u*sizeof(uint32_t)) + (2u*sizeof(uint16_t))
             + (3u*sizeof(uint8_t)) + (2u*sizeof(float))
             + SnConfigFrame::kConfLblLen;
+    static const uint32_t   kMaxSizeOfV3 = 
+            kMaxSizeOfV2 + sizeof(uint32_t) + sizeof(float);
     static const uint32_t   kMaxSizeOf   = kMaxSizeOfV1;
     
     static
     uint32_t    GetMaxSizeOf(const uint8_t rv) {
         if (rv==1) {
             return kMaxSizeOfV1;
+         } else if (rv==2) {
+            return kMaxSizeOfV2;
          } else {
-            return kMaxSizeOfV2;
+            return kMaxSizeOfV3;
          }
     }
     
     template<class T>
     static
     SnCommWin::ECommWinResult WriteTo(T& x,
-                                      const SnConfigFrame::EDatPackBit type,
                                       const SnConfigFrame& conf,
                                       const SnEventFrame& evt,
                                       char* const evtBuf,
                                       const uint16_t seq,
                                       const float thmrate,
-                                      const float evtrate) {
+                                      const float evtrate,
+                                      const uint8_t loseLSB,
+                                      const uint8_t loseMSB,
+                                      const uint16_t wvBase) {
         // expect 'x' to be a MODSERIAL& or a char const*
         
-        uint8_t loseLSB=0, loseMSB=0;
-        uint16_t wvBase=0;
-        conf.GetPackParsFor(type, loseLSB, loseMSB, wvBase);
-        
         const uint32_t llen = strlen(conf.GetLabel());
         
         // if anything about these writes changes, update kIOVers and SizeOf
@@ -71,10 +74,21 @@
         x = SnBitUtils::WriteTo(x, wvBase);
         x = SnBitUtils::WriteTo(x, thmrate);
         x = SnBitUtils::WriteTo(x, evtrate);
-        /*
-        x = WriteEventTo(x, evtBuf, evt, 
-                         loseLSB, loseMSB, wvBase);
-        */
+        // file info
+        uint32_t nfiles(0);
+        float totbytes(0);
+        SnSDUtils::GetDirProps(SnSDUtils::kSDdir, nfiles, totbytes);
+        if (strcmp(SnSDUtils::kSDdir, SnSDUtils::kSDsubDir)!=0) {
+            uint32_t sf(0);
+            float sb(0);
+            SnSDUtils::GetDirProps(SnSDUtils::kSDsubDir, sf, sb);
+            nfiles   += sf;
+            totbytes += sb;
+        }
+        totbytes /= 1000; // KB
+        x = SnBitUtils::WriteTo(x, nfiles);
+        x = SnBitUtils::WriteTo(x, totbytes);
+        
         return SnCommWin::kOkMsgSent;
     }