Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

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