Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnCommWin.h
- 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);