Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Committer:
uci1
Date:
Fri Aug 31 02:09:09 2012 +0000
Revision:
15:f2569d8e4176
Parent:
12:d472f9811262
Child:
16:744ce85aede2
Removed debug output between trigger and and dFPGA->MB request that corrupted data. Lots of work on SBD, but not quite working yet. Debug output off, but start/stop running notifications are on.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
uci1 1:e392595b4b76 1 #ifndef SN_SnCommWin
uci1 1:e392595b4b76 2 #define SN_SnCommWin
uci1 1:e392595b4b76 3
uci1 1:e392595b4b76 4 #include "mbed.h"
uci1 1:e392595b4b76 5 #include <stdint.h>
uci1 1:e392595b4b76 6
uci1 8:95a325df1f6b 7 #include "SnConfigFrame.h"
uci1 1:e392595b4b76 8 class SnEventFrame;
uci1 8:95a325df1f6b 9 class SnPowerFrame;
uci1 1:e392595b4b76 10
uci1 1:e392595b4b76 11 // ABC for communication types
uci1 1:e392595b4b76 12
uci1 1:e392595b4b76 13 class SnCommWin {
uci1 1:e392595b4b76 14 public:
uci1 1:e392595b4b76 15 enum ECommWinResult {
uci1 1:e392595b4b76 16 kUndefFail, // undefined fail type
uci1 1:e392595b4b76 17 kCanNotConnect, // unable to connect to port
uci1 1:e392595b4b76 18 kFailTimeout, // timed out but message required
uci1 2:e67f7c158087 19 kFailNoneSent, // none of the message sent
uci1 1:e392595b4b76 20 kFailPartSent, // only part of the message sent
uci1 3:24c5f0f50bf1 21 kUnexpectedRec, // unexpected / unhandled message received
uci1 1:e392595b4b76 22 kAllFails, // to be used for "if (ret > kAllFails) ==> success"
uci1 1:e392595b4b76 23 // only successes should go below
uci1 1:e392595b4b76 24 kConnected, // connection established, no messaging attempted
uci1 1:e392595b4b76 25 kOkMsgSent, // message sent without waiting for "received" handshake
uci1 1:e392595b4b76 26 kOkNoMsg, // timed out with no message, but that is ok
uci1 12:d472f9811262 27 kOkWithMsg, // successfully received message
uci1 12:d472f9811262 28 kOkWthMsgNoConf // successfully received message and it says to stick with the same config
uci1 1:e392595b4b76 29 };
uci1 2:e67f7c158087 30
uci1 1:e392595b4b76 31
uci1 3:24c5f0f50bf1 32 protected:
uci1 12:d472f9811262 33 virtual int SendFileBlock(FILE* inf,
uci1 12:d472f9811262 34 const uint8_t blockHeaderCode,
uci1 12:d472f9811262 35 const uint32_t blockSize,
uci1 12:d472f9811262 36 char* const genBuf,
uci1 12:d472f9811262 37 const uint32_t timeout);
uci1 12:d472f9811262 38
uci1 8:95a325df1f6b 39 virtual ECommWinResult SendFileContents(FILE* inf,
uci1 8:95a325df1f6b 40 const SnConfigFrame& curConf,
uci1 8:95a325df1f6b 41 SnEventFrame& evt,
uci1 8:95a325df1f6b 42 SnPowerFrame& pow,
uci1 8:95a325df1f6b 43 char* const genBuf,
uci1 8:95a325df1f6b 44 uint32_t nevts,
uci1 12:d472f9811262 45 const uint32_t timeout_clock);
uci1 8:95a325df1f6b 46
uci1 8:95a325df1f6b 47 virtual SnConfigFrame::EDatPackBit GetCommType() const=0;
uci1 8:95a325df1f6b 48
uci1 8:95a325df1f6b 49 virtual int32_t ReceiveAll(char* const buf, const uint32_t mlen,
uci1 8:95a325df1f6b 50 const uint32_t timeout_clock)=0;
uci1 8:95a325df1f6b 51 virtual int32_t SendAll(char* const data, const uint32_t length,
uci1 8:95a325df1f6b 52 const uint32_t timeout_clock)=0;
uci1 12:d472f9811262 53
uci1 12:d472f9811262 54 bool IsTimedOut(const uint32_t timeout_clock) const;
uci1 8:95a325df1f6b 55
uci1 12:d472f9811262 56
uci1 1:e392595b4b76 57 public:
uci1 1:e392595b4b76 58 virtual ~SnCommWin() {}
uci1 1:e392595b4b76 59
uci1 8:95a325df1f6b 60 virtual void Set(const SnConfigFrame& conf)=0;
uci1 8:95a325df1f6b 61
uci1 1:e392595b4b76 62 virtual ECommWinResult OpenWindow(const uint32_t timeout,
uci1 1:e392595b4b76 63 const bool sendStatus,
uci1 1:e392595b4b76 64 const SnConfigFrame& conf,
uci1 1:e392595b4b76 65 const SnEventFrame& evt,
uci1 8:95a325df1f6b 66 const SnPowerFrame& pow,
uci1 10:3c93db1cfb12 67 const uint16_t seq,
uci1 10:3c93db1cfb12 68 const float thmrate,
uci1 10:3c93db1cfb12 69 const float evtrate,
uci1 2:e67f7c158087 70 char* const genBuf)=0;
uci1 1:e392595b4b76 71
uci1 1:e392595b4b76 72 virtual bool Connect(const uint32_t timeout)=0;
uci1 15:f2569d8e4176 73 virtual bool CloseConn(const uint32_t timeout)=0;
uci1 12:d472f9811262 74
uci1 3:24c5f0f50bf1 75 virtual ECommWinResult WaitHandshake(const uint32_t timeout,
uci1 3:24c5f0f50bf1 76 char* const buf,
uci1 6:6f002d202f59 77 const uint32_t bsize,
uci1 8:95a325df1f6b 78 uint8_t& hndShkCode);
uci1 3:24c5f0f50bf1 79
uci1 8:95a325df1f6b 80 ECommWinResult GetConfig(SnConfigFrame& conf,
uci1 8:95a325df1f6b 81 const uint32_t timeOut,
uci1 8:95a325df1f6b 82 char* const confBuf,
uci1 8:95a325df1f6b 83 const uint32_t bsize);
uci1 1:e392595b4b76 84
uci1 8:95a325df1f6b 85 ECommWinResult SendStatus(const SnConfigFrame& conf,
uci1 8:95a325df1f6b 86 const SnEventFrame& evt,
uci1 8:95a325df1f6b 87 const SnPowerFrame& pow,
uci1 10:3c93db1cfb12 88 const uint16_t seq,
uci1 10:3c93db1cfb12 89 const float thmrate,
uci1 10:3c93db1cfb12 90 const float evtrate,
uci1 8:95a325df1f6b 91 char* const genBuf,
uci1 8:95a325df1f6b 92 const uint32_t timeout_clock);
uci1 1:e392595b4b76 93
uci1 8:95a325df1f6b 94 ECommWinResult SendFilename(const char* fn,
uci1 8:95a325df1f6b 95 char* const genBuf,
uci1 8:95a325df1f6b 96 const uint32_t timeout_clock);
uci1 6:6f002d202f59 97
uci1 8:95a325df1f6b 98 ECommWinResult SendData(FILE* inf, const char* infn,
uci1 8:95a325df1f6b 99 const SnConfigFrame& curConf,
uci1 8:95a325df1f6b 100 SnEventFrame& evt,
uci1 8:95a325df1f6b 101 SnPowerFrame& pow,
uci1 8:95a325df1f6b 102 char* const genBuf,
uci1 8:95a325df1f6b 103 const uint32_t bsize,
uci1 8:95a325df1f6b 104 const uint32_t nevts,
uci1 8:95a325df1f6b 105 const uint32_t timeout_clock,
uci1 12:d472f9811262 106 const uint32_t handshakeTimeout);
uci1 6:6f002d202f59 107
uci1 8:95a325df1f6b 108 ECommWinResult SendData(SnConfigFrame& conf,
uci1 8:95a325df1f6b 109 SnEventFrame& evt,
uci1 8:95a325df1f6b 110 SnPowerFrame& pow,
uci1 8:95a325df1f6b 111 char* const genBuf,
uci1 8:95a325df1f6b 112 const uint32_t bsize,
uci1 12:d472f9811262 113 const uint32_t timeout,
uci1 12:d472f9811262 114 const uint32_t handshakeTimeout);
uci1 8:95a325df1f6b 115
uci1 1:e392595b4b76 116 };
uci1 1:e392595b4b76 117
uci1 1:e392595b4b76 118 #endif // SN_SnCommWin