From f682d7ba5af664d0fd94592c60fad49620c14164 Mon Sep 17 00:00:00 2001 From: J-F Martel Date: Sat, 3 Feb 2018 12:59:53 -0500 Subject: [PATCH] Corrections au client VOIP sms. Pas encore au point. --- Sources/VoipSMS/VoipMsSMSClient.cpp | 255 +++++++++++++++++++++------- Sources/VoipSMS/VoipMsSMSClient.h | 11 +- 2 files changed, 204 insertions(+), 62 deletions(-) diff --git a/Sources/VoipSMS/VoipMsSMSClient.cpp b/Sources/VoipSMS/VoipMsSMSClient.cpp index 2ee1d84..3196164 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.cpp +++ b/Sources/VoipSMS/VoipMsSMSClient.cpp @@ -21,10 +21,12 @@ CVoipMsSMSClient::CVoipMsSMSClient() connect(mCheckNewSMSTimer,SIGNAL(timeout()),this,SLOT(CheckNewSMSTimerExpired())); mCheckNewSMSTimer->setSingleShot(false); - mFirstDownloadDone = false; + //mFirstDownloadDone = false; mProgramHandle = 0; + mSMSDownloadState = VOIPMS_SMS_DOWNLOAD_INIT_STATE; + } CVoipMsSMSClient::~CVoipMsSMSClient() @@ -47,7 +49,9 @@ unsigned int CVoipMsSMSClient::SetVOIPMsSettings(CVoipMSSMSSettings *SettingsDat int CVoipMsSMSClient::DownloadSMSFromServer() { + qDebug("Downloading messages until %s",mVOIPMsSettings.mStartDate.toString("yyyy-MM-dd").toUtf8().data()); mCurStartDate = QDate::currentDate().addDays(-VOIP_MS_SMS_DATESPAN); + mSMSDownloadState = VOIPMS_SMS_DOWNLOAD_SPAN_MSGS_STATE; SendSMSDownloadRequest(mCurStartDate,QDate::currentDate()); mSMSMessagesList.clear(); @@ -280,7 +284,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) QDateTime NewDate = NewMessages.at(0).mDateTime; QDateTime OldDate = mSMSMessagesList.at(0).mDateTime; - if(NewDate > OldDate) + if(NewDate >= OldDate) { while(!finished) { @@ -301,24 +305,24 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) finished = true; } } - if(mFirstDownloadDone == true && NewMessages.size() > 0) - { - mProgramHandle->NewSMSMessagesArrived(NewMessages); +// if(mFirstDownloadDone == true && NewMessages.size() > 0) +// { +// mProgramHandle->NewSMSMessagesArrived(NewMessages); - qDebug() << "Added " << NewMessages.size() << " new SMS messages"; - qDebug("-----------------------------------------------------------------------"); - qDebug(" "); - for(int i = 0; i < NewMessages.size(); i++) - { - qDebug() << NewMessages.at(i).mDateTime.toString("yyyy-MM-dd hh:mm:ss") << " : " << NewMessages.at(i).mContact << " : " << NewMessages.at(i).mMessageText.toUtf8().data(); - } - qDebug("-----------------------------------------------------------------------"); - qDebug(" "); - } +// qDebug() << "Added " << NewMessages.size() << " new SMS messages"; +// qDebug("-----------------------------------------------------------------------"); +// qDebug(" "); +// for(int i = 0; i < NewMessages.size(); i++) +// { +// qDebug() << NewMessages.at(i).mDateTime.toString("yyyy-MM-dd hh:mm:ss") << " : " << NewMessages.at(i).mContact << " : " << NewMessages.at(i).mMessageText.toUtf8().data(); +// } +// qDebug("-----------------------------------------------------------------------"); +// qDebug(" "); +// } - NewMessages.append(mSMSMessagesList); - mSMSMessagesList = NewMessages; - StartSMSCheckTimer(); +// NewMessages.append(mSMSMessagesList); +// mSMSMessagesList = NewMessages; +// StartSMSCheckTimer(); } else @@ -343,44 +347,170 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) finished = true; } } - mSMSMessagesList.append(NewMessages); - StartSMSCheckTimer(); - if(mFirstDownloadDone == true && NewMessages.size() > 0) - { - mProgramHandle->NewSMSMessagesArrived(NewMessages); +// mSMSMessagesList.append(NewMessages); +// StartSMSCheckTimer(); +// if(mFirstDownloadDone == true && NewMessages.size() > 0) +// { +// mProgramHandle->NewSMSMessagesArrived(NewMessages); - qDebug() << "Added " << NewMessages.size() << " new SMS messages"; - qDebug("-----------------------------------------------------------------------"); - qDebug(" "); - for(int i = 0; i < NewMessages.size(); i++) - { - qDebug() << NewMessages.at(i).mDateTime.toString("yyyy-MM-dd hh:mm:ss") << " : " << NewMessages.at(i).mContact << " : " << NewMessages.at(i).mMessageText.toUtf8().data(); - } - qDebug("-----------------------------------------------------------------------"); - qDebug(" "); - } +// qDebug() << "Added " << NewMessages.size() << " new SMS messages"; +// qDebug("-----------------------------------------------------------------------"); +// qDebug(" "); +// for(int i = 0; i < NewMessages.size(); i++) +// { +// qDebug() << NewMessages.at(i).mDateTime.toString("yyyy-MM-dd hh:mm:ss") << " : " << NewMessages.at(i).mContact << " : " << NewMessages.at(i).mMessageText.toUtf8().data(); +// } +// qDebug("-----------------------------------------------------------------------"); +// qDebug(" "); +// } } } - else +// else +// { +// mSMSMessagesList.append(NewMessages); +// StartSMSCheckTimer(); +// } + } + else + { + NewMessages.empty(); + NBMsgReceived = 0; + } + + +// if(NewMessages.size() != 0) +// { +// mSMSMessagesList.append(NewMessages); +// qDebug("Added %d new msgs. mCurStartDate:%s", NewMessages.size(),mCurStartDate.toString("yyyy-MM-dd").toUtf8().data()); +// } + + switch(mSMSDownloadState) + { + case VOIPMS_SMS_DOWNLOAD_INIT_STATE: { - mSMSMessagesList.append(NewMessages); - StartSMSCheckTimer(); + qDebug("Error, mSMSDownloadState = INIT_STATE in SMSReceived()"); + break; } - - - - - if(NBMsgReceived == VOIP_MS_SMS_MAX_COUNT) + case VOIPMS_SMS_DOWNLOAD_SPAN_MSGS_STATE: { + if(NewMessages.size() != 0) + { + mSMSMessagesList.append(NewMessages); + qDebug("Added %d new msgs. mCurStartDate:%s", NewMessages.size(),mCurStartDate.toString("yyyy-MM-dd").toUtf8().data()); + } //Restart at the last day received... mCurStartDate = mSMSMessagesList.last().mDateTime.date(); QDate EarlierDate = mCurStartDate.addDays(-VOIP_MS_SMS_DATESPAN); - SendSMSDownloadRequest(EarlierDate,mCurStartDate); - } - else - { - if(mFirstDownloadDone == false) + if(EarlierDate < mVOIPMsSettings.mStartDate ) { + //Clipping span. + qDebug("Clipping span..."); + EarlierDate = mVOIPMsSettings.mStartDate; + + qDebug("Requesting data for last block of span"); + mSMSDownloadState = VOIPMS_SMS_DOWNLOAD_LAST_BLOCK_MSGS_STATE; + } + qDebug("Continue receiving from %s to %s ...",mCurStartDate.toString("yyyy-MM-dd").toUtf8().data(),EarlierDate.toString("yyyy-MM-dd").toUtf8().data()); + SendSMSDownloadRequest(EarlierDate,mCurStartDate); + break; + } + case VOIPMS_SMS_DOWNLOAD_LAST_BLOCK_MSGS_STATE: + { + if(NewMessages.size() != 0) + { + mSMSMessagesList.append(NewMessages); + qDebug("Added %d new msgs. mCurStartDate:%s", NewMessages.size(),mCurStartDate.toString("yyyy-MM-dd").toUtf8().data()); + } + + if(NBMsgReceived == VOIP_MS_SMS_MAX_COUNT) + { + mCurStartDate = mSMSMessagesList.last().mDateTime.date(); + qDebug("Continue receiving from %s to %s ...",mVOIPMsSettings.mStartDate.toString("yyyy-MM-dd").toUtf8().data(),mVOIPMsSettings.mStartDate.toString("yyyy-MM-dd").toUtf8().data()); + SendSMSDownloadRequest(mCurStartDate,mVOIPMsSettings.mStartDate);//download for the first day of the span only... + } + else + { + qDebug() << "Finished download of " << mSMSMessagesList.size() << " SMS messages"; +// qDebug("-----------------------------------------------------------------------"); +// qDebug(" "); +// for(int i = 0; i < mSMSMessagesList.size(); i++) +// { +// qDebug() << mSMSMessagesList.at(i).mDateTime.toString("yyyy-MM-dd hh:mm:ss") << " : " << mSMSMessagesList.at(i).mContact << " : " << mSMSMessagesList.at(i).mMessageText.toUtf8().data(); +// } +// qDebug("-----------------------------------------------------------------------"); +// qDebug(" "); + + + mSMSDownloadState = VOIPMS_SMS_GET_NEW_MSGS_STATE; + StartSMSCheckTimer(); + qDebug("Timer started in VOIPMS_SMS_DOWNLOAD_LAST_DAY_MSGS_STATE"); + } + break; + } + case VOIPMS_SMS_GET_NEW_MSGS_STATE: + { + + if(NewMessages.size() != 0) + { + for(int i = NewMessages.size(); i > 0; i--) + { + mSMSMessagesList.prepend(NewMessages[i-1]); + } + qDebug("Added %d new msgs. mCurStartDate:%s", NewMessages.size(),mCurStartDate.toString("yyyy-MM-dd").toUtf8().data()); + } + + StartSMSCheckTimer(); + qDebug("Timer started in VOIPMS_SMS_GET_NEW_MSGS_STATE"); + + if(NewMessages.size() > 0) + { + mProgramHandle->NewSMSMessagesArrived(NewMessages); + + qDebug() << "Added " << NewMessages.size() << " new SMS messages"; + qDebug("-----------------------------------------------------------------------"); + qDebug(" "); + for(int i = 0; i < NewMessages.size(); i++) + { + qDebug() << NewMessages.at(i).mDateTime.toString("yyyy-MM-dd hh:mm:ss") << " : " << NewMessages.at(i).mContact << " : " << NewMessages.at(i).mMessageText.toUtf8().data(); + } + qDebug("-----------------------------------------------------------------------"); + qDebug(" "); + break; + } + } + } + + + +// mCurStartDate = mSMSMessagesList.last().mDateTime.date(); +// static bool DateClipped = false;; +// //if(NBMsgReceived == VOIP_MS_SMS_MAX_COUNT) +// qDebug("Received %d msgs. mCurStartDate:%s", NBMsgReceived,mCurStartDate.toString("yyyy-MM-dd").toUtf8().data()); +// if(mCurStartDate > mVOIPMsSettings.mStartDate && DateClipped == false) +// { +// //Restart at the last day received... +// mCurStartDate = mSMSMessagesList.last().mDateTime.date(); +// QDate EarlierDate = mCurStartDate.addDays(-VOIP_MS_SMS_DATESPAN); +// if(EarlierDate < mVOIPMsSettings.mStartDate ) +// { +// //Clipping span. +// qDebug("Clipping span..."); +// EarlierDate = mVOIPMsSettings.mStartDate; +// DateClipped = true; +// } +// qDebug("Continue receiving from %s to %s ...",mCurStartDate.toString("yyyy-MM-dd").toUtf8().data(),EarlierDate.toString("yyyy-MM-dd").toUtf8().data()); +// SendSMSDownloadRequest(EarlierDate,mCurStartDate); +// } +// else if (/*(mCurStartDate == mVOIPMsSettings.mStartDate) &&*/ (NBMsgReceived == VOIP_MS_SMS_MAX_COUNT)) +// { +// //We have covered the entire time span but we didn't get all of the messages... +// SendSMSDownloadRequest(mCurStartDate,mCurStartDate);//download for the first day of the span only... +// } +// else +// { + +// if(mFirstDownloadDone == false) +// { // qDebug() << "Finished download of " << mSMSMessagesList.size() << " SMS messages"; // qDebug("-----------------------------------------------------------------------"); // qDebug(" "); @@ -392,19 +522,20 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) // qDebug(" "); - mFirstDownloadDone = true; -// mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT); - StartSMSCheckTimer(); - qDebug("Timer started"); - } +// mFirstDownloadDone = true; +// DateClipped = false; +//// mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT); +// StartSMSCheckTimer(); +// qDebug("Timer started"); +// } - } - } - else - { - qDebug("No SMS to download in this period."); - StartSMSCheckTimer(); - } +// } +// } +// else +// { +// qDebug("No SMS to download in this period."); +// StartSMSCheckTimer(); +// } return RET_OK; } @@ -514,16 +645,18 @@ QString CVoipMsSMSClient::GetDefaultDID() void CVoipMsSMSClient::StartSMSCheckTimer() { - if(mFirstDownloadDone == true) + if(mSMSDownloadState == VOIPMS_SMS_GET_NEW_MSGS_STATE) { - //qDebug("Timer started"); mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT); } + else + { + qDebug("Trying to start SMS timer outside VOIPMS_SMS_GET_NEW_MSGS_STATE"); + } } void CVoipMsSMSClient::StopSMSCheckTimer() { - //qDebug("Timer Stopped"); mCheckNewSMSTimer->stop(); } diff --git a/Sources/VoipSMS/VoipMsSMSClient.h b/Sources/VoipSMS/VoipMsSMSClient.h index 36d049a..1303ab2 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.h +++ b/Sources/VoipSMS/VoipMsSMSClient.h @@ -26,6 +26,14 @@ enum VoipMSRetValues VOIPMS_RET_NO_DID_FOUND }; +enum eVoipMSSMSDownloadStates +{ + VOIPMS_SMS_DOWNLOAD_INIT_STATE, + VOIPMS_SMS_DOWNLOAD_SPAN_MSGS_STATE, + VOIPMS_SMS_DOWNLOAD_LAST_BLOCK_MSGS_STATE, + VOIPMS_SMS_GET_NEW_MSGS_STATE +}; + class CMasterCtrl; class CVoipMsSMSClient : public QObject @@ -77,10 +85,11 @@ private: QTcpSocket *mClientConnection; QTimer *mCheckNewSMSTimer; - bool mFirstDownloadDone; + // bool mFirstDownloadDone; QString mLastRequestCmd; QList mPendingSMSSendList; + int mSMSDownloadState; signals: