dev
This commit is contained in:
parent
f4fc549a8a
commit
8f5a0f68ff
@ -55,6 +55,8 @@ void CMasterCtrl::Start()
|
||||
mNetworkDevicesManager->mProgramHandle = this;
|
||||
mEthernetNetworkServer->mDevicesMgrHandle = mNetworkDevicesManager;
|
||||
mEthernetNetworkServer->mProgramHandle = this;
|
||||
mVoipMsSMSClient->mProgramHandle = this;
|
||||
|
||||
connect(mVoipMsSMSClient,SIGNAL(DIDSFetched(QStringList)),mSettingsWindow,SLOT(DIDsListFetched(QStringList)));
|
||||
|
||||
mAVReceiverDevice->ConnectToReceiver();
|
||||
@ -106,3 +108,9 @@ unsigned int CMasterCtrl::SettingsWindowClosed()
|
||||
mVoipMsSMSClient->DownloadSMSFromServer();
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CMasterCtrl::NewSMSMessagesArrived(QList<CSMSMessage> NewMessages)
|
||||
{
|
||||
mNetworkDevicesManager->NewSMSMessagesReceived(NewMessages);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
@ -40,6 +40,8 @@ public:
|
||||
|
||||
unsigned int SettingsWindowClosed();
|
||||
|
||||
int NewSMSMessagesArrived(QList<CSMSMessage> NewMessages);
|
||||
|
||||
|
||||
//Modules requests...
|
||||
|
||||
|
||||
@ -84,3 +84,15 @@ CNetworkDevice* CNetworkDevicesMgr::GetDevice(int DeviceID, int Address)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CNetworkDevicesMgr::NewSMSMessagesReceived(QList<CSMSMessage> NewMessages)
|
||||
{
|
||||
for(int i = 0; i < mNetworkDevicesList.size(); i++)
|
||||
{
|
||||
if(mNetworkDevicesList.at(i)->GetDeviceID() == ID_SMS_CLIENT)
|
||||
{
|
||||
CSMSDevice *SMSDevice = (CSMSDevice*)mNetworkDevicesList.at(i);
|
||||
SMSDevice->SendNewSMSReceived(NewMessages);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,8 @@ public:
|
||||
CVoipMsSMSClient *mVoipMSInterfaceHandle;
|
||||
CMasterCtrl *mProgramHandle;
|
||||
|
||||
int NewSMSMessagesReceived(QList<CSMSMessage> NewMessages);
|
||||
|
||||
private:
|
||||
|
||||
QList<CNetworkDevice*> mNetworkDevicesList;
|
||||
|
||||
@ -122,13 +122,15 @@ enum IR_REMOTE_CMDS
|
||||
enum SMS_CLIENT_CMDS
|
||||
{
|
||||
SMS_CLIENT_DEVICE_ACK = 1,
|
||||
SMS_CLIENT_DEVICE_STATUS_REQUEST,
|
||||
SMS_CLIENT_DEVICE_STATUS_REQUEST, //2
|
||||
SMS_CLIENT_DEVICE_STATUS_RESPONSE,
|
||||
SMS_CLIENT_DEVICE_DID_INFO_REQUEST,
|
||||
SMS_CLIENT_DEVICE_DID_INFO_REQUEST, //4
|
||||
SMS_CLIENT_DEVICE_DID_INFO_RESPONSE,
|
||||
SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST,
|
||||
SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST, //6
|
||||
SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE,
|
||||
SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION,
|
||||
SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION, //8
|
||||
SMS_CLIENT_DEVICE_SEND_SMS_REQUEST,
|
||||
SMS_CLIENT_DEVICE_SEND_SMS_ACK, //10
|
||||
|
||||
SMS_CLIENT_DEVICE_MAX_MSG
|
||||
|
||||
|
||||
@ -80,8 +80,40 @@ int CSMSDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int Mess
|
||||
|
||||
FrameBuffer.seek(0);
|
||||
mNetworkInterfacePtr->SendNetworkMessage(mDeviceID,mDeviceAddress,SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE,FrameData.size(),FrameData);
|
||||
|
||||
FrameBuffer.close();
|
||||
delete FrameDataStrm;
|
||||
|
||||
break;
|
||||
}
|
||||
case SMS_CLIENT_DEVICE_SEND_SMS_REQUEST:
|
||||
{
|
||||
// QBuffer FrameBuffer(&Data);
|
||||
// FrameBuffer.open(QIODevice::ReadWrite);
|
||||
QDataStream *FrameDataStrm = new QDataStream(Data);
|
||||
|
||||
qint32 NbMsgs;
|
||||
*FrameDataStrm >> NbMsgs;
|
||||
if(NbMsgs > 0)
|
||||
{
|
||||
|
||||
QList<CSMSMessage> SMSList;
|
||||
for(int i = 0; i < NbMsgs; i++)
|
||||
{
|
||||
CSMSMessage NewMessage;
|
||||
*FrameDataStrm >> NewMessage;
|
||||
SMSList.append(NewMessage);
|
||||
}
|
||||
mVoipMsInterfaceHandle->SendSMS(&SMSList);
|
||||
|
||||
}
|
||||
|
||||
// FrameBuffer.close();
|
||||
delete FrameDataStrm;
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
case SMS_CLIENT_DEVICE_STATUS_REQUEST:
|
||||
case SMS_CLIENT_DEVICE_DID_INFO_RESPONSE:
|
||||
case SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION:
|
||||
@ -104,6 +136,48 @@ void CSMSDevice::RequestStatus()
|
||||
mNetworkInterfacePtr->SendNetworkMessage(mDeviceID,mDeviceAddress,SMS_CLIENT_DEVICE_STATUS_REQUEST,0,QByteArray());
|
||||
}
|
||||
|
||||
void CSMSDevice::SendSMSSentAck(bool Ack)
|
||||
{
|
||||
QByteArray FrameData;
|
||||
QBuffer FrameBuffer(&FrameData);
|
||||
FrameBuffer.open(QIODevice::ReadWrite);
|
||||
QDataStream *FrameDataStrm = new QDataStream(&FrameBuffer);
|
||||
|
||||
qint32 ACKData = 0;
|
||||
if(Ack)
|
||||
{
|
||||
ACKData = 1;
|
||||
}
|
||||
*FrameDataStrm << ACKData;
|
||||
|
||||
mNetworkInterfacePtr->SendNetworkMessage(mDeviceID,mDeviceAddress,SMS_CLIENT_DEVICE_SEND_SMS_ACK,FrameData.size(),FrameData);
|
||||
|
||||
|
||||
FrameBuffer.close();
|
||||
delete FrameDataStrm;
|
||||
}
|
||||
|
||||
void CSMSDevice::SendNewSMSReceived(QList<CSMSMessage> NewMessages)
|
||||
{
|
||||
QByteArray FrameData;
|
||||
QBuffer FrameBuffer(&FrameData);
|
||||
FrameBuffer.open(QIODevice::ReadWrite);
|
||||
QDataStream *FrameDataStrm = new QDataStream(&FrameBuffer);
|
||||
|
||||
// QList<CSMSMessage> *SMSList = mVoipMsInterfaceHandle->GetSMSList();
|
||||
*FrameDataStrm << NewMessages.size();
|
||||
for(int i = 0; i < NewMessages.size(); i++)
|
||||
{
|
||||
*FrameDataStrm << NewMessages.at(i);
|
||||
}
|
||||
|
||||
FrameBuffer.seek(0);
|
||||
mNetworkInterfacePtr->SendNetworkMessage(mDeviceID,mDeviceAddress,SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION,FrameData.size(),FrameData);
|
||||
|
||||
FrameBuffer.close();
|
||||
delete FrameDataStrm;
|
||||
}
|
||||
|
||||
void CSMSDevice::StatusReqTimerExpired()
|
||||
{
|
||||
if(++mStatusRequestsCount > 3)
|
||||
|
||||
@ -21,8 +21,11 @@ public:
|
||||
QTimer *mStatusRequestTimer;
|
||||
int mStatusRequestsCount;
|
||||
|
||||
void SendNewSMSReceived(QList<CSMSMessage> NewMessages);
|
||||
|
||||
private:
|
||||
void RequestStatus();
|
||||
void SendSMSSentAck(bool Ack);
|
||||
public slots:
|
||||
void StatusReqTimerExpired();
|
||||
|
||||
|
||||
@ -5,7 +5,12 @@
|
||||
|
||||
CSMSMessage::CSMSMessage()
|
||||
{
|
||||
|
||||
this->mContact = "INVALID";
|
||||
this->mDateTime = QDateTime::currentDateTime();
|
||||
this->mDID = "INVALID";
|
||||
this->mMessageText = "INVALID";
|
||||
this->mType = SMS_INVALID_TYPE;
|
||||
this->mVOIPMSDatabaseID = "INVALID";
|
||||
}
|
||||
|
||||
QDataStream &operator<<(QDataStream &out, const CSMSMessage &source)
|
||||
|
||||
@ -8,7 +8,8 @@
|
||||
typedef enum eSMSType
|
||||
{
|
||||
SMS_SENT_TYPE,
|
||||
SMS_RECEIVED_TYPE
|
||||
SMS_RECEIVED_TYPE,
|
||||
SMS_INVALID_TYPE
|
||||
}SmsType_t;
|
||||
|
||||
class CSMSMessage
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
#include <QJsonObject>
|
||||
#include <QDateTime>
|
||||
#include <QStringList>
|
||||
#include "MasterCtrl.h"
|
||||
|
||||
CVoipMsSMSClient::CVoipMsSMSClient()
|
||||
{
|
||||
@ -21,6 +22,8 @@ CVoipMsSMSClient::CVoipMsSMSClient()
|
||||
|
||||
mFirstDownloadDone = false;
|
||||
|
||||
mProgramHandle = 0;
|
||||
|
||||
}
|
||||
|
||||
CVoipMsSMSClient::~CVoipMsSMSClient()
|
||||
@ -60,6 +63,8 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate)
|
||||
|
||||
// Url = "https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getSMS&from=2015-11-01&to=2015-11-11&did=5143606463&limit=50";
|
||||
|
||||
StopSMSCheckTimer();
|
||||
|
||||
UrlStream << VOIP_MS_API_URL
|
||||
<< "api_username=" << mVOIPMsSettings.mUsername << "&"
|
||||
<< "api_password=" << mVOIPMsSettings.mPassword << "&"
|
||||
@ -70,9 +75,55 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate)
|
||||
<< "limit=" << VOIP_MS_SMS_MAX_COUNT;
|
||||
|
||||
// qDebug() << "Cmd: " << Url;
|
||||
|
||||
mVOIPMSSocket->get(QNetworkRequest(Url));
|
||||
mCurStartDate = EndDate;
|
||||
|
||||
mLastRequestCmd = "getSMS";
|
||||
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CVoipMsSMSClient::SendSMS(QList<CSMSMessage> *SMSList)
|
||||
{
|
||||
|
||||
if(SMSList->size() == 0)
|
||||
{
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
SendSMS(SMSList->at(0));
|
||||
|
||||
if(SMSList->size() > 1)
|
||||
{
|
||||
for(int i = 1; i < SMSList->size(); i++)
|
||||
{
|
||||
mPendingSMSSendList.append(SMSList->at(i));
|
||||
}
|
||||
}
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CVoipMsSMSClient::SendSMS(CSMSMessage Message)
|
||||
{
|
||||
QString Url;
|
||||
Url.clear();
|
||||
QTextStream UrlStream(&Url);
|
||||
|
||||
StopSMSCheckTimer();
|
||||
UrlStream << VOIP_MS_API_URL
|
||||
<< "api_username=" << mVOIPMsSettings.mUsername << "&"
|
||||
<< "api_password=" << mVOIPMsSettings.mPassword << "&"
|
||||
<< "method=" << "sendSMS" << "&"
|
||||
<< "did=" << Message.mDID << "&"
|
||||
<< "dst=" << Message.mContact << "&"
|
||||
<< "message=" << Message.mMessageText;
|
||||
|
||||
qDebug() << "Sending SMS Msg : " << Url;
|
||||
mVOIPMSSocket->get(QNetworkRequest(Url));
|
||||
mLastRequestCmd = "sendSMS";
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
@ -90,6 +141,7 @@ int CVoipMsSMSClient::CheckForNewSMS()
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
|
||||
QDate Today = QDate::currentDate();
|
||||
QDate StartDate = mSMSMessagesList.at(0).mDateTime.date();
|
||||
SendSMSDownloadRequest(StartDate,Today);
|
||||
@ -103,12 +155,15 @@ unsigned int CVoipMsSMSClient::GetDidFromUserAccount(const QString username, con
|
||||
Url.clear();
|
||||
QTextStream UrlStream(&Url);
|
||||
|
||||
StopSMSCheckTimer();
|
||||
|
||||
UrlStream << VOIP_MS_API_URL
|
||||
<< "api_username=" << username << "&"
|
||||
<< "api_password=" << Password << "&"
|
||||
<< "method=" << Method << "&";
|
||||
|
||||
mVOIPMSSocket->get(QNetworkRequest(Url));
|
||||
mLastRequestCmd = Method;
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
@ -116,22 +171,29 @@ unsigned int CVoipMsSMSClient::GetDidFromUserAccount(const QString username, con
|
||||
void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply)
|
||||
{
|
||||
QByteArray Reply = NetworkReply->readAll();
|
||||
NetworkReply->deleteLater();
|
||||
|
||||
QJsonDocument JsonReply = QJsonDocument::fromJson(Reply);
|
||||
QJsonObject JsonObject = JsonReply.object();
|
||||
QStringList Keys = JsonObject.keys();
|
||||
if(JsonObject["status"].toString() == "success")
|
||||
{
|
||||
if(Keys.contains("sms"))
|
||||
if(mLastRequestCmd == "getSMS")
|
||||
// if(Keys.contains("sms"))
|
||||
{
|
||||
QJsonArray SMSArray = JsonObject["sms"].toArray();
|
||||
SMSReceived(&SMSArray);
|
||||
}
|
||||
else if(Keys.contains("dids"))
|
||||
else if(mLastRequestCmd == "getDIDsInfo")
|
||||
// else if(Keys.contains("dids"))
|
||||
{
|
||||
QJsonArray DIDsInfoArray = JsonObject["dids"].toArray();
|
||||
DIDsInfoReceived(&DIDsInfoArray);
|
||||
}
|
||||
else if(mLastRequestCmd == "sendSMS")
|
||||
{
|
||||
SendSMSAckReceived(true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -140,7 +202,40 @@ void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply)
|
||||
{
|
||||
SMSReceived(0);
|
||||
}
|
||||
if(mLastRequestCmd == "sendSMS")
|
||||
{
|
||||
SendSMSAckReceived(false);
|
||||
}
|
||||
}
|
||||
Reply.clear();
|
||||
}
|
||||
|
||||
int CVoipMsSMSClient::SendSMSAckReceived(bool Success)
|
||||
{
|
||||
if(Success)
|
||||
{
|
||||
qDebug("SMS sent successfuly");
|
||||
if(mPendingSMSSendList.size() != 0)
|
||||
{
|
||||
CSMSMessage Msg = mPendingSMSSendList.takeFirst();
|
||||
SendSMS(Msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckForNewSMS();
|
||||
// StartSMSCheckTimer();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug("SMS send failed");
|
||||
mPendingSMSSendList.clear();
|
||||
StartSMSCheckTimer();
|
||||
}
|
||||
|
||||
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
@ -200,6 +295,8 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
}
|
||||
if(mFirstDownloadDone == true && NewMessages.size() > 0)
|
||||
{
|
||||
mProgramHandle->NewSMSMessagesArrived(NewMessages);
|
||||
|
||||
qDebug() << "Added " << NewMessages.size() << " new SMS messages";
|
||||
qDebug("-----------------------------------------------------------------------");
|
||||
qDebug(" ");
|
||||
@ -240,6 +337,8 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
mSMSMessagesList.append(NewMessages);
|
||||
if(mFirstDownloadDone == true && NewMessages.size() > 0)
|
||||
{
|
||||
mProgramHandle->NewSMSMessagesArrived(NewMessages);
|
||||
|
||||
qDebug() << "Added " << NewMessages.size() << " new SMS messages";
|
||||
qDebug("-----------------------------------------------------------------------");
|
||||
qDebug(" ");
|
||||
@ -283,7 +382,8 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
|
||||
|
||||
mFirstDownloadDone = true;
|
||||
mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT);
|
||||
// mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT);
|
||||
StartSMSCheckTimer();
|
||||
qDebug("Timer started");
|
||||
}
|
||||
|
||||
@ -327,6 +427,8 @@ unsigned int CVoipMsSMSClient::DIDsInfoReceived(QJsonArray *DIDsInfoPtr)
|
||||
emit DIDSFetched(DIDs);
|
||||
}
|
||||
|
||||
StartSMSCheckTimer();
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
@ -398,6 +500,18 @@ QString CVoipMsSMSClient::GetDefaultDID()
|
||||
return mVOIPMsSettings.mDefaultDID;
|
||||
}
|
||||
|
||||
void CVoipMsSMSClient::StartSMSCheckTimer()
|
||||
{
|
||||
if(mFirstDownloadDone == true)
|
||||
{
|
||||
mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
void CVoipMsSMSClient::StopSMSCheckTimer()
|
||||
{
|
||||
mCheckNewSMSTimer->stop();
|
||||
}
|
||||
|
||||
//https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getBalance&advanced=True
|
||||
|
||||
|
||||
@ -26,6 +26,8 @@ enum VoipMSRetValues
|
||||
VOIPMS_RET_NO_DID_FOUND
|
||||
};
|
||||
|
||||
class CMasterCtrl;
|
||||
|
||||
class CVoipMsSMSClient : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@ -40,6 +42,8 @@ public:
|
||||
|
||||
QList<CSMSMessage> mSMSMessagesList;
|
||||
|
||||
CMasterCtrl *mProgramHandle;
|
||||
|
||||
unsigned int GetDidFromUserAccount(const QString username, const QString Password);
|
||||
unsigned int SetVOIPMsSettings(CVoipMSSMSSettings *SettingsData);
|
||||
unsigned int NewSMSNotification(QString DID);
|
||||
@ -50,12 +54,20 @@ public:
|
||||
int GetSMSCount();
|
||||
QString GetDefaultDID();
|
||||
|
||||
int SendSMS(QList<CSMSMessage> *SMSList);
|
||||
int SendSMS(CSMSMessage Message);
|
||||
|
||||
|
||||
private:
|
||||
QNetworkAccessManager *mVOIPMSSocket;
|
||||
|
||||
unsigned int SMSReceived(QJsonArray *sms);
|
||||
unsigned int DIDsInfoReceived(QJsonArray *DIDsInfo);
|
||||
int SendSMSAckReceived(bool Success);
|
||||
|
||||
void StartSMSCheckTimer();
|
||||
void StopSMSCheckTimer();
|
||||
|
||||
|
||||
CVoipMSSMSSettings mVOIPMsSettings;
|
||||
|
||||
@ -66,6 +78,8 @@ private:
|
||||
QTimer *mCheckNewSMSTimer;
|
||||
|
||||
bool mFirstDownloadDone;
|
||||
QString mLastRequestCmd;
|
||||
QList<CSMSMessage> mPendingSMSSendList;
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user