Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
SnSDUtils.h
- Committer:
- uci1
- Date:
- 2012-07-31
- Revision:
- 3:24c5f0f50bf1
- Parent:
- 2:e67f7c158087
- Child:
- 4:a91682e19d6b
File content as of revision 3:24c5f0f50bf1:
#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* const kSDsubDir; static const uint8_t kFNBufSize=128; static const uint8_t kIOvers; // file I/O version private: static FILE* OpenSDFile(const char* name, const char* mode); 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]; static FILE* fgCurFile; 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, const bool setcurrent); static SnCommWin::ECommWinResult SendAllFiles(SnCommWin* comm, const bool doDelete, const uint32_t timeout, char* const buf, const uint32_t bsize); static const char* GetCurFileName() { return fgCurFileName; } static FILE* GetCurFile() { return fgCurFile; } 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, const uint32_t run, const uint16_t seq); static bool ReadFileHeader(FILE* f, uint64_t& macadr, uint32_t& run, uint16_t& seq); 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