Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
56:0bba0ef15697
Child:
60:fb02f02804af
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SnTempFrame.h	Thu Oct 30 06:42:17 2014 +0000
@@ -0,0 +1,65 @@
+#ifndef SN_SnTempFrame
+#define SN_SnTempFrame
+
+#include <stdint.h>
+
+#include "SnCommWin.h"
+
+
+class SnTempFrame {
+ public:
+    // i/o version
+    static const uint8_t    kIOvers;   // MUST BE INCREASED if any member var changes
+    static const uint32_t   kMaxSizeOfV1 = sizeof(float) + sizeof(uint32_t);
+    static const uint32_t   kMaxSizeOf   = kMaxSizeOfV1;
+
+ private:
+    float          fTemp; // the temperature
+    uint32_t       fTime; // time of temp check
+    
+ public:
+    SnTempFrame(const float tmp=0, const uint32_t tim=0) :
+        fTemp(tmp), fTime(tim) {
+    }
+    virtual ~SnTempFrame() {}
+    
+    static
+    uint32_t SizeOf(const uint8_t rv=SnTempFrame::kIOvers) { 
+        if (rv==1) {
+            return kMaxSizeOfV1;
+        } else {
+            return kMaxSizeOf;
+        }
+    }
+
+    float       GetTemperature() const { return fTemp; }
+    uint32_t    GetTime() const { return fTime; }
+    
+    void        SetTempOnly(const float tmp) { fTemp = tmp; }
+    void        SetTime(const uint32_t t) { fTime = t; }
+
+    void        SetTempAndTime(const float tmp, const uint32_t tim) {
+        fTemp = tmp;
+        fTime = tim;
+    }
+    
+    template<class T>
+    SnCommWin::ECommWinResult WriteTo(T& x) const {
+        x = SnBitUtils::WriteTo(x, kIOvers);
+        x = SnBitUtils::WriteTo(x, fTemp);
+        x = SnBitUtils::WriteTo(x, fTime);
+        return SnCommWin::kOkWithMsg;
+    }
+
+    template<class T>
+    SnCommWin::ECommWinResult ReadFrom(T& b) {
+        uint8_t Rv=0;
+        b       = SnBitUtils::ReadFrom(b, Rv);
+        b       = SnBitUtils::ReadFrom(b, fTemp);
+        b       = SnBitUtils::ReadFrom(b, fTime);
+        return SnCommWin::kOkWithMsg;
+    }
+
+};
+
+#endif // SN_SnTempFrame