Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

SnCommWin.cpp

Committer:
uci1
Date:
2012-07-31
Revision:
3:24c5f0f50bf1
Parent:
2:e67f7c158087
Child:
6:6f002d202f59

File content as of revision 3:24c5f0f50bf1:

#include "SnCommWin.h"

#include "SnConfigFrame.h"
#include "SnSDUtils.h"

/*
bool SnCommWin::fgCommEst   = false;
bool SnCommWin::fgWinOpen   = false;
*/

SnCommWin::ECommWinResult SnCommWin::SendData(SnConfigFrame& conf,
                                              SnEventFrame& evt,
                                              char* const genBuf,
                                              const uint32_t bsize,
                                              const uint32_t timeout) {
    printf("SnCommWin::SendData\r\n");
    ECommWinResult res = kUndefFail;
    if (conf.IsSendingAllFiles()) {
        printf("sending all files\r\n");
        const uint32_t to = (conf.IsObeyingTimeout()) ? timeout : kSecsPerYear;
        res = SnSDUtils::SendAllFiles(this, conf.IsDeletingFiles(), to, genBuf, bsize);
    } else {
        if (conf.GetCommSendData()==0) {
            printf("no data to send\r\n");
            res = kOkNoMsg;
        } else {
            const uint32_t nev = (conf.GetCommSendData()>0) ?
                                  conf.GetCommSendData() // send N events
                                  : 0u; // send all events in last file
            res = SendData(SnSDUtils::GetCurFile(), SnSDUtils::GetCurFileName(),
                           conf, evt, genBuf, nev);
            printf("after send data cur file, res=%d\r\n",(int)res);
            if (res>kAllFails) {
                printf("waiting for handshake\r\n");
                res = WaitHandshake(timeout, genBuf, bsize);
            }
        }
    }
    return res;
}

SnCommWin::ECommWinResult SnCommWin::SendData(FILE* inf, const char* infn,
                                              const SnConfigFrame& curConf,
                                              SnEventFrame& evt,
                                              char* const genBuf,
                                              const uint32_t nevts,
                                              const uint32_t firstEvt) {
    // nevts==0 ==> send all events
    // evtBuf should be 0 only if nevts==0
    
    printf("SnCommWin::SendData cur file\r\n");
    ECommWinResult res = kUndefFail;
    if (inf!=0) {
        res = SendFilename(infn, genBuf);
        if (res>kAllFails) {
            if (nevts==0) {
                res = SendData(inf);
                if (curConf.IsDeletingFiles() && res>=kOkMsgSent) {
                    SnSDUtilsWhisperer::DeleteFile(inf, infn);
                }
            } else {
                if (genBuf!=0) {
                    res = SendConfAndEvents(inf, curConf, evt, genBuf, nevts, firstEvt);
                }
            }
        }
    }
    return res;
}

/*
SnCommWin::ECommWinResult SnCommWin::SendData(const char* infn,
                                              const SnConfigFrame& curConf,
                                              SnEventFrame& evt,
                                              char* const genBuf,
                                              const uint32_t nevts,
                                              const uint32_t firstEvt) {
    // nevts==0 ==> send all events
    // evtBuf should be 0 only if nevts==0
    //
    // this version can send existing files that were previous closed
    
    ECommWinResult res = kUndefFail;
    FILE* inf = fopen(infn, "rb");
    if (inf!=0) {
        SendData(inf, infn, curConf, evt, genBuf, nevts, firstEvt);
        if (inf!=0) {
            fclose(inf);
        }
    }
    return res;
}
*/