Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
SnCommWin.h
- Committer:
- uci1
- Date:
- 2012-09-29
- Revision:
- 18:55f1581f2ee4
- Parent:
- 16:744ce85aede2
- Child:
- 21:ce51bb0ba4a5
File content as of revision 18:55f1581f2ee4:
#ifndef SN_SnCommWin #define SN_SnCommWin #include "mbed.h" #include <stdint.h> #include "SnConfigFrame.h" class SnEventFrame; class SnPowerFrame; // ABC for communication types class SnCommWin { public: enum ECommWinResult { kUndefFail, // undefined fail type kCanNotConnect, // unable to connect to port kFailTimeout, // timed out but message required kFailNoneSent, // none of the message sent kFailPartSent, // only part of the message sent kUnexpectedRec, // unexpected / unhandled message received kAllFails, // to be used for "if (ret > kAllFails) ==> success" // only successes should go below kConnected, // connection established, no messaging attempted kOkMsgSent, // message sent without waiting for "received" handshake kOkNoMsg, // timed out with no message, but that is ok kOkWithMsg, // successfully received message kOkWthMsgNoConf // successfully received message and it says to stick with the same config }; protected: virtual int SendFileBlock(FILE* inf, const uint8_t blockHeaderCode, const uint32_t blockSize, char* const genBuf, const uint32_t timeout); virtual ECommWinResult SendFileContents(FILE* inf, const SnConfigFrame& curConf, SnEventFrame& evt, SnPowerFrame& pow, char* const genBuf, uint32_t nevts, const uint32_t timeout_clock); virtual int32_t ReceiveAll(char* const buf, const uint32_t mlen, const uint32_t timeout_clock)=0; virtual int32_t SendAll(char* const data, const uint32_t length, const uint32_t timeout_clock)=0; bool IsTimedOut(const uint32_t timeout_clock) const; public: virtual ~SnCommWin() {} virtual SnConfigFrame::EDatPackBit GetCommType() const=0; virtual bool TrySetSysTimeUnix(const uint32_t timeout) { return 0; } virtual void Set(const SnConfigFrame& conf)=0; virtual ECommWinResult OpenWindow(const uint32_t timeout, const bool sendStatus, const SnConfigFrame& conf, const SnEventFrame& evt, const SnPowerFrame& pow, const uint16_t seq, const float thmrate, const float evtrate, char* const genBuf)=0; virtual bool Connect(const uint32_t timeout)=0; virtual bool CloseConn(const uint32_t timeout)=0; virtual uint32_t GetConnectTimeout() const; virtual uint32_t GetListenTimeout() const; virtual ECommWinResult WaitHandshake(const uint32_t timeout, char* const buf, const uint32_t bsize, uint8_t& hndShkCode); ECommWinResult GetConfig(SnConfigFrame& conf, const uint32_t timeOut, char* const confBuf, const uint32_t bsize); ECommWinResult SendStatus(const SnConfigFrame& conf, const SnEventFrame& evt, const SnPowerFrame& pow, const uint16_t seq, const float thmrate, const float evtrate, char* const genBuf, const uint32_t timeout_clock); ECommWinResult SendFilename(const char* fn, char* const genBuf, const uint32_t timeout_clock); ECommWinResult SendData(FILE* inf, const char* infn, const SnConfigFrame& curConf, SnEventFrame& evt, SnPowerFrame& pow, char* const genBuf, const uint32_t bsize, const uint32_t nevts, const uint32_t timeout_clock, const uint32_t handshakeTimeout); ECommWinResult SendData(SnConfigFrame& conf, SnEventFrame& evt, SnPowerFrame& pow, char* const genBuf, const uint32_t bsize, const uint32_t timeout, const uint32_t handshakeTimeout); // for debugging void dispStrBytes(const char* const s, const uint32_t len) const { const char* c = s; for (uint32_t i=0; i<len; ++i, ++c) { if (*c>0x1F && *c<0x7F) { printf("%c", *c); } else { printf(".x%02x.", *c); } } } }; #endif // SN_SnCommWin