Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
4:a91682e19d6b
Child:
8:95a325df1f6b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SnPowerFrame.h	Thu Aug 02 05:42:47 2012 +0000
@@ -0,0 +1,60 @@
+#ifndef SN_SnPowerFrame
+#define SN_SnPowerFrame
+
+#include <stdint.h>
+
+#include "SnCommWin.h"
+
+class SnPowerFrame {
+ public:
+    static const uint8_t    kIOvers; // MUST BE INCREASED if any member var changes (==> also if kNchans, etc. change!)
+    static const uint32_t   kMaxSizeOf = sizeof(uint8_t) + (2u*sizeof(uint16_t));
+    
+ private:
+    uint16_t    fVadc1;
+    uint16_t    fVadc2;
+ 
+ public:
+    SnPowerFrame(const uint16_t v1=0, const uint16_t v2=0) 
+        : fVadc1(v1), fVadc2(v2) {}
+    virtual ~SnPowerFrame() {}
+    
+    uint16_t GetVadc1() const { return fVadc1; }
+    uint16_t GetVadc2() const { return fVadc2; }
+    
+    void     SetVadc1(const uint16_t v1) { fVadc1 = v1; }
+    void     SetVadc2(const uint16_t v2) { fVadc2 = v2; }
+    
+    static
+    uint32_t SizeOf() { return kMaxSizeOf; }
+    
+    template<class T>
+    static
+    SnCommWin::ECommWinResult WriteTo(T& x,
+                                      uint16_t v1,
+                                      uint16_t v2) {
+        // expect 'x' to be a MODSERIAL or a char const*
+        x = SnBitUtils::WriteTo(x, kIOvers);
+        x = SnBitUtils::WriteTo(x, v1);
+        x = SnBitUtils::WriteTo(x, v2);
+        return SnCommWin::kOkMsgSent;
+    }
+    
+    template<class T>
+    static
+    SnCommWin::ECommWinResult ReadFrom(T& b,
+                                       uint16_t& v1,
+                                       uint16_t& v2) {
+        uint8_t Rv=0;
+        b           = SnBitUtils::ReadFrom(b, Rv);
+        if (Rv>0) {
+            b       = SnBitUtils::ReadFrom(b, v1);
+            b       = SnBitUtils::ReadFrom(b, v2);
+        }
+        return SnCommWin::kOkWithMsg;
+    }
+
+    
+};
+
+#endif // SN_SnPowerFrame