Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
SnTempFrame.h
- Committer:
- uci1
- Date:
- 2019-06-05
- Revision:
- 125:ce4045184366
- Parent:
- 60:fb02f02804af
File content as of revision 125:ce4045184366:
#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); // DO NOT USE! forgot the byte for i/o version static const uint32_t kMaxSizeOfV2 = kMaxSizeOfV1 + sizeof(uint8_t); // add i/o version static const uint32_t kMaxSizeOf = kMaxSizeOfV2; 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 if (rv==2) { return kMaxSizeOfV2; } 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