Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: SnCommWin.h
- Revision:
- 37:ff95e7070f26
- Parent:
- 36:87865913ae6f
- Child:
- 40:1324da35afd4
--- a/SnCommWin.h Thu May 23 22:26:39 2013 +0000 +++ b/SnCommWin.h Wed May 29 00:20:31 2013 +0000 @@ -8,11 +8,11 @@ #include "SnConfigFrame.h" class SnEventFrame; class SnPowerFrame; +class SnCommPeripheral; -// ABC for communication types +// DAQ station communication utilities class SnCommWin { -/* public: enum ECommWinResult { kUndefFail, // undefined fail type @@ -30,8 +30,7 @@ kOkWithMsg, // successfully received message kOkWthMsgNoConf // successfully received message and it says to stick with the same config }; -*/ - static const size_t kMaxStrLen = 512; // max bytes for a string send. prevent something crazy + static const char* kLocalDir; // the local mbed directory static const char* kDelAllConfCodeStr; // a magic string to confirm deletion of all files on the SD card static const uint8_t kDelAllConfCodeLen; // the length of the magic string @@ -54,6 +53,8 @@ protected: + SnCommPeripheral* fComm; // the communication peripheral. deleted in dtor!! + virtual int SendFileBlock(FILE* inf, const uint8_t blockHeaderCode, const uint32_t blockSize, @@ -68,24 +69,22 @@ uint32_t nevts, const uint32_t timeout_clock); - // send and receive must not kick the watchdog, or a bad timeout - // could block a station forever! - 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; + public: + SnCommWin(SnCommPeripheral* p); + virtual ~SnCommWin(); - bool IsTimedOut(const uint32_t timeout_clock) const; - - - public: - virtual ~SnCommWin() {} + // probably no need to overload + virtual bool TrySetSysTimeUnix(const uint32_t timeout); + virtual bool Connect(const uint32_t timeout); + virtual bool CloseConn(const uint32_t timeout); - virtual SnConfigFrame::EDatPackBit GetCommType() const=0; + // optional overloads + virtual uint32_t GetConnectTimeout() const; + virtual uint32_t GetListenTimeout() const; + virtual void Set(const SnConfigFrame& conf) {} - virtual bool TrySetSysTimeUnix(const uint32_t timeout) { return 0; } - - virtual void Set(const SnConfigFrame& conf)=0; + // mandatory overloads + virtual SnConfigFrame::EDatPackBit GetCommType() const=0; virtual ECommWinResult OpenWindow(const uint32_t timeout, const bool sendStatus, @@ -97,10 +96,6 @@ 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 bool GetDeleteAllConfirmCode(const SnConfigFrame& conf, const uint32_t length, const uint32_t timeout, @@ -152,22 +147,6 @@ const uint32_t bsize, const uint32_t timeout, const uint32_t handshakeTimeout); - - static - void CapitalizeInPlace(std::string::iterator s, - const std::string::const_iterator send); - - // 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); - } - } - } };