Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnSDUtils.h
- Revision:
- 56:0bba0ef15697
- Parent:
- 47:fbe956b10a91
- Child:
- 66:685f9d0a48ae
--- a/SnSDUtils.h Fri Jan 03 13:03:01 2014 +0000 +++ b/SnSDUtils.h Thu Oct 30 06:42:17 2014 +0000 @@ -7,6 +7,7 @@ #include "SnCommWin.h" #include "SnBitUtils.h" #include "SnPowerFrame.h" +#include "SnTempFrame.h" #include "SnHeaderFrame.h" class SnEventFrame; @@ -19,17 +20,21 @@ public: static const char* const kSDdir; static const char* const kSDsubDir; + static const char* const kRunSeqListFilenm; + static const uint16_t kMaxSeqNum; + static const uint16_t kBadSeqNum; static const uint8_t kFNBufSize=128; static const uint8_t kIOvers; // file I/O version static const uint32_t kMaxSizeOfFileHdr; - typedef void (*InitSDFcn)(void); + typedef int (*InitSDFcn)(void); static InitSDFcn fgDoInit; + static bool fgInitOk; private: static - void InitSDCard(const bool force=false); + bool InitSDCard(const bool force=false); static FILE* OpenSDFile(const char* name, const char* mode, const bool redoDir); @@ -53,7 +58,7 @@ void DeleteFile(FILE*& f, const char* fname); static - void DeleteDirIfEmpty(const char* dirname); + bool DeleteDirIfEmpty(const char* dirname); private: static char fgCurFileName[kFNBufSize]; @@ -65,7 +70,12 @@ public: SnSDUtils() {} virtual ~SnSDUtils() {} - + + static + bool IsInitOk() { + return fgInitOk; + } + static int CloseOutputFile(FILE* f) { // TODO: set current file pointer to 0, IF f is current file @@ -83,6 +93,58 @@ const bool redoDir); static + bool ClearRunSeqList(); + + static + bool AddToRunSeqList(const uint32_t run, + const uint16_t seq); + + static + SnCommWin::ECommWinResult + SendFilesInRunSeqList(SnCommWin* comm, + const uint32_t timeout, + char* const buf, + const uint32_t bsize, + const SnConfigFrame& curConf, + SnEventFrame& evt, + SnPowerFrame& pow); + + static + SnCommWin::ECommWinResult + SendFileWithRunSeq(SnCommWin* comm, + const uint32_t timeout, + char* const buf, + const uint32_t bsize, + const SnConfigFrame& curConf, + SnEventFrame& evt, + SnPowerFrame& pow, + const uint32_t run, + const uint16_t seq); + + + static + SnCommWin::ECommWinResult SendOneFile(const char* dfn, + SnCommWin* comm, + const uint32_t timeout, + char* const buf, + const uint32_t bsize, + const SnConfigFrame& curConf, + SnEventFrame& evt, + SnPowerFrame& pow); + + static + SnCommWin::ECommWinResult SendPartOfRun(SnCommWin* comm, + const uint32_t timeout, + char* const buf, + const uint32_t bsize, + const SnConfigFrame& curConf, + SnEventFrame& evt, + SnPowerFrame& pow, + const uint32_t run, + const uint16_t minseq, + const uint16_t maxseq); + + static SnCommWin::ECommWinResult SendAllOfRun(SnCommWin* comm, const uint32_t timeout, char* const buf, @@ -174,6 +236,16 @@ template<class T> static + SnCommWin::ECommWinResult WriteTempTo(T& f, const SnTempFrame& tmp) { + const bool rs = + SnHeaderFrame::WriteTo(f, SnHeaderFrame::kTemperatureCode, + SnTempFrame::SizeOf() ); + const SnCommWin::ECommWinResult re = tmp.WriteTo(f); + return (rs) ? re : SnCommWin::kUndefFail; + } + + template<class T> + static SnCommWin::ECommWinResult ReadBlockHeader(T& f, uint8_t& mcode, uint32_t& mlen) {