Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnSDUtils.h
- Revision:
- 5:9cea89700c66
- Parent:
- 4:a91682e19d6b
- Child:
- 6:6f002d202f59
--- a/SnSDUtils.h Thu Aug 02 05:42:47 2012 +0000 +++ b/SnSDUtils.h Fri Aug 03 00:04:34 2012 +0000 @@ -5,6 +5,8 @@ #include <stdint.h> #include "SnCommWin.h" +#include "SnBitUtils.h" +#include "SnPowerFrame.h" class SnEventFrame; class SnConfigFrame; @@ -16,6 +18,7 @@ static const char* const kSDsubDir; static const uint8_t kFNBufSize=128; static const uint8_t kIOvers; // file I/O version + static const uint32_t kMaxSizeOfFileHdr; private: @@ -74,7 +77,7 @@ static bool WriteConfig(FILE* efile, const SnConfigFrame& conf); - + /* static bool WriteFileHeader(FILE* f, const uint64_t macadr, const uint32_t run, const uint16_t seq, @@ -84,6 +87,39 @@ bool ReadFileHeader(FILE* f, uint64_t& macadr, uint32_t& run, uint16_t& seq, uint16_t& v1, uint16_t& v2); + */ + template<class T> + static + SnCommWin::ECommWinResult WriteFileHeader(T& f, const uint64_t macadr, + const uint32_t run, const uint16_t seq, + const uint16_t v1, const uint16_t v2) { + // MUST INCREMENT kIOvers if these writes are altered + f = SnBitUtils::WriteTo(f, kIOvers); + f = SnBitUtils::WriteTo(f, macadr); + f = SnBitUtils::WriteTo(f, run); + f = SnBitUtils::WriteTo(f, seq); + SnPowerFrame::WriteTo(f, v1, v2); + return SnCommWin::kOkMsgSent; + } + + template<class T> + static + SnCommWin::ECommWinResult ReadFileHeader(T& f, uint64_t& macadr, + uint32_t& run, uint16_t& seq, + uint16_t& v1, uint16_t& v2) { + uint8_t Rv=0; + f = SnBitUtils::ReadFrom(f, Rv); + f = SnBitUtils::ReadFrom(f, macadr); + f = SnBitUtils::ReadFrom(f, run); + f = SnBitUtils::ReadFrom(f, seq); + if (Rv>1) { + SnPowerFrame::ReadFrom(f, v1, v2); + } + return SnCommWin::kOkWithMsg; + } + + static + uint32_t SizeOfFileHeader() { return kMaxSizeOfFileHdr; } friend class SnSDUtilsWhisperer; // to restrict access to specific functions };