Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

SnSignalStrengthFrame.h

Committer:
uci1
Date:
2019-06-05
Revision:
125:ce4045184366
Parent:
41:d6f5e2f09e07

File content as of revision 125:ce4045184366:

#ifndef SNS_SnSignalStrengthFrame
#define SNS_SnSignalStrengthFrame

#include "mbed.h"
#include <stdint.h>

#include "SnCommWin.h"

class SnSignalStrengthFrame {
 public:
    static const uint8_t    kIOVers;   // MUST BE INCREASED if any member var changes
    static const uint32_t   kMaxSizeOf  = 2u*sizeof(uint8_t) + sizeof(float) + sizeof(uint32_t);


 private:
    uint8_t   fCommType;
    float     fSigStr;
    uint32_t  fSSTime;
 
 public:
    SnSignalStrengthFrame() :
        fCommType(0), fSigStr(0), fSSTime(0) {}
    virtual ~SnSignalStrengthFrame() {}
    
    void SetSigStr(const float ss, const uint32_t stim) {
        fSigStr = ss;
        fSSTime = stim;
    }
    
    void SetCommType(const uint8_t t) { fCommType = t; }
    
    static
    uint32_t SizeOf(const uint8_t rv=SnSignalStrengthFrame::kIOVers)
       { return kMaxSizeOf; }
    
    template<class T>
    SnCommWin::ECommWinResult WriteTo(T& x) {
        // expect 'x' to be a MODSERIAL or a char const* or a FILE*
        x = SnBitUtils::WriteTo(x, kIOVers);
        x = SnBitUtils::WriteTo(x, fCommType);
        x = SnBitUtils::WriteTo(x, fSigStr);
        x = SnBitUtils::WriteTo(x, fSSTime);
        return SnCommWin::kOkMsgSent;
    }
    
    template<class T>
    static
    SnCommWin::ECommWinResult ReadFrom(T& b,
                                       uint8_t& commtype,
                                       float& sigstr,
                                       uint32_t& stim) {
        uint8_t Rv=0;
        b           = SnBitUtils::ReadFrom(b, Rv);
        b           = SnBitUtils::ReadFrom(b, commtype);
        b           = SnBitUtils::ReadFrom(b, sigstr);
        b           = SnBitUtils::ReadFrom(b, stim);
        return SnCommWin::kOkWithMsg;
    }
    
    
};

#endif // SNS_SnSignalStrengthFrame