Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Revision:
84:80b15993944e
Parent:
56:0bba0ef15697
Child:
98:ce72ef143b9b
--- a/SnCommWin.h	Mon Feb 23 03:04:39 2015 +0000
+++ b/SnCommWin.h	Fri Oct 30 04:49:40 2015 +0000
@@ -11,6 +11,8 @@
 class SnSignalStrengthFrame;
 class SnCommPeripheral;
 class SnTempFrame;
+class SnClockSetFrame;
+class SnHeartbeatFrame;
 
 // DAQ station communication utilities
 
@@ -59,6 +61,46 @@
                                         uint8_t& mcode,
                                         uint32_t& mlen);
 
+    bool WriteStatusDataPackHeaderTo(char*& b, 
+                                     const uint32_t payloadLen);
+
+    bool CallHeaderWriteTo(char*& b,
+                           const uint8_t msgCode,
+                           const uint32_t msgLen);
+    
+    int32_t CallSendAll(const char* const data, const uint32_t length,
+                        const uint32_t timeout_clock);
+
+
+    template<class T>
+    char* WriteStatusDataPackHeadersFor(const T& x,
+                                        const uint8_t hdrCode,
+                                        char*& b,
+                                        const uint32_t timeout_clock) {
+        // flag that this is a data packet
+        const uint32_t xMsgLen = x.SizeOf();
+        WriteStatusDataPackHeaderTo(b, xMsgLen);
+        CallHeaderWriteTo(b, hdrCode, xMsgLen);
+        return b;
+    }
+
+    template<class T>
+    char* SendStatusDataPack(const T& x,
+                             const uint8_t hdrCode,
+                             int32_t& toBeSent,
+                             int32_t& byteSent,
+                             char* const genBuf,
+                             const uint32_t timeout_clock) {
+        char* b = genBuf;
+        b = WriteStatusDataPackHeadersFor(x, hdrCode, 
+                                          b, timeout_clock);
+        x.WriteTo(b);
+        const int32_t sendNow = (b - genBuf);
+        toBeSent += sendNow;
+        byteSent += CallSendAll(genBuf, sendNow, timeout_clock);
+        return b;
+    }
+    
 
  protected:
     SnCommPeripheral*           fComm; // the communication peripheral. deleted in dtor!!
@@ -97,6 +139,18 @@
     // mandatory overloads
     virtual SnConfigFrame::EDatPackBit GetCommType() const=0;
     
+    virtual ECommWinResult OpenWindow(const bool sendStatus,
+                                      const SnConfigFrame& conf,
+                                      const SnPowerFrame& pow, // com win power
+                                      const SnEventFrame& stEvent,
+                                      const uint16_t seq,
+                                      const float thmrate,
+                                      const float evtrate,
+                                      const uint32_t powerOnTime,
+                                      const SnTempFrame& temper, // com win temp
+                                      char* const genBuf,
+                                      const uint32_t timeout_clock)=0;
+/*
     virtual ECommWinResult  OpenWindow(const uint32_t timeout,
                                        const bool sendStatus,
                                        const SnConfigFrame& conf,
@@ -108,7 +162,7 @@
                                        const uint32_t powerOnTime,
                                        const SnTempFrame& temper,
                                        char* const genBuf)=0;
-    
+*/    
     virtual bool            GetDeleteAllConfirmCode(const SnConfigFrame& conf,
                                                     const uint32_t length,
                                                     const uint32_t timeout,
@@ -144,6 +198,17 @@
                               const uint32_t bsize);
     
     ECommWinResult  SendStatus(const SnConfigFrame& conf,
+                               const SnPowerFrame& pow, // com win power
+                               const SnEventFrame& stEvent,
+                               const uint16_t seq,
+                               const float thmrate,
+                               const float evtrate,
+                               const uint32_t powerOnTime,
+                               const SnTempFrame& temper, // com win temp
+                               char* const genBuf,
+                               const uint32_t timeout_clock);
+    /*
+    ECommWinResult  SendStatus(const SnConfigFrame& conf,
                                const SnEventFrame& evt,
                                const SnPowerFrame& pow,
                                const uint16_t seq,
@@ -153,7 +218,22 @@
                                const SnTempFrame& temper,
                                char* const genBuf,
                                const uint32_t timeout_clock);
-            
+    */
+
+    virtual ECommWinResult SendStatusData(const SnConfigFrame& conf,
+                                          const SnClockSetFrame& stTrgStartClk,
+                                          const SnClockSetFrame& stTrgStopClk,
+                                          const SnPowerFrame& stPower,
+                                          const SnEventFrame& stEvent,
+                                          const SnTempFrame& stTemperature,
+                                          const SnHeartbeatFrame& stHeartbeat,
+                                          const bool stNewPower,
+                                          const bool stNewEvent,
+                                          const bool stNewHeartbeat,
+                                          const bool stNewTemperature,
+                                          char* const genBuf,
+                                          const uint32_t timeout_clock);
+    
     SnCommWin::ECommWinResult SendString(const char* str,
                                          const uint32_t timeout);