Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

SnPowerFrame.h

Committer:
uci1
Date:
2012-08-02
Revision:
4:a91682e19d6b
Child:
8:95a325df1f6b

File content as of revision 4:a91682e19d6b:

#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