Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

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) {