Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
1:e392595b4b76
Parent:
0:664899e0b988
Child:
2:e67f7c158087
--- a/SnCommWin.cpp	Sat Jun 30 02:03:51 2012 +0000
+++ b/SnCommWin.cpp	Fri Jul 20 19:04:02 2012 +0000
@@ -11,7 +11,8 @@
 SnCommWin::ECommWinResult SnCommWin::SendData(SnConfigFrame& conf,
                                               SnEventFrame& evt,
                                               char* const evtBuf,
-                                              char* const confBuf) {
+                                              char* const confBuf,
+                                              const uint32_t timeout) {
     ECommWinResult res = kUndefFail;
     if (conf.IsSendingAllFiles()) {
         res = SnSDUtils::SendAllFiles(this, conf.IsDeletingFiles());
@@ -19,14 +20,17 @@
         if (conf.GetCommSendData()==0) {
             res = kOkNoMsg;
         } else {
-            res = SendData(SnSDUtils::GetCurFileName(), conf, evt,
-                           evtBuf, confBuf, conf.GetCommSendData());
+            const uint32_t nev = (conf.GetCommSendData()>0) ?
+                                  conf.GetCommSendData() 
+                                  : 0u; // send all events in file
+            res = SendData(SnSDUtils::GetCurFile(), SnSDUtils::GetCurFileName(),
+                           conf, evt, evtBuf, confBuf, nev);
         }
     }
     return res;
 }
 
-SnCommWin::ECommWinResult SnCommWin::SendData(const char* infn,
+SnCommWin::ECommWinResult SnCommWin::SendData(FILE* inf, const char* infn,
                                               const SnConfigFrame& curConf,
                                               SnEventFrame& evt,
                                               char* const evtBuf,
@@ -35,9 +39,10 @@
                                               const uint32_t firstEvt) {
     // nevts==0 ==> send all events
     // evtBuf should be 0 only if nevts==0
+    //
+    // this version should be used to send the current file (avoid fopen/fclose)
     
     ECommWinResult res = kUndefFail;
-    FILE* inf = fopen(infn, "rb");
     if (inf!=0) {
         if (nevts==0) {
             res = SendData(inf);
@@ -49,6 +54,27 @@
                 res = SendConfAndEvents(inf, curConf, evt, evtBuf, confBuf, nevts, firstEvt);
             }
         }
+    }
+    return res;
+}
+
+
+SnCommWin::ECommWinResult SnCommWin::SendData(const char* infn,
+                                              const SnConfigFrame& curConf,
+                                              SnEventFrame& evt,
+                                              char* const evtBuf,
+                                              char* const confBuf,
+                                              const uint32_t nevts,
+                                              const uint32_t firstEvt) {
+    // nevts==0 ==> send all events
+    // evtBuf should be 0 only if nevts==0
+    //
+    // this version can send existing files that were previous closed
+    
+    ECommWinResult res = kUndefFail;
+    FILE* inf = fopen(infn, "rb");
+    if (inf!=0) {
+        SendData(inf, infn, curConf, evt, evtBuf, confBuf, nevts, firstEvt);
         if (inf!=0) {
             fclose(inf);
         }