Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
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
Generated on Thu Jul 14 2022 21:01:57 by 1.7.2