Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnPowerFrame.h
- Revision:
- 8:95a325df1f6b
- Parent:
- 4:a91682e19d6b
- Child:
- 84:80b15993944e
diff -r 079617408fec -r 95a325df1f6b SnPowerFrame.h --- a/SnPowerFrame.h Sat Aug 04 01:48:55 2012 +0000 +++ b/SnPowerFrame.h Wed Aug 08 23:27:37 2012 +0000 @@ -8,52 +8,82 @@ 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)); + static const uint32_t kMaxSizeOf = sizeof(uint8_t) + (4u*sizeof(float)) + sizeof(uint32_t); private: - uint16_t fVadc1; - uint16_t fVadc2; - + float faveV1; + float faveV2; + float frmsV1; + float frmsV2; + uint32_t fTime; + public: - SnPowerFrame(const uint16_t v1=0, const uint16_t v2=0) - : fVadc1(v1), fVadc2(v2) {} + SnPowerFrame(const float av1=0, const float av2=0, + const float rv1=0, const float rv2=0, + const uint32_t time=0) + : faveV1(av1), faveV2(av2), frmsV1(rv1), frmsV2(rv2), fTime(time) {} virtual ~SnPowerFrame() {} - uint16_t GetVadc1() const { return fVadc1; } - uint16_t GetVadc2() const { return fVadc2; } + float GetAveV1() const { return faveV1; } + float GetAveV2() const { return faveV2; } + float GetRmsV1() const { return frmsV1; } + float GetRmsV2() const { return frmsV2; } + uint32_t GetTime() const { return fTime; } - void SetVadc1(const uint16_t v1) { fVadc1 = v1; } - void SetVadc2(const uint16_t v2) { fVadc2 = v2; } + void SetAveV1(const float av) { faveV1 = av; } + void SetAveV2(const float av) { faveV2 = av; } + void SetRmsV1(const float rm) { frmsV1 = rm; } + void SetRmsV2(const float rm) { frmsV2 = rm; } + void SetTime(const uint32_t t) { fTime = t; } + void Set(const float av1, const float av2, + const float rm1, const float rm2, + const uint32_t time) { + faveV1 = av1; faveV2 = av2; + frmsV1 = rm1; frmsV2 = rm2; + fTime = time; + } 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; + uint32_t SizeOf(const uint8_t rv) { + if (rv==1) { + return sizeof(uint8_t) + (2u*sizeof(uint16_t)); + } else { + return kMaxSizeOf; + } } template<class T> - static - SnCommWin::ECommWinResult ReadFrom(T& b, - uint16_t& v1, - uint16_t& v2) { + SnCommWin::ECommWinResult WriteTo(T& x) const { + x = SnBitUtils::WriteTo(x, kIOvers); + x = SnBitUtils::WriteTo(x, faveV1); + x = SnBitUtils::WriteTo(x, faveV2); + x = SnBitUtils::WriteTo(x, frmsV1); + x = SnBitUtils::WriteTo(x, frmsV2); + 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); - if (Rv>0) { + if (Rv==1) { + uint16_t v1, v2; b = SnBitUtils::ReadFrom(b, v1); b = SnBitUtils::ReadFrom(b, v2); + faveV1 = v1; + faveV2 = v2; + frmsV1 = frmsV2 = 0; + fTime = 0; + } else if (Rv>1) { + b = SnBitUtils::ReadFrom(b, faveV1); + b = SnBitUtils::ReadFrom(b, faveV2); + b = SnBitUtils::ReadFrom(b, frmsV1); + b = SnBitUtils::ReadFrom(b, frmsV2); + b = SnBitUtils::ReadFrom(b, fTime); } return SnCommWin::kOkWithMsg; } - };