Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
119:b3d7699d0eb0
Parent:
116:8099b754fbb4
--- a/SnEventFrame.h	Mon Oct 24 19:10:43 2016 +0000
+++ b/SnEventFrame.h	Thu Sep 21 17:53:35 2017 +0000
@@ -24,6 +24,11 @@
             + (kTotSampsSst4ch512*sizeof(uint16_t))
             + (kNstopBytesSst4ch512*sizeof(uint8_t));
     static const uint32_t   kMaxSizeOfV5 = kMaxSizeOfV4; // same as V4 (just 1GHz clock)
+    static const uint32_t   kMaxSizeOfV6 = kMaxSizeOfV1
+            - (kTotSampsAtwd4ch*sizeof(uint16_t)) 
+            + (kTotSampsSst8ch*sizeof(uint16_t))
+            + (kNstopBytesSst8ch*sizeof(uint8_t));
+    static const uint32_t   kMaxSizeOfV7 = kMaxSizeOfV6; // same as V6 (just 1GHz clock)
     static const uint32_t   kMaxSizeOf   = kMaxSizeOfV5; // biggest one
 
  private:
@@ -240,8 +245,13 @@
             return kTotSampsAtwd4ch;
         } else if ((rv==2)||(rv==3)) {
             return kTotSampsSst4ch;
+        } else if ((rv==4)||(rv==5)) {
+            return kTotSampsSst4ch512;
+        } else if ((rv==6)||(rv==7)) {
+            return kTotSampsSst8ch;
         } else {
-            return kTotSampsSst4ch512;
+            // ???
+            return kTotSampsSst4ch;
         }
     }
     
@@ -251,8 +261,13 @@
             return 0;
         } else if ((rv==2)||(rv==3)) {
             return kNstopBytesSst4ch;
+        } else if ((rv==4)||(rv==5)) {
+            return kNstopBytesSst4ch512;
+        } else if ((rv==6)||(rv==7)) {
+            return kNstopBytesSst8ch;
         } else {
-            return kNstopBytesSst4ch512;
+            // ???
+            return kNstopBytesSst4ch;
         }
     }
 
@@ -281,6 +296,10 @@
             sz = kMaxSizeOfV4;
         } else if (rv==5) {
             sz = kMaxSizeOfV5;
+        } else if (rv==6) {
+            sz = kMaxSizeOfV6;
+        } else if (rv==7) {
+            sz = kMaxSizeOfV7;
         } else {
             sz = kMaxSizeOf;
         }
@@ -293,18 +312,19 @@
 #ifdef EVDEBUG
             printf("event packed size=%u\r\n",
                 (sz-(ntotsamps*sizeof(uint16_t))
-                      +SizeOfPackedWavef(loseLSB, loseMSB)));
+                      +SizeOfPackedWavef(loseLSB, loseMSB, ntotsamps)));
 #endif
             return (sz-(ntotsamps*sizeof(uint16_t))
-                      +SizeOfPackedWavef(loseLSB, loseMSB));
+                      +SizeOfPackedWavef(loseLSB, loseMSB, ntotsamps));
         }
     }
     
     static
     uint32_t SizeOfPackedWavef(const uint8_t loseLSB,
-                               const uint8_t loseMSB) {
+                               const uint8_t loseMSB,
+                               const uint16_t totsamps=kTotSamps) {
         const uint8_t p = BITS_IN_SHORT-loseLSB-loseMSB;
-        return ((p*kTotSamps)/8u) + (((p*kTotSamps)%8u)!=0 ? 1u : 0u);
+        return ((p*totsamps)/8u) + (((p*totsamps)%8u)!=0 ? 1u : 0u);
     }
     
     const char* ReadFrom(const char* const buf,