Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

SnCommWin.h

Committer:
uci1
Date:
2012-07-24
Revision:
2:e67f7c158087
Parent:
1:e392595b4b76
Child:
3:24c5f0f50bf1

File content as of revision 2:e67f7c158087:

#ifndef SN_SnCommWin
#define SN_SnCommWin

#include "mbed.h"
#include <stdint.h>

class SnConfigFrame;
class SnEventFrame;

// 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
        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
    };
        
 private:
    //bool                    fWinOpen;  // whether this comm should listen
    
            ECommWinResult SendData(FILE* inf, const char* infn,
                                    const SnConfigFrame& curConf,
                                    SnEventFrame& evt,
                                    char* const genBuf,
                                    const uint32_t nevts,
                                    const uint32_t firstEvt=0);
            ECommWinResult  SendData(const char* infn,
                                     const SnConfigFrame& curConf,
                                     SnEventFrame& evt,
                                     char* const genBuf,
                                     const uint32_t nevts,
                                     const uint32_t firstEvt=0);

 protected: 
    virtual ECommWinResult  SendConfAndEvents(FILE* inf,
                                              const SnConfigFrame& curConf,
                                              SnEventFrame& evt,
                                              char* const genBuf,
                                              const uint32_t nevts,
                                              const uint32_t firstEvt=0)=0;
 public:
    virtual ~SnCommWin() {}
    
    virtual ECommWinResult  OpenWindow(const uint32_t timeout,
                                       const bool sendStatus,
                                       const SnConfigFrame& conf,
                                       const SnEventFrame& evt,
                                       char* const genBuf)=0;
    
    virtual bool            Connect(const uint32_t timeout)=0;

    virtual ECommWinResult  GetConfig(SnConfigFrame& conf,
                                      const uint32_t timeOut,
                                      char* const confBuf)=0;
    
    virtual ECommWinResult  SendStatus(const SnConfigFrame& conf,
                                       const SnEventFrame& evt,
                                       char* const genBuf)=0;
            
            ECommWinResult  SendData(SnConfigFrame& conf,
                                     SnEventFrame& evt,
                                     char* const genBuf,
                                     const uint32_t timeout);
    
    virtual ECommWinResult  SendData(FILE* inf)=0;
    
};

#endif // SN_SnCommWin