Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnSDUtils.h
- Revision:
- 0:664899e0b988
- Child:
- 1:e392595b4b76
diff -r 000000000000 -r 664899e0b988 SnSDUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SnSDUtils.h Sat Jun 30 02:03:51 2012 +0000 @@ -0,0 +1,82 @@ +#ifndef SN_SnSDUtils +#define SN_SnSDUtils + +#include <stdio.h> +#include <stdint.h> + +#include "SnCommWin.h" + +class SnEventFrame; +class SnConfigFrame; + +// a namespace-like class to handle the i/o with the SD card + +class SnSDUtils { + public: + static const char* kSDsubDir; + static const uint8_t kFNBufSize=128; + static const uint8_t kIOvers; // file I/O version + + private: + + static + uint16_t GetSeqNum(const uint64_t macadr, + const uint32_t run); + + static + const char* GetOutFileName(const uint64_t macadr, + const uint32_t run, + const uint16_t seq); + + static + void DeleteFile(FILE*& f, const char* fname); + + static char fgCurFileName[kFNBufSize]; + + public: + SnSDUtils() {} + virtual ~SnSDUtils() {} + + static + int CloseOutputFile(FILE* f) + { return (f!=0) ? fclose(f) : 0; } + + static + FILE* OpenNewOutputFile(const uint64_t macadr, + const uint32_t run); + + static + FILE* OpenExistingFile(const char* name); + + static + SnCommWin::ECommWinResult SendAllFiles(SnCommWin* comm, + const bool doDelete); + + static + const char* GetCurFileName() { return fgCurFileName; } + + static + bool WriteEventTo(FILE* efile, char* const evtBuf, + const SnEventFrame& evt, + const SnConfigFrame& conf); + + static + bool WriteConfig(FILE* efile, + const SnConfigFrame& conf); + + static + bool WriteFileHeader(FILE* f, const uint64_t macadr); + + friend class SnSDUtilsWhisperer; // to restrict access to specific functions +}; + +class SnSDUtilsWhisperer { + static + void DeleteFile(FILE*& f, const char* fname) { + return SnSDUtils::DeleteFile(f, fname); + } + + friend class SnCommWin; // the one who's allowed to use me +}; + +#endif // SN_SnSDUtils