Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SnTempFrame.h Source File

SnTempFrame.h

00001 #ifndef SN_SnTempFrame
00002 #define SN_SnTempFrame
00003 
00004 #include <stdint.h>
00005 
00006 #include "SnCommWin.h"
00007 
00008 
00009 class SnTempFrame {
00010  public:
00011     // i/o version
00012     static const uint8_t    kIOvers;   // MUST BE INCREASED if any member var changes
00013     static const uint32_t   kMaxSizeOfV1 = sizeof(float) + sizeof(uint32_t); // DO NOT USE! forgot the byte for i/o version
00014     static const uint32_t   kMaxSizeOfV2 = kMaxSizeOfV1 + sizeof(uint8_t); // add i/o version
00015     static const uint32_t   kMaxSizeOf   = kMaxSizeOfV2;
00016 
00017  private:
00018     float          fTemp; // the temperature
00019     uint32_t       fTime; // time of temp check
00020     
00021  public:
00022     SnTempFrame(const float tmp=0, const uint32_t tim=0) :
00023         fTemp(tmp), fTime(tim) {
00024     }
00025     virtual ~SnTempFrame() {}
00026     
00027     static
00028     uint32_t SizeOf(const uint8_t rv=SnTempFrame::kIOvers) { 
00029         if (rv==1) {
00030             return kMaxSizeOfV1;
00031         } else if (rv==2) {
00032             return kMaxSizeOfV2;
00033         } else {
00034             return kMaxSizeOf;
00035         }
00036     }
00037 
00038     float       GetTemperature() const { return fTemp; }
00039     uint32_t    GetTime() const { return fTime; }
00040     
00041     void        SetTempOnly(const float tmp) { fTemp = tmp; }
00042     void        SetTime(const uint32_t t) { fTime = t; }
00043 
00044     void        SetTempAndTime(const float tmp, const uint32_t tim) {
00045         fTemp = tmp;
00046         fTime = tim;
00047     }
00048     
00049     template<class T>
00050     SnCommWin::ECommWinResult WriteTo(T& x) const {
00051         x = SnBitUtils::WriteTo(x, kIOvers);
00052         x = SnBitUtils::WriteTo(x, fTemp);
00053         x = SnBitUtils::WriteTo(x, fTime);
00054         return SnCommWin::kOkWithMsg;
00055     }
00056 
00057     template<class T>
00058     SnCommWin::ECommWinResult ReadFrom(T& b) {
00059         uint8_t Rv=0;
00060         b       = SnBitUtils::ReadFrom(b, Rv);
00061         b       = SnBitUtils::ReadFrom(b, fTemp);
00062         b       = SnBitUtils::ReadFrom(b, fTime);
00063         return SnCommWin::kOkWithMsg;
00064     }
00065 
00066 };
00067 
00068 #endif // SN_SnTempFrame