//------------------------------------------------------------------------------------------- void TbFunFTPRead(void) { //should make MAX checking static u16 nReadPrev = 0; if( (!sFTPState.flagAlrSent) || (sFTPState.flagTimeout) ) { if(!updateFlag) { if(sFTPState.flagLastPage) { //currState = stEndGPRS; //was earlier - when there was not PUT-cmds currState = stOpenPutFTP; sFTPState.flagLastPage = 0; sFTPState.flagOutBoot = 1; } else /* not last page*/ { nRead = FTP_PACKET_SIZE - bytesFTPToReadForPacket; if(sFTPState.flagFrontBlock) nRead = FTP_SIZE_FRONT_BLOCK; if(nRead != nReadPrev) /* if we received less bytes we asked than we should scan added (to pageSize) number of bytes*/ { //"AT+FTPGET=2,", memset(ftpReadNumber,0,sizeof(ftpReadNumber)); iLen = getLenNum(nRead); int2char((char * )ftpReadNumber,nRead,iLen,10); memset(ftpReadBuf,0,sizeof(ftpReadBuf)); strcpy(ftpReadBuf,(char *)QUERIES[14]); strncat(ftpReadBuf,ftpReadNumber,strlen(ftpReadNumber) ); strncat(ftpReadBuf,"\r\n",sizeof("\r\n") ); //sFTPState.flagScannedLess = 1; } //else // sFTPState.flagScannedLess = 0; nReadPrev = nRead; //at+ftpget=2,1024 if(sFTPState.flagPrepareToSend) { sFTPState.flagPrepareToSend = 0; if(!checkTimeoutFunFTP()) cmdSend((u8 *)ftpReadBuf); timerFDTimeout = TIMEOUT_BEGIN_GPRS_CMD; sFTPState.flagAlrSent = 1; sFTPState.flagTimeToSend = 1; } } } } }
void CommunicationCoupling::initCommunication() { qDebug()<<QThread::currentThread(); m_pWorker = new Worker(this); connect(this, SIGNAL(cmdSend(quint8, quint32, quint32)), m_pWorker, SLOT(CmdSend(quint8, quint32, quint32))); connect(this, SIGNAL(mcuCmdSend(quint8, quint32, quint32)), m_pWorker, SLOT(CmdSend4Mcu(quint8, quint32, quint32))); connect(this, SIGNAL( cmdSendClarity(quint32, quint32, quint32) ), m_pWorker, SLOT( CmdSendClarity(quint32, quint32, quint32)) ); connect(this, SIGNAL(ackClarity(quint8)), m_pWorker, SLOT(sendAckClarity(quint8)) ); connect(m_pWorker, SIGNAL(process4Mcu( quint8, quint32, quint32, quint32)), this, SLOT(processCmd4Mcu(quint8, quint32, quint32, quint32)) ); connect(m_pWorker, SIGNAL(process4Pc( quint8, quint32, quint32, quint32)), this, SLOT(processCmd4Pc(quint8, quint32, quint32, quint32)) ); connect(m_pWorker, SIGNAL(process4PcClarity( quint8, quint32, quint32, quint32)), this, SLOT(processCmd4PcClarity(quint8, quint32, quint32, quint32)) ); connect(m_pWorker, SIGNAL(communicationError(int)), this, SLOT(communicationError(int)) ); setPcProtocol(DataBase::getInstance()->queryData("pcProtocol").toInt()); }
// ------------------------------------------------------------------------------ void cmdPrepareSend(u8 * buf, u32 timerVal) { if( (!sFTPState.flagAlrSent) || (sFTPState.flagTimeout) ) { if(sFTPState.flagPrepareToSend) { sFTPState.flagPrepareToSend = 0; /*timeout handling*/ timerFDTimeout = timerVal; /*ready to send*/ sFTPState.flagTimeToSend = 1; if(!checkTimeoutFunFTP()) cmdSend(buf); /*aux actions*/ sFTPState.flagAlrSent = 1; } } }
//------------------------------------------------------------------------------------------- void TbFunFTPWrite(void) //"AT+FTPPUT=2,8\r\n", { u8 * ptrDataDst,* ptrDataSrc; u8 k; u16 len; if(!sFTPState.flagWriteRawData) { memset(ftpDataPut,0,sizeof(ftpDataPut)); strcpy((char *)ftpDataPut,"Updated "); ptrDataDst = &ftpDataPut[strlen((char *)ftpDataPut)]; ptrDataSrc = (u8 *)readRTCTime(&rtc); k = 0; len = strlen((const char *)readRTCTime(&rtc)); while(k < len) { k++; *ptrDataDst++ = *ptrDataSrc++; } memset(ftpReadNumber,0,sizeof(ftpReadNumber)); len = strlen((char *) ftpDataPut ); iLen = getLenNum(len); int2char((char * )ftpReadNumber,len,iLen,10); memset(ftpPutWriteBuf,0,sizeof(ftpPutWriteBuf)); strcpy(ftpPutWriteBuf,(char *)QUERIES[15]); strncat(ftpPutWriteBuf,ftpReadNumber,strlen((char *)ftpReadNumber) ); strncat(ftpPutWriteBuf,"\r\n",sizeof("\r\n") ); cmdPrepareSend((u8 *)ftpPutWriteBuf, TIMEOUT_OPEN_PUT_CMD); } else if(sFTPState.flagPrepareToSend) { sFTPState.flagPrepareToSend = 0; cmdSend(ftpDataPut); sFTPState.flagTimeToSend = 1; } }
static void TbFunCheckConn(void) //AT { if( (sFTPState.flagFTPStart) || (!sFTPState.flagAlrSent) || (sFTPState.flagTimeout)) { if(sFTPState.flagPrepareToSend) { sFTPState.flagPrepareToSend = 0; if(sFTPState.flagTimeout) { sFTPState.flagTimeToSend = 1; numTryTimeoutResendAT++; sFTPState.flagTimeout = 0; } else numTryTimeoutResendAT = 0; cmdSend((u8 *)QUERIES[0]); sFTPState.flagAlrSent = 1; sFTPState.flagFTPStart = 0; timerFDTimeout = TIMEOUT_USUAL_CMD; sFTPState.flagTimeToSend = 1; } } }
void CommunicationCoupling::sendCmd(quint8 cmd, quint32 arg, quint32 add) { emit(cmdSend(cmd, arg, add)); }