Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
SnCommWin.cpp
- Committer:
- uci1
- Date:
- 2012-08-03
- Revision:
- 6:6f002d202f59
- Parent:
- 3:24c5f0f50bf1
- Child:
- 8:95a325df1f6b
File content as of revision 6:6f002d202f59:
#include "SnCommWin.h" #include "SnHeaderFrame.h" #include "SnConfigFrame.h" #include "SnSDUtils.h" 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; const uint32_t to = (conf.IsObeyingTimeout()) ? timeout : kSecsPerYear; if (conf.IsSendingAllFiles()) { printf("sending all files\r\n"); res = SnSDUtils::SendAllFiles(this, conf.IsDeletingFiles(), to, genBuf, bsize, conf, evt); } 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, bsize, nev, to); printf("after send data cur file, res=%d\r\n",(int)res); } } return res; } SnCommWin::ECommWinResult SnCommWin::SendData(FILE* inf, const char* infn, const SnConfigFrame& curConf, SnEventFrame& evt, char* const genBuf, const uint32_t bsize, const uint32_t nevts, const uint32_t timeout_clock, const uint32_t firstEvt) { // nevts==0 ==> send all events printf("SnCommWin::SendData cur file\r\n"); ECommWinResult res = kUndefFail; if (inf!=0) { // send the file name res = SendFilename(infn, genBuf, timeout_clock); if (res>kAllFails) { if (genBuf!=0) { // send the contents res = SendFileContents(inf, curConf, evt, genBuf, nevts, timeout_clock, firstEvt); if (res>SnCommWin::kAllFails) { // wait for handshake uint8_t hndshk=0; res = WaitHandshake(timeout_clock, genBuf, bsize, hndshk); if ( (res==SnCommWin::kOkWithMsg) // got handshake && (nevts==0) // sent whole file && curConf.IsDeletingFiles() // want to delete //&& (strcmp(infn, SnSDUtils::GetCurFileName()!=0) // not current file (TODO?) && (hndshk==SnHeaderFrame::kHnShOkComplCode)) { // whole file received // delete it SnSDUtilsWhisperer::DeleteFile(inf, infn); } } } } } return res; }