Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnPowerFrame.h
- Revision:
- 4:a91682e19d6b
- Child:
- 8:95a325df1f6b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SnPowerFrame.h Thu Aug 02 05:42:47 2012 +0000 @@ -0,0 +1,60 @@ +#ifndef SN_SnPowerFrame +#define SN_SnPowerFrame + +#include <stdint.h> + +#include "SnCommWin.h" + +class SnPowerFrame { + public: + static const uint8_t kIOvers; // MUST BE INCREASED if any member var changes (==> also if kNchans, etc. change!) + static const uint32_t kMaxSizeOf = sizeof(uint8_t) + (2u*sizeof(uint16_t)); + + private: + uint16_t fVadc1; + uint16_t fVadc2; + + public: + SnPowerFrame(const uint16_t v1=0, const uint16_t v2=0) + : fVadc1(v1), fVadc2(v2) {} + virtual ~SnPowerFrame() {} + + uint16_t GetVadc1() const { return fVadc1; } + uint16_t GetVadc2() const { return fVadc2; } + + void SetVadc1(const uint16_t v1) { fVadc1 = v1; } + void SetVadc2(const uint16_t v2) { fVadc2 = v2; } + + static + uint32_t SizeOf() { return kMaxSizeOf; } + + template<class T> + static + SnCommWin::ECommWinResult WriteTo(T& x, + uint16_t v1, + uint16_t v2) { + // expect 'x' to be a MODSERIAL or a char const* + x = SnBitUtils::WriteTo(x, kIOvers); + x = SnBitUtils::WriteTo(x, v1); + x = SnBitUtils::WriteTo(x, v2); + return SnCommWin::kOkMsgSent; + } + + template<class T> + static + SnCommWin::ECommWinResult ReadFrom(T& b, + uint16_t& v1, + uint16_t& v2) { + uint8_t Rv=0; + b = SnBitUtils::ReadFrom(b, Rv); + if (Rv>0) { + b = SnBitUtils::ReadFrom(b, v1); + b = SnBitUtils::ReadFrom(b, v2); + } + return SnCommWin::kOkWithMsg; + } + + +}; + +#endif // SN_SnPowerFrame