From f4fc549a8a59918107b99cab6e4be64660b35f12 Mon Sep 17 00:00:00 2001 From: J-F Martel Date: Fri, 15 Jan 2016 14:43:58 -0500 Subject: [PATCH] Dev. --- MasterCtrl.pro | 8 +- Sources/232NetworkCommIF.cpp | 8 + Sources/485NetworkCommIF.cpp | 12 + Sources/AVReceiverDevice.cpp | 4 +- Sources/DeadboltDevice.cpp | 5 +- Sources/DeadboltDevice.h | 2 - Sources/EthernetNetworkCommIF.cpp | 35 +- Sources/EthernetNetworkCommIF.h | 4 +- Sources/EthernetNetworkServer.cpp | 351 +++++++++++++----- Sources/EthernetNetworkServer.h | 25 +- Sources/GlobalDefine.h | 2 + Sources/Gui/AppIconWidget.cpp | 2 + Sources/MasterCtrl.cpp | 27 ++ Sources/MasterCtrl.h | 9 +- Sources/NetworkDevice.cpp | 1 + Sources/NetworkDevice.h | 3 + Sources/NetworkDevicesMgr.cpp | 15 +- Sources/NetworkDevicesMgr.h | 5 + Sources/NetworkProtocol.cpp | 43 ++- Sources/NetworkProtocol.h | 4 +- Sources/ProtocolDefs.h | 19 +- Sources/SMSDevice.cpp | 102 ++++- Sources/SMSDevice.h | 16 +- Sources/VoipSMS/CSMSMessage.cpp | 9 - Sources/VoipSMS/SMSMessage.cpp | 38 ++ .../VoipSMS/{CSMSMessage.h => SMSMessage.h} | 3 + Sources/VoipSMS/VoipMsSMSClient.cpp | 43 ++- Sources/VoipSMS/VoipMsSMSClient.h | 7 +- Sources/main.cpp | 3 + 29 files changed, 641 insertions(+), 164 deletions(-) delete mode 100644 Sources/VoipSMS/CSMSMessage.cpp create mode 100644 Sources/VoipSMS/SMSMessage.cpp rename Sources/VoipSMS/{CSMSMessage.h => SMSMessage.h} (83%) diff --git a/MasterCtrl.pro b/MasterCtrl.pro index cb51b12..530a399 100644 --- a/MasterCtrl.pro +++ b/MasterCtrl.pro @@ -11,7 +11,6 @@ HEADERS += \ Sources/DeadboltDevice.h \ Sources/AVReceiverDevice.h \ Sources/VoipSMS/VoipMsSMSClient.h \ - Sources/VoipSMS/CSMSMessage.h \ Sources/Gui/SystemTrayManager.h \ Sources/Gui/SettingsWindow.h \ Sources/ProgramSettings.h \ @@ -21,7 +20,8 @@ HEADERS += \ Sources/NetworkDevicesMgr.h \ Sources/SMSDevice.h \ Sources/NetworkDevice.h \ - Sources/AbstractNetworkInterface.h + Sources/AbstractNetworkInterface.h \ + Sources/VoipSMS/SMSMessage.h SOURCES += \ Sources/main.cpp \ @@ -33,7 +33,6 @@ SOURCES += \ Sources/DeadboltDevice.cpp \ Sources/AVReceiverDevice.cpp \ Sources/VoipSMS/VoipMsSMSClient.cpp \ - Sources/VoipSMS/CSMSMessage.cpp \ Sources/Gui/SystemTrayManager.cpp \ Sources/Gui/SettingsWindow.cpp \ Sources/ProgramSettings.cpp \ @@ -41,7 +40,8 @@ SOURCES += \ Sources/EthernetNetworkServer.cpp \ Sources/NetworkDevicesMgr.cpp \ Sources/SMSDevice.cpp \ - Sources/NetworkDevice.cpp + Sources/NetworkDevice.cpp \ + Sources/VoipSMS/SMSMessage.cpp #win32:SOURCES += $$PWD/Source/qextserialport/win_qextserialport.cpp \ diff --git a/Sources/232NetworkCommIF.cpp b/Sources/232NetworkCommIF.cpp index 74b87ff..9441608 100644 --- a/Sources/232NetworkCommIF.cpp +++ b/Sources/232NetworkCommIF.cpp @@ -22,6 +22,8 @@ int C232NetworkCommIF::NewFrameReceived(int DeviceID, int DeviceAddress, int Mes return RET_OK; } } + + return RET_OK; } //int C232NetworkCommIF::SendNetworkMessage(unsigned char MessageID, unsigned char Flags, unsigned char *Data, int Size) @@ -32,5 +34,11 @@ int C232NetworkCommIF::NewFrameReceived(int DeviceID, int DeviceAddress, int Mes int C232NetworkCommIF::SendNetworkMessage(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) { + Q_UNUSED(DeviceID) + Q_UNUSED(DeviceAddress) + Q_UNUSED(MessageID) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + return RET_OK; } diff --git a/Sources/485NetworkCommIF.cpp b/Sources/485NetworkCommIF.cpp index b71a4a2..c9379e5 100644 --- a/Sources/485NetworkCommIF.cpp +++ b/Sources/485NetworkCommIF.cpp @@ -12,6 +12,12 @@ C485NetworkCommIF::~C485NetworkCommIF() int C485NetworkCommIF::NewFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) { + Q_UNUSED(DeviceID) + Q_UNUSED(DeviceAddress) + Q_UNUSED(MessageID) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + return RET_OK; } @@ -24,5 +30,11 @@ int C485NetworkCommIF::RegisterNewDevice(CNetworkDevice *NewDevice) int C485NetworkCommIF::SendNetworkMessage(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) { + Q_UNUSED(DeviceID) + Q_UNUSED(DeviceAddress) + Q_UNUSED(MessageID) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + return RET_OK; } diff --git a/Sources/AVReceiverDevice.cpp b/Sources/AVReceiverDevice.cpp index 4ca5984..1815063 100644 --- a/Sources/AVReceiverDevice.cpp +++ b/Sources/AVReceiverDevice.cpp @@ -370,7 +370,7 @@ int CAVReceiverDevice::AnalyseRxData(QByteArray data) QString Data(data); if(data == "\r\n") { - qDebug("AV Receiver: Heartbeat received"); + // qDebug("AV Receiver: Heartbeat received"); return RET_OK; } @@ -535,7 +535,7 @@ int CAVReceiverDevice::AnalyseRxData(QByteArray data) else if(CurCmd.contains("FL")) { CurCmd.remove("FL"); - int DisplayFlags = CurCmd.left(2).toInt(0,16); + // int DisplayFlags = CurCmd.left(2).toInt(0,16); CurCmd.remove(0,2); int StrLength = CurCmd.size()/2; QString FlString = ""; diff --git a/Sources/DeadboltDevice.cpp b/Sources/DeadboltDevice.cpp index b8e2dd4..98e789d 100644 --- a/Sources/DeadboltDevice.cpp +++ b/Sources/DeadboltDevice.cpp @@ -11,13 +11,16 @@ CDeadboltDevice::CDeadboltDevice(int Address, CAbstractNetworkCommIF *NetworkInt CDeadboltDevice::~CDeadboltDevice() { - delete mNetworkCommInterface; } int CDeadboltDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) { Q_UNUSED(DeviceID) Q_UNUSED(DeviceAddress) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + + return RET_OK; switch(MessageID) { diff --git a/Sources/DeadboltDevice.h b/Sources/DeadboltDevice.h index 89ba2ce..0c58482 100644 --- a/Sources/DeadboltDevice.h +++ b/Sources/DeadboltDevice.h @@ -14,8 +14,6 @@ public: virtual int NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data); - - CAbstractNetworkCommIF *mNetworkCommInterface; }; #endif // DEADBOLTDEVICE_H diff --git a/Sources/EthernetNetworkCommIF.cpp b/Sources/EthernetNetworkCommIF.cpp index 9d2490b..f3bcd42 100644 --- a/Sources/EthernetNetworkCommIF.cpp +++ b/Sources/EthernetNetworkCommIF.cpp @@ -1,6 +1,8 @@ #include "EthernetNetworkCommIF.h" #include "NetworkDevice.h" + + CEthernetNetworkCommIF::CEthernetNetworkCommIF(QTcpSocket *Socket) { mTCPSocket = Socket; @@ -9,20 +11,47 @@ CEthernetNetworkCommIF::CEthernetNetworkCommIF(QTcpSocket *Socket) connect(mTCPSocket,SIGNAL(readyRead()),this,SLOT(SocketDataAvailable())); } +CEthernetNetworkCommIF::~CEthernetNetworkCommIF() +{ + +} + int CEthernetNetworkCommIF::SendNetworkMessage(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) { +// Q_UNUSED(DeviceID) +// Q_UNUSED(DeviceAddress) +// Q_UNUSED(MessageID) +// Q_UNUSED(DataSize) +// Q_UNUSED(Data) + QByteArray Packet = GetTxPacket(MessageID,0,Data.data(),DataSize,DeviceAddress,DeviceID); + mTCPSocket->write(Packet); + + return RET_OK; +} + +int CEthernetNetworkCommIF::NewFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) +{ +// Q_UNUSED(DeviceID) +// Q_UNUSED(DeviceAddress) +// Q_UNUSED(MessageID) +// Q_UNUSED(DataSize) +// Q_UNUSED(Data) + + mDevicePtr->NewDeviceFrameReceived(DeviceID,DeviceAddress,MessageID,DataSize,Data); + + + return RET_OK; } void CEthernetNetworkCommIF::SocketDataAvailable() { - + AnalyzeRxBuffer(mTCPSocket->readAll()); } void CEthernetNetworkCommIF::SocketDisconnected() { - mTCPSocket->close(); - delete mTCPSocket; + // delete mTCPSocket; emit EthernetInterfaceSocketDisconnected(mDevicePtr); } diff --git a/Sources/EthernetNetworkCommIF.h b/Sources/EthernetNetworkCommIF.h index cd3cd32..dbd9b1c 100644 --- a/Sources/EthernetNetworkCommIF.h +++ b/Sources/EthernetNetworkCommIF.h @@ -21,10 +21,10 @@ public: QTcpSocket* mTCPSocket; //CNetworkCommIF implementation - virtual int SendNetworkMessage(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) = 0; + virtual int SendNetworkMessage(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data); //CNetworkProtocol implementation - virtual int NewFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) = 0; + virtual int NewFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data); public slots: void SocketDataAvailable(); diff --git a/Sources/EthernetNetworkServer.cpp b/Sources/EthernetNetworkServer.cpp index b95ecc3..ba3545b 100644 --- a/Sources/EthernetNetworkServer.cpp +++ b/Sources/EthernetNetworkServer.cpp @@ -1,75 +1,103 @@ #include "EthernetNetworkServer.h" +#include "MasterCtrl.h" +#include "EthernetNetworkCommIF.h" CEthernetNetworkServer::CEthernetNetworkServer() { + mProgramHandle = 0; + mDevicesMgrHandle = 0; SetManualPacketReset(true); +} +CEthernetNetworkServer::~CEthernetNetworkServer() +{ + CloseServer(); +} + +int CEthernetNetworkServer::StartServer(int port) +{ mEthernetNetworkServer = new QTcpServer; connect(mEthernetNetworkServer,SIGNAL(newConnection()),this,SLOT(EthernetNetworkServerConnected())); - mEthernetNetworkServer->listen(QHostAddress::Any,80); + if(mEthernetNetworkServer->listen(QHostAddress::Any,port) == true) + { + qDebug("Ethernet Network Server listening on port %d", port); + return RET_OK; + } + else + { + return RET_ERROR; + } } - -int CEthernetNetworkServer::NewFrameReceived(QByteArray Frame) +int CEthernetNetworkServer::CloseServer() { - Q_UNUSED(Frame) + mEthernetNetworkServer->close(); + // mEthernetNetworkServer->deleteLater(); + qDebug("Ethernet Network server closed"); + return RET_OK; } - void CEthernetNetworkServer::EthernetNetworkServerConnected() { qDebug("Device Connected"); QTcpSocket *EthernetDeviceSocket; EthernetDeviceSocket = mEthernetNetworkServer->nextPendingConnection(); - CEthernetDeviceConnection *NewConnection = new CEthernetDeviceConnection; - NewConnection->mConnectionSocket = EthernetDeviceSocket; - mEthernetDeviceConnections.append(NewConnection); - - connect(EthernetDeviceSocket,SIGNAL(readyRead()),this,SLOT(DeviceSocketDataAvail())); - - //request device info... - QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_DEVICE_INFO_REQUEST,0,0,0,BROADCAST_VALUE,(unsigned char)ID_ETHERNET_VIRTUAL); - EthernetDeviceSocket->write(Frame); -} - -CEthernetDeviceConnection * CEthernetNetworkServer::FindConnection(QTcpSocket *Socket) -{ - for(int i = 0; i < mEthernetDeviceConnections.size(); i++) + // CEthernetDeviceConnection *NewConnection = new CEthernetDeviceConnection; + // NewConnection->mConnectionSocket = EthernetDeviceSocket; + // mEthernetDeviceConnections.append(NewConnection); + if(EthernetDeviceSocket != 0) { - if(Socket == mEthernetDeviceConnections.at(i)->mConnectionSocket) - { - return mEthernetDeviceConnections.at(i); - } - } - return 0; + connect(EthernetDeviceSocket,SIGNAL(readyRead()),this,SLOT(DeviceSocketDataAvail())); + connect(EthernetDeviceSocket,SIGNAL(disconnected()),this,SLOT(DeviceSocketDisconnected())); + + //request device info... + QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_DEVICE_INFO_REQUEST,0,0,0,BROADCAST_VALUE,(unsigned char)ID_ETHERNET_VIRTUAL); + EthernetDeviceSocket->write(Frame); + } } -int CEthernetNetworkServer::FindConnection(CEthernetDeviceConnection* Connection) -{ - for(int i = 0; i < mEthernetDeviceConnections.size(); i++) - { - if(Connection == mEthernetDeviceConnections.at(i)) - { - return i; - } - } +//CEthernetDeviceConnection * CEthernetNetworkServer::FindConnection(QTcpSocket *Socket) +//{ +// for(int i = 0; i < mEthernetDeviceConnections.size(); i++) +// { +// if(Socket == mEthernetDeviceConnections.at(i)->mConnectionSocket) +// { +// return mEthernetDeviceConnections.at(i); +// } +// } - return -1; -} +// return 0; +//} + +//int CEthernetNetworkServer::FindConnection(CEthernetDeviceConnection* Connection) +//{ +// for(int i = 0; i < mEthernetDeviceConnections.size(); i++) +// { +// if(Connection == mEthernetDeviceConnections.at(i)) +// { +// return i; +// } +// } + +// return -1; +//} void CEthernetNetworkServer::DeviceSocketDataAvail() { QTcpSocket *DeviceSocket = (QTcpSocket*)QObject::sender(); QByteArray Packet = DeviceSocket->readAll(); - CEthernetDeviceConnection *DeviceConnection = FindConnection(DeviceSocket); + + //CEthernetDeviceConnection *DeviceConnection = FindConnection(DeviceSocket); int ret = AnalyzeRxBuffer(Packet); + + bool CloseSocket = false; // if(DeviceConnection == 0) // { @@ -85,39 +113,77 @@ void CEthernetNetworkServer::DeviceSocketDataAvail() { if(ProtocolGetCmd() == ETH_NETWK_DEVICE_INFO_RESPONSE) { + + CEthernetNetworkCommIF *NetworkIF = new CEthernetNetworkCommIF(DeviceSocket); QByteArray Data = ProtocolGetData(); char DeviceID,DeviceAddress; DeviceID = Data.at(0); DeviceAddress = Data.at(1); - if(IsDeviceRegistered(DeviceID) == true) + if(DeviceID == ID_SMS_CLIENT) { - DeviceConnection->mConnectedDevice->mDeviceID = (int)DeviceID; - DeviceConnection->mConnectedDevice->mDeviceAddress = (int)DeviceAddress; - } - else - { - qDebug("Rx device info from unregistered device"); - CloseSocket = true; + if(mDevicesMgrHandle != 0) + { + if(mDevicesMgrHandle->CreateNewSMSDevice(DeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK) + { + //All OK. + + //Redirect signals. + DeviceSocket->disconnect(); + // disconnect(DeviceSocket,SIGNAL(readyRead()),this,SLOT(DeviceSocketDataAvail())); + connect(DeviceSocket,SIGNAL(readyRead()),NetworkIF,SLOT(SocketDataAvailable())); + connect(DeviceSocket,SIGNAL(disconnected()),NetworkIF,SLOT(SocketDisconnected())); + connect(NetworkIF,SIGNAL(EthernetInterfaceSocketDisconnected(CNetworkDevice*)),mDevicesMgrHandle,SLOT(EthernetNetworkDeviceDisconnected(CNetworkDevice*))); + + //Inform device that it is connected + QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_SET_DEVICE_INFO_ACK,0,0,0,DeviceAddress,(unsigned char)ID_ETHERNET_VIRTUAL); + DeviceSocket->write(Frame); + qDebug("Created new SMS device"); + } + else + { + qDebug("Could not create SMS device in ethernet server"); + QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_CONNECTION_REFUSED,0,0,0,DeviceAddress,(unsigned char)ID_ETHERNET_VIRTUAL); + DeviceSocket->write(Frame); + CloseSocket = true; + } + } + else + { + qDebug("Invalid DevicesMgrHandle in ethernet server"); + CloseSocket = true; + } } + +// if(IsDeviceRegistered(DeviceID) == true) +// { +// DeviceConnection->mConnectedDevice->mDeviceID = (int)DeviceID; +// DeviceConnection->mConnectedDevice->mDeviceAddress = (int)DeviceAddress; +// } +// else +// { +// qDebug("Rx device info from unregistered device"); +// CloseSocket = true; +// } } } else { - if(DeviceConnection != 0) - { - DeviceConnection->mConnectedDevice->NewDeviceFrameReceived(ProtocolGetSenderID(),ProtocolGetSenderAddress(),ProtocolGetCmd(),ProtocolGetDataSize(),ProtocolGetData()); - PrepareForNewPacket(); - } - else - { - qDebug("Rx from invalid device connection pointer!"); - CloseSocket = true; - } + qDebug("Received protocol data in ethernet server"); +// if(DeviceConnection != 0) +// { +// DeviceConnection->mConnectedDevice->NewDeviceFrameReceived(ProtocolGetSenderID(),ProtocolGetSenderAddress(),ProtocolGetCmd(),ProtocolGetDataSize(),ProtocolGetData()); +// PrepareForNewPacket(); +// } +// else +// { +// qDebug("Rx from invalid device connection pointer!"); +// CloseSocket = true; +// } } - + PrepareForNewPacket(); break; } case PROTOCOL_RET_OK_PACKET_INCOMPLETE: @@ -130,36 +196,41 @@ void CEthernetNetworkServer::DeviceSocketDataAvail() } case PROTOCOL_RET_ERROR_INVALID_TARGET_DEVICE: { - qDebug("Bad target device received on Ethernet network"); + qDebug("Bad target device received on Ethernet server"); PrepareForNewPacket(); break; } case PROTOCOL_RET_ERROR_INVALID_TARGET_ADDRESS: { - qDebug("Bad target address received on Ethernet network"); + qDebug("Bad target address received on Ethernet server"); PrepareForNewPacket(); break; } case PROTOCOL_RET_ERROR_BAD_CRC: { - qDebug("Bad target CRC on Ethernet network"); + qDebug("Bad target CRC on Ethernet server"); PrepareForNewPacket(); break; } case PROTOCOL_RET_ERROR_SM_LOGIC: { - qDebug("LOGIC ERROR!!! on Ethernet network protocol"); + qDebug("LOGIC ERROR!!! on Ethernet server protocol"); PrepareForNewPacket(); break; } + case PROTOCOL_RET_ERROR_EMPTY_BUFFER: + { + qDebug("Trying to analyze an empty buffer on Ethernet server"); + PrepareForNewPacket(); + } } if(CloseSocket == true) { - if(CloseConnection(DeviceConnection) != RET_OK) + // if(CloseConnection(DeviceConnection) != RET_OK) { DeviceSocket->close(); - delete DeviceSocket; + //delete DeviceSocket; } PrepareForNewPacket(); } @@ -169,47 +240,131 @@ void CEthernetNetworkServer::DeviceSocketDataAvail() void CEthernetNetworkServer::DeviceSocketDisconnected() { - + qDebug("Socket disconnected..."); } -int CEthernetNetworkServer::CloseConnection(CEthernetDeviceConnection *Connection) +//int CEthernetNetworkServer::CloseConnection(CEthernetDeviceConnection *Connection) +//{ +// if(Connection != 0) +// { +// int index = FindConnection(Connection); +// if(index != -1) +// { +// Connection->mConnectionSocket->close(); +// mEthernetDeviceConnections.removeAt(index); +// delete Connection; +// return RET_OK; +// } +// } + +// return RET_ERROR; +//} + +//int CEthernetNetworkServer::RegisterNewDevice(CNetworkDevice *Device) +//{ +// if(IsDeviceRegistered(Device->GetDeviceID())) +// { +// qDebug("Device already registered"); +// return RET_ERROR; +// } + +// //mNetworkDevices.append(Device); +// return RET_OK; +//} + +//bool CEthernetNetworkServer::IsDeviceRegistered(int DeviceID) +//{ +// for(int i = 0; i < mNetworkDevices.size(); i++) +// { +// if(mNetworkDevices.at(i)->GetDeviceID() == DeviceID) +// { +// return true; +// } +// } + +// return true; +//} +int CEthernetNetworkServer::NewFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) { - if(Connection != 0) - { - int index = FindConnection(Connection); - if(index != -1) - { - Connection->mConnectionSocket->close(); - mEthernetDeviceConnections.removeAt(index); - delete Connection; - return RET_OK; - } - } + Q_UNUSED(DeviceAddress) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + Q_UNUSED(MessageID) + Q_UNUSED(DeviceID) - return RET_ERROR; -} +// if(DeviceID == ID_ETHERNET_VIRTUAL) +// { +// if(MessageID == ETH_NETWK_DEVICE_INFO_RESPONSE) +// { -int CEthernetNetworkServer::RegisterNewDevice(CNetworkDevice *Device) -{ - if(IsDeviceRegistered(Device->GetDeviceID())) - { - qDebug("Device already registered"); - return RET_ERROR; - } +// CEthernetNetworkCommIF *NetworkIF = new CEthernetNetworkCommIF(DeviceSocket); +// QByteArray Data = ProtocolGetData(); +// char DeviceID,DeviceAddress; + +// RemoteDeviceID = Data.at(0); +// RemoteDeviceAddress = Data.at(1); + +// if(RemoteDeviceID == ID_SMS_CLIENT) +// { +// if(mDevicesMgrHandle != 0) +// { +// if(mDevicesMgrHandle->CreateNewSMSDevice(RemoteDeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK) +// { +// //All OK. + +// //Redirect signals. +// DeviceSocket->disconnect(); +// // disconnect(DeviceSocket,SIGNAL(readyRead()),this,SLOT(DeviceSocketDataAvail())); +// connect(DeviceSocket,SIGNAL(readyRead()),NetworkIF,SLOT(SocketDataAvailable())); +// connect(DeviceSocket,SIGNAL(disconnected()),NetworkIF,SLOT(SocketDisconnected())); +// connect(NetworkIF,SIGNAL(EthernetInterfaceSocketDisconnected(CNetworkDevice*)),mDevicesMgrHandle,SLOT(EthernetNetworkDeviceDisconnected(CNetworkDevice*))); + +// //Inform device that it is connected +// QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_SET_DEVICE_INFO_ACK,0,0,0,RemoteDeviceAddress,(unsigned char)ID_ETHERNET_VIRTUAL); +// DeviceSocket->write(Frame); +// } +// else +// { +// qDebug("Could not create SMS device in ethernet server"); +// QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_CONNECTION_REFUSED,0,0,0,RemoteDeviceAddress,(unsigned char)ID_ETHERNET_VIRTUAL); +// DeviceSocket->write(Frame); +// CloseSocket = true; +// } +// } +// else +// { +// qDebug("Invalid DevicesMgrHandle in ethernet server"); +// CloseSocket = true; +// } +// } + +//// if(IsDeviceRegistered(DeviceID) == true) +//// { +//// DeviceConnection->mConnectedDevice->mDeviceID = (int)DeviceID; +//// DeviceConnection->mConnectedDevice->mDeviceAddress = (int)DeviceAddress; +//// } +//// else +//// { +//// qDebug("Rx device info from unregistered device"); +//// CloseSocket = true; +//// } +// } + +// } +// else +// { +// qDebug("Received protocol data in ethernet server"); +//// if(DeviceConnection != 0) +//// { +//// DeviceConnection->mConnectedDevice->NewDeviceFrameReceived(ProtocolGetSenderID(),ProtocolGetSenderAddress(),ProtocolGetCmd(),ProtocolGetDataSize(),ProtocolGetData()); +//// PrepareForNewPacket(); +//// } +//// else +//// { +//// qDebug("Rx from invalid device connection pointer!"); +//// CloseSocket = true; +//// } +// } - mNetworkDevices.append(Device); return RET_OK; } - -bool CEthernetNetworkServer::IsDeviceRegistered(int DeviceID) -{ - for(int i = 0; i < mNetworkDevices.size(); i++) - { - if(mNetworkDevices.at(i)->GetDeviceID() == DeviceID) - { - return true; - } - } - - return true; -} diff --git a/Sources/EthernetNetworkServer.h b/Sources/EthernetNetworkServer.h index 23a646d..866e6fc 100644 --- a/Sources/EthernetNetworkServer.h +++ b/Sources/EthernetNetworkServer.h @@ -9,6 +9,9 @@ #include #include + +class CMasterCtrl; +class CNetworkDevicesMgr; class CEthernetDeviceConnection { public: @@ -23,23 +26,31 @@ class CEthernetNetworkServer : public QObject, CNetworkProtocol Q_OBJECT public: CEthernetNetworkServer(); + ~CEthernetNetworkServer(); QTcpServer *mEthernetNetworkServer; + CMasterCtrl *mProgramHandle; + CNetworkDevicesMgr *mDevicesMgrHandle; + + //NetworkProtocol implementation + virtual int NewFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data); - QList mNetworkDevices; - QList mEthernetDeviceConnections; +// QList mNetworkDevices; +// QList mEthernetDeviceConnections; - virtual int NewFrameReceived(QByteArray Frame); - bool IsDeviceRegistered(int DeviceID); - int RegisterNewDevice(CNetworkDevice* Device); + +// bool IsDeviceRegistered(int DeviceID); +// int RegisterNewDevice(CNetworkDevice* Device); + int StartServer(int port); + int CloseServer(); private: - int FindConnection(CEthernetDeviceConnection* Connection); - CEthernetDeviceConnection *FindConnection(QTcpSocket* socket); +// int FindConnection(CEthernetDeviceConnection* Connection); +// CEthernetDeviceConnection *FindConnection(QTcpSocket* socket); int CloseConnection(CEthernetDeviceConnection *Connection); public slots: diff --git a/Sources/GlobalDefine.h b/Sources/GlobalDefine.h index 670535f..d18fa7a 100644 --- a/Sources/GlobalDefine.h +++ b/Sources/GlobalDefine.h @@ -6,4 +6,6 @@ #define RET_OK 1 #define RET_ERROR 0 +#define ETHERNET_NETWORK_STATUS_TIMEOUT 5000 + #endif // GLOBALDEFINE_H diff --git a/Sources/Gui/AppIconWidget.cpp b/Sources/Gui/AppIconWidget.cpp index 29a9ae7..3e2cdb7 100644 --- a/Sources/Gui/AppIconWidget.cpp +++ b/Sources/Gui/AppIconWidget.cpp @@ -14,6 +14,8 @@ CAppIconWidget::CAppIconWidget() void CAppIconWidget::paintEvent(QPaintEvent *event) { + Q_UNUSED(event) + QRectF Rect(100,100,100,100); QPainter Painter(this); diff --git a/Sources/MasterCtrl.cpp b/Sources/MasterCtrl.cpp index 8b079af..84373f2 100644 --- a/Sources/MasterCtrl.cpp +++ b/Sources/MasterCtrl.cpp @@ -1,6 +1,10 @@ #include "MasterCtrl.h" #include + +// #include +//#include + CMasterCtrl::CMasterCtrl() { qDebug("Creation..."); @@ -11,6 +15,10 @@ CMasterCtrl::CMasterCtrl() mSystemTrayManager->mProgramHandle = this; mSettingsWindow = new CSettingsWindow(); mSettingsWindow->mProgramHandle = this; + + mEthernetNetworkServer = new CEthernetNetworkServer; + mNetworkDevicesManager = new CNetworkDevicesMgr; + // mMasterCtrlSettings = new CSettings; } @@ -23,6 +31,8 @@ CMasterCtrl::~CMasterCtrl() delete mVoipMsSMSClient; delete mSystemTrayManager; delete mSettingsWindow; + delete mNetworkDevicesManager; + delete mEthernetNetworkServer; // delete mMasterCtrlSettings; } @@ -31,6 +41,20 @@ void CMasterCtrl::Start() qDebug("Started!"); +// QByteArray FrameData; +// QBuffer FrameBuffer(&FrameData); +// QDataStream *FrameDataStrm = new QDataStream(&FrameData,QIODevice::ReadWrite); + +// QString DID = "Salut"; +// *FrameDataStrm << DID; + +// FrameBuffer.seek(0); + + + mNetworkDevicesManager->mVoipMSInterfaceHandle = mVoipMsSMSClient; + mNetworkDevicesManager->mProgramHandle = this; + mEthernetNetworkServer->mDevicesMgrHandle = mNetworkDevicesManager; + mEthernetNetworkServer->mProgramHandle = this; connect(mVoipMsSMSClient,SIGNAL(DIDSFetched(QStringList)),mSettingsWindow,SLOT(DIDsListFetched(QStringList))); mAVReceiverDevice->ConnectToReceiver(); @@ -40,6 +64,9 @@ void CMasterCtrl::Start() mVoipMsSMSClient->SetVOIPMsSettings(&mMasterCtrlSettings.mVoipMSSettings); mVoipMsSMSClient->DownloadSMSFromServer(); + mNetworkDevicesManager->InitNetworkDevices(); + mEthernetNetworkServer->StartServer(2182); + // mAppWidget.show(); diff --git a/Sources/MasterCtrl.h b/Sources/MasterCtrl.h index a6b502c..df5acce 100644 --- a/Sources/MasterCtrl.h +++ b/Sources/MasterCtrl.h @@ -9,6 +9,7 @@ #include "SettingsWindow.h" #include "ProgramSettings.h" #include "NetworkDevicesMgr.h" +#include "EthernetNetworkServer.h" //#include "AppIconWidget.h" class CMasterCtrl : public QObject @@ -25,7 +26,8 @@ public: CSystemTrayManager *mSystemTrayManager; CSettingsWindow *mSettingsWindow; CProgramSettings mSettingsManager; - CNetworkDevicesMgr mNetworkDevicesManager; + CNetworkDevicesMgr *mNetworkDevicesManager; + CEthernetNetworkServer *mEthernetNetworkServer; // CAppIconWidget mAppWidget; @@ -39,6 +41,11 @@ public: unsigned int SettingsWindowClosed(); + //Modules requests... + + + + private: CSettings mMasterCtrlSettings; diff --git a/Sources/NetworkDevice.cpp b/Sources/NetworkDevice.cpp index bf1aaf9..c3f451d 100644 --- a/Sources/NetworkDevice.cpp +++ b/Sources/NetworkDevice.cpp @@ -6,6 +6,7 @@ CNetworkDevice::CNetworkDevice(int DeviceID, int DeviceAddress, CAbstractNetwork mDeviceAddress = DeviceAddress; mDeviceID = DeviceID; SetNetworkInterface(Interface); + mIsOnline = false; } CNetworkDevice::~CNetworkDevice() diff --git a/Sources/NetworkDevice.h b/Sources/NetworkDevice.h index 5dab383..2f32169 100644 --- a/Sources/NetworkDevice.h +++ b/Sources/NetworkDevice.h @@ -3,6 +3,8 @@ #include #include "AbstractNetworkInterface.h" + + class CNetworkDevice { public: @@ -15,6 +17,7 @@ public: int mDeviceID; int mDeviceAddress; + bool mIsOnline; CAbstractNetworkCommIF *mNetworkInterfacePtr; }; diff --git a/Sources/NetworkDevicesMgr.cpp b/Sources/NetworkDevicesMgr.cpp index 3c5ce4c..c180fb8 100644 --- a/Sources/NetworkDevicesMgr.cpp +++ b/Sources/NetworkDevicesMgr.cpp @@ -2,12 +2,14 @@ #include "232NetworkCommIF.h" #include "485NetworkCommIF.h" #include "EthernetNetworkCommIF.h" +#include "MasterCtrl.h" CNetworkDevicesMgr::CNetworkDevicesMgr() { - + mVoipMSInterfaceHandle = 0; + mProgramHandle = 0; } CNetworkDevicesMgr::~CNetworkDevicesMgr() @@ -31,9 +33,15 @@ int CNetworkDevicesMgr::InitNetworkDevices() int CNetworkDevicesMgr::CreateNewSMSDevice(int Address, CAbstractNetworkCommIF *NetworkIF) { - CSMSDevice *SMSDevice = new CSMSDevice(Address,NetworkIF); + if(mVoipMSInterfaceHandle == 0) + { + return RET_ERROR; + } - mNetworkDevicesList.append(SMSDevice); + + CSMSDevice *SMSDevice = new CSMSDevice(Address,NetworkIF,mVoipMSInterfaceHandle); + + mNetworkDevicesList.append((CNetworkDevice*)SMSDevice); return RET_OK; @@ -41,6 +49,7 @@ int CNetworkDevicesMgr::CreateNewSMSDevice(int Address, CAbstractNetworkCommIF * void CNetworkDevicesMgr::EthernetNetworkDeviceDisconnected(CNetworkDevice *Device) { + qDebug("Device disconnected. ID: %d, Address: %d",Device->GetDeviceID(),Device->GetDeviceAddress()); int index = FindDeviceByPtr(Device); if(index != -1) { diff --git a/Sources/NetworkDevicesMgr.h b/Sources/NetworkDevicesMgr.h index 6da5951..d7275df 100644 --- a/Sources/NetworkDevicesMgr.h +++ b/Sources/NetworkDevicesMgr.h @@ -8,6 +8,8 @@ #include "QList" #include +class CVoipMsSMSClient; +class CMasterCtrl; class CNetworkDevicesMgr: public QObject { Q_OBJECT @@ -23,6 +25,9 @@ public: int FindDeviceByPtr(CNetworkDevice *Device); CNetworkDevice *GetDevice(int DeviceID, int Address); + CVoipMsSMSClient *mVoipMSInterfaceHandle; + CMasterCtrl *mProgramHandle; + private: QList mNetworkDevicesList; diff --git a/Sources/NetworkProtocol.cpp b/Sources/NetworkProtocol.cpp index 563fbaf..71ba87a 100644 --- a/Sources/NetworkProtocol.cpp +++ b/Sources/NetworkProtocol.cpp @@ -38,7 +38,7 @@ QByteArray CNetworkProtocol::GetTxPacket(unsigned char MessageID, unsigned char QByteArray Frame; Frame.clear(); - int FrameSize = Size + 9; //Add header data... + int FrameSize = Size + 11; //Add header data... Frame.append(FRAME_HEADER); //header Frame.append(SenderAddress); //Device address (default = MasterCtrl) @@ -47,8 +47,10 @@ QByteArray CNetworkProtocol::GetTxPacket(unsigned char MessageID, unsigned char Frame.append(Address); //Destination Address Frame.append(Flags); Frame.append(MessageID); //Cmd - Frame.append(((FrameSize - 9) & 0xFF00) >> 8); - Frame.append((FrameSize - 9) & 0x00FF); + Frame.append((Size & 0xFF000000) >> 24); + Frame.append((Size & 0x00FF0000) >> 16); + Frame.append((Size & 0x0000FF00) >> 8); + Frame.append(Size & 0x000000FF); Frame.append(Data,Size); char CRC = CalcCRC(Frame.data(),FrameSize); Frame.append(CRC); @@ -193,7 +195,7 @@ int CNetworkProtocol::RxStateMachine(unsigned char Data) case RxMyID: { - if(Data != ID_PC && Data != 0xFF) //Message is not for a console and it's not a broadcast + if(Data != ID_MASTER && Data != 0xFF) //Message is not for Master and it's not a broadcast { ResetRxStateMachine(); ret = PROTOCOL_RET_ERROR_INVALID_TARGET_DEVICE; @@ -247,8 +249,29 @@ int CNetworkProtocol::RxStateMachine(unsigned char Data) CRC ^= Data; break; } - - case RxSize2: //Data size LSB + case RxSize2: //Data size MSB + { + RxSize |= (unsigned int)Data; + RxSize <<= 8; + mRxData[BufPtr++] = Data; + + + RxState = RxSize3; + CRC ^= Data; + break; + } + case RxSize3: //Data size MSB + { + RxSize |= (unsigned int)Data; + RxSize <<= 8; + mRxData[BufPtr++] = Data; + + + RxState = RxSize4; + CRC ^= Data; + break; + } + case RxSize4: //Data size LSB { RxSize |= (unsigned int)Data; mRxData[BufPtr++] = Data; @@ -261,9 +284,11 @@ int CNetworkProtocol::RxStateMachine(unsigned char Data) CRC ^= Data; break; } + case RxData: { - mRxData[BufPtr++] = Data; + //mRxData[BufPtr++] = Data; + mDataBuffer.append(Data); CRC ^= Data; DataCnt++; @@ -282,10 +307,10 @@ int CNetworkProtocol::RxStateMachine(unsigned char Data) break; } - mDataBuffer = QByteArray(&mRxData[DATA_START],RxSize); + // mDataBuffer = QByteArray(&mRxData[DATA_START],RxSize); NewFrameReceived(SenderID,SenderAddress,RxCmd,RxSize,mDataBuffer); ret = PROTOCOL_RET_OK_PACKET_COMPLETE; - if(mIsResetManual) + if(mIsResetManual == false) { ResetRxStateMachine(); } diff --git a/Sources/NetworkProtocol.h b/Sources/NetworkProtocol.h index 037c3b8..8e1858f 100644 --- a/Sources/NetworkProtocol.h +++ b/Sources/NetworkProtocol.h @@ -59,6 +59,8 @@ private: RxCMD, RxSize1, RxSize2, + RxSize3, + RxSize4, RxData, RxCRC }; @@ -67,7 +69,7 @@ private: char *RxBuff; - char mRxData[MAX_MESSAGE_SIZE+10]; + char mRxData[MAX_MESSAGE_SIZE]; int RxState; int RxSize; diff --git a/Sources/ProtocolDefs.h b/Sources/ProtocolDefs.h index 21080b0..6d55bdc 100644 --- a/Sources/ProtocolDefs.h +++ b/Sources/ProtocolDefs.h @@ -20,7 +20,7 @@ jean-francois.martel@polymtl.ca #define MAX_MESSAGE_SIZE 0xFFFF #define FRAME_HEADER 0x8A -#define DATA_START 0x09 +#define DATA_START 11 #define ACK 0xA3; #define NAK 0x90; #define BROADCAST_VALUE 0xFF @@ -36,6 +36,8 @@ enum eFrameIndex FRAME_COMMAND_INDEX, FRAME_SIZE1_INDEX, FRAME_SIZE2_INDEX, + FRAME_SIZE3_INDEX, + FRAME_SIZE4_INDEX, FRAME_DATA_INDEX }; @@ -119,12 +121,22 @@ enum IR_REMOTE_CMDS enum SMS_CLIENT_CMDS { + SMS_CLIENT_DEVICE_ACK = 1, + SMS_CLIENT_DEVICE_STATUS_REQUEST, + SMS_CLIENT_DEVICE_STATUS_RESPONSE, + SMS_CLIENT_DEVICE_DID_INFO_REQUEST, + SMS_CLIENT_DEVICE_DID_INFO_RESPONSE, + SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST, + SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE, + SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION, + + SMS_CLIENT_DEVICE_MAX_MSG }; enum DEADBOLT_CMDS { - DEADBOLT_DEVICE_ACK, + DEADBOLT_DEVICE_ACK = 1, DEADBOLT_DEVICE_STATUS_REQUEST, DEADBOLT_DEVICE_STATUS_RESPONSE, @@ -133,9 +145,10 @@ enum DEADBOLT_CMDS enum ETHERNET_NETWORK_VIRTUAL_CMDS { - ETH_NETWK_DEVICE_INFO_REQUEST = 0xD000, + ETH_NETWK_DEVICE_INFO_REQUEST = 0xD0, ETH_NETWK_DEVICE_INFO_RESPONSE, ETH_NETWK_SET_DEVICE_INFO_ACK, + ETH_NETWK_CONNECTION_REFUSED, MAX_ETHERNET_NETWORK_VIRTUAL_CMDS diff --git a/Sources/SMSDevice.cpp b/Sources/SMSDevice.cpp index 2e84178..1430d56 100644 --- a/Sources/SMSDevice.cpp +++ b/Sources/SMSDevice.cpp @@ -1,18 +1,116 @@ #include "SMSDevice.h" #include "ProtocolDefs.h" +#include -CSMSDevice::CSMSDevice(int Address, CAbstractNetworkCommIF *NetworkInterface): +CSMSDevice::CSMSDevice(int Address, CAbstractNetworkCommIF *NetworkInterface, CVoipMsSMSClient *VoipMsIFPtr): CNetworkDevice(ID_SMS_CLIENT,Address,NetworkInterface) { + mStatusRequestsCount = 0; + mVoipMsInterfaceHandle = VoipMsIFPtr; + mStatusRequestTimer = new QTimer; + mStatusRequestTimer->setInterval(ETHERNET_NETWORK_STATUS_TIMEOUT); + mStatusRequestTimer->setSingleShot(true); + connect(mStatusRequestTimer,SIGNAL(timeout()),this,SLOT(StatusReqTimerExpired())); + // mStatusRequestTimer->start(); } CSMSDevice::~CSMSDevice() { - + delete mStatusRequestTimer; } int CSMSDevice::NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data) { + + Q_UNUSED(DeviceID) +// Q_UNUSED(DeviceAddress) +// Q_UNUSED(MessageID) + Q_UNUSED(DataSize) + Q_UNUSED(Data) + + + mStatusRequestTimer->stop(); + + if(DeviceAddress != GetDeviceAddress()) + { + return RET_ERROR; + } + + switch(MessageID) + { + case SMS_CLIENT_DEVICE_ACK: + { + break; + } + case SMS_CLIENT_DEVICE_STATUS_RESPONSE: + { + break; + } + case SMS_CLIENT_DEVICE_DID_INFO_REQUEST: + { + QByteArray FrameData; + QBuffer FrameBuffer(&FrameData); + FrameBuffer.open(QIODevice::ReadWrite); + QDataStream *FrameDataStrm = new QDataStream(&FrameBuffer); + // QDataStream *FrameDataStrm = new QDataStream(&FrameData,QIODevice::ReadWrite); + + QString DID = mVoipMsInterfaceHandle->GetDefaultDID(); + *FrameDataStrm << DID; + + FrameBuffer.seek(0); + mNetworkInterfacePtr->SendNetworkMessage(mDeviceID,mDeviceAddress,SMS_CLIENT_DEVICE_DID_INFO_RESPONSE,FrameData.size(),FrameData); + delete FrameDataStrm; + + break; + } + case SMS_CLIENT_DEVICE_GET_ALL_MSG_REQUEST: + { + QByteArray FrameData; + QBuffer FrameBuffer(&FrameData); + FrameBuffer.open(QIODevice::ReadWrite); + QDataStream *FrameDataStrm = new QDataStream(&FrameBuffer); + + QList *SMSList = mVoipMsInterfaceHandle->GetSMSList(); + *FrameDataStrm << SMSList->size(); + for(int i = 0; i < SMSList->size(); i++) + { + *FrameDataStrm << SMSList->at(i); + } + + FrameBuffer.seek(0); + mNetworkInterfacePtr->SendNetworkMessage(mDeviceID,mDeviceAddress,SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE,FrameData.size(),FrameData); + break; + } + case SMS_CLIENT_DEVICE_STATUS_REQUEST: + case SMS_CLIENT_DEVICE_DID_INFO_RESPONSE: + case SMS_CLIENT_DEVICE_NEW_MSG_NOTIFICATION: + case SMS_CLIENT_DEVICE_GET_ALL_MSG_RESPONSE: + default: + { + qDebug("SMSDevice Rx invalid MSG %d",MessageID); + break; + } + + } + mIsOnline = true; + mStatusRequestTimer->start(); + mStatusRequestsCount = 0; return RET_OK; } + +void CSMSDevice::RequestStatus() +{ + mNetworkInterfacePtr->SendNetworkMessage(mDeviceID,mDeviceAddress,SMS_CLIENT_DEVICE_STATUS_REQUEST,0,QByteArray()); +} + +void CSMSDevice::StatusReqTimerExpired() +{ + if(++mStatusRequestsCount > 3) + { + mIsOnline = false; + qDebug("SMS Device offline,Address: %d",mDeviceAddress); + } + // RequestStatus(); + mStatusRequestTimer->start(); +} diff --git a/Sources/SMSDevice.h b/Sources/SMSDevice.h index 6855105..3282124 100644 --- a/Sources/SMSDevice.h +++ b/Sources/SMSDevice.h @@ -3,17 +3,29 @@ #include "GlobalDefine.h" #include "NetworkDevice.h" +#include "VoipMsSMSClient.h" +#include -class CSMSDevice: public CNetworkDevice +class CSMSDevice: public QObject, CNetworkDevice { + Q_OBJECT public: - CSMSDevice(int Address, CAbstractNetworkCommIF *NetworkInterface); + CSMSDevice(int Address, CAbstractNetworkCommIF *NetworkInterface, CVoipMsSMSClient *VoipMsIFPtr); virtual ~CSMSDevice(); //CAbstractNetworkDevice implementation virtual int NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data); + CVoipMsSMSClient *mVoipMsInterfaceHandle; + QTimer *mStatusRequestTimer; + int mStatusRequestsCount; + +private: + void RequestStatus(); +public slots: + void StatusReqTimerExpired(); + }; #endif // CSMSDEVICE_H diff --git a/Sources/VoipSMS/CSMSMessage.cpp b/Sources/VoipSMS/CSMSMessage.cpp deleted file mode 100644 index 9d045ca..0000000 --- a/Sources/VoipSMS/CSMSMessage.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "CSMSMessage.h" - - - -CSMSMessage::CSMSMessage() -{ - -} - diff --git a/Sources/VoipSMS/SMSMessage.cpp b/Sources/VoipSMS/SMSMessage.cpp new file mode 100644 index 0000000..ee12009 --- /dev/null +++ b/Sources/VoipSMS/SMSMessage.cpp @@ -0,0 +1,38 @@ +#include "SMSMessage.h" +#include + + + +CSMSMessage::CSMSMessage() +{ + +} + +QDataStream &operator<<(QDataStream &out, const CSMSMessage &source) +{ + + out << source.mDID + << source.mDateTime + << source.mMessageText + << source.mContact + << (qint32)source.mType + << source.mVOIPMSDatabaseID; + + + return out; +} + +QDataStream &operator>>(QDataStream &in, CSMSMessage &dest) +{ + qint32 temp; + in >> dest.mDID + >> dest.mDateTime + >> dest.mMessageText + >> dest.mContact + >> temp + >> dest.mVOIPMSDatabaseID; + + dest.mType = (eSMSType)temp; + + return in; +} diff --git a/Sources/VoipSMS/CSMSMessage.h b/Sources/VoipSMS/SMSMessage.h similarity index 83% rename from Sources/VoipSMS/CSMSMessage.h rename to Sources/VoipSMS/SMSMessage.h index 8c39a5b..33a49f8 100644 --- a/Sources/VoipSMS/CSMSMessage.h +++ b/Sources/VoipSMS/SMSMessage.h @@ -33,4 +33,7 @@ public: }; +QDataStream &operator<<(QDataStream &out, const CSMSMessage &source); +QDataStream &operator>>(QDataStream &in, CSMSMessage &dest); + #endif // CSMSOBJECT_H diff --git a/Sources/VoipSMS/VoipMsSMSClient.cpp b/Sources/VoipSMS/VoipMsSMSClient.cpp index 85b54ad..80ed4d7 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.cpp +++ b/Sources/VoipSMS/VoipMsSMSClient.cpp @@ -56,7 +56,7 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate) Url.clear(); QTextStream UrlStream(&Url); - qDebug() << "Sending request for dates from: " << StartDate.toString("yyyy-MM-dd") << " to: " << EndDate.toString("yyyy-MM-dd"); + // qDebug() << "Sending request for dates from: " << StartDate.toString("yyyy-MM-dd") << " to: " << EndDate.toString("yyyy-MM-dd"); // 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"; @@ -69,7 +69,7 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate) << "did=" << mVOIPMsSettings.mDefaultDID << "&" << "limit=" << VOIP_MS_SMS_MAX_COUNT; - qDebug() << "Cmd: " << Url; +// qDebug() << "Cmd: " << Url; mVOIPMSSocket->get(QNetworkRequest(Url)); mCurStartDate = EndDate; @@ -166,7 +166,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) } NBMsgReceived = NewMessages.size(); - qDebug() << "Received " << NBMsgReceived << "messages"; + // qDebug() << "Received " << NBMsgReceived << "messages"; if(mSMSMessagesList.size() >0 && NewMessages.size() > 0) @@ -198,7 +198,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) finished = true; } } - if(mFirstDownloadDone == true) + if(mFirstDownloadDone == true && NewMessages.size() > 0) { qDebug() << "Added " << NewMessages.size() << " new SMS messages"; qDebug("-----------------------------------------------------------------------"); @@ -238,7 +238,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) } } mSMSMessagesList.append(NewMessages); - if(mFirstDownloadDone == true) + if(mFirstDownloadDone == true && NewMessages.size() > 0) { qDebug() << "Added " << NewMessages.size() << " new SMS messages"; qDebug("-----------------------------------------------------------------------"); @@ -271,15 +271,15 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) { if(mFirstDownloadDone == false) { - 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(" "); +// 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(" "); mFirstDownloadDone = true; @@ -383,6 +383,21 @@ void CVoipMsSMSClient::CheckNewSMSTimerExpired() CheckForNewSMS(); } +QList *CVoipMsSMSClient::GetSMSList() +{ + return &mSMSMessagesList; +} + +int CVoipMsSMSClient::GetSMSCount() +{ + return mSMSMessagesList.size(); +} + +QString CVoipMsSMSClient::GetDefaultDID() +{ + return mVOIPMsSettings.mDefaultDID; +} + //https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getBalance&advanced=True diff --git a/Sources/VoipSMS/VoipMsSMSClient.h b/Sources/VoipSMS/VoipMsSMSClient.h index 694962d..c1ae6df 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.h +++ b/Sources/VoipSMS/VoipMsSMSClient.h @@ -6,7 +6,7 @@ #include #include "GlobalDefine.h" #include -#include "CSMSMessage.h" +#include "SMSMessage.h" #include #include #include "ProgramSettings.h" @@ -46,6 +46,11 @@ public: + QList *GetSMSList(); + int GetSMSCount(); + QString GetDefaultDID(); + + private: QNetworkAccessManager *mVOIPMSSocket; diff --git a/Sources/main.cpp b/Sources/main.cpp index 5168806..3b552aa 100644 --- a/Sources/main.cpp +++ b/Sources/main.cpp @@ -28,6 +28,7 @@ #include #include #include "MasterCtrl.h" +#include int main(int argc, char *argv[]) @@ -40,6 +41,8 @@ int main(int argc, char *argv[]) QApplication::setFont(serifFont); QApplication::setQuitOnLastWindowClosed(false); + QLoggingCategory::setFilterRules("qt.network.ssl.warning=false"); + //Create program instance CMasterCtrl MasterCtrl;