Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnTempFrame.h
- 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