Sprinkler device et interface dev

This commit is contained in:
J-F Martel 2017-04-13 10:42:39 -04:00
parent c7c015dab3
commit 8a0c368243
12 changed files with 187 additions and 52 deletions

View File

@ -121,75 +121,151 @@ void CEthernetNetworkServer::DeviceSocketDataAvail()
DeviceID = Data.at(0);
DeviceAddress = Data.at(1);
if(DeviceID == ID_SMS_CLIENT)
int Result = RES_CREATION_FAILED;
switch(DeviceID)
{
if(mDevicesMgrHandle != 0)
case ID_SMS_CLIENT:
{
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);
Result = RES_CREATION_SUCCESS;
qDebug("Created new SMS device");
}
else
{
Result = RES_CREATION_FAILED;
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;
}
break;
}
else
{
qDebug("Invalid DevicesMgrHandle in ethernet server");
CloseSocket = true;
}
}
if(DeviceID == ID_SPRINKLER_DEVICE)
{
if(mDevicesMgrHandle != 0)
case ID_SPRINKLER_DEVICE:
{
if(mDevicesMgrHandle->CreateNewSprinklerDevice(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);
Result = RES_CREATION_SUCCESS;
qDebug("Created new Sprinkler device");
}
else
{
Result = RES_CREATION_FAILED;
qDebug("Could not create Sprinkler 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;
}
break;
}
else
case ID_SPRINKLER_INTERFACE:
{
if(mDevicesMgrHandle->CreateNewSprinklerInterface(DeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK)
{
Result = RES_CREATION_SUCCESS;
qDebug("Created new Sprinkler Interface");
}
else
{
Result = RES_CREATION_FAILED;
qDebug("Could not create Sprinkler Interface in ethernet server");
}
break;
}
default:
{
Result = RES_CREATION_UNKNOWN_DEVICE;
qDebug("Invalid DevicesMgrHandle in ethernet server");
CloseSocket = true;
break;
}
}
if(Result == RES_CREATION_SUCCESS)
{
//All OK.
//Redirect signals.
DeviceSocket->disconnect();
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);
}
else if(Result == RES_CREATION_FAILED)
{
QByteArray Frame = GetTxPacket((unsigned char)ETH_NETWK_CONNECTION_REFUSED,0,0,0,DeviceAddress,(unsigned char)ID_ETHERNET_VIRTUAL);
DeviceSocket->write(Frame);
CloseSocket = true;
}
// if(DeviceID == ID_SMS_CLIENT)
// {
// 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;
// }
// }
// else if(DeviceID == ID_SPRINKLER_DEVICE)
// {
// if(mDevicesMgrHandle != 0)
// {
// if(mDevicesMgrHandle->CreateNewSprinklerDevice(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 Sprinkler device");
// }
// else
// {
// qDebug("Could not create Sprinkler 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;

View File

@ -25,6 +25,14 @@ class CEthernetNetworkServer : public QObject, CNetworkProtocol
{
Q_OBJECT
public:
enum eDeviceCreationResult
{
RES_CREATION_FAILED,
RES_CREATION_SUCCESS,
RES_CREATION_UNKNOWN_DEVICE
};
CEthernetNetworkServer();
~CEthernetNetworkServer();

View File

@ -19,6 +19,7 @@ CMasterCtrl::CMasterCtrl()
mEthernetNetworkServer = new CEthernetNetworkServer;
mNetworkDevicesManager = new CNetworkDevicesMgr;
mContactsRepository = new CContactRepository;
mSprinklerManager = new CSprinklerMgr;
// mMasterCtrlSettings = new CSettings;
}
@ -35,6 +36,7 @@ CMasterCtrl::~CMasterCtrl()
delete mNetworkDevicesManager;
delete mEthernetNetworkServer;
delete mContactsRepository;
delete mSprinklerManager;
// delete mMasterCtrlSettings;
}
@ -58,10 +60,15 @@ void CMasterCtrl::Start()
mNetworkDevicesManager->mVoipMSInterfaceHandle = mVoipMsSMSClient;
mNetworkDevicesManager->mContactRepositoryHandle = mContactsRepository;
mNetworkDevicesManager->mProgramHandle = this;
mNetworkDevicesManager->mSprinklerMgrHandle = mSprinklerManager;
mEthernetNetworkServer->mDevicesMgrHandle = mNetworkDevicesManager;
mEthernetNetworkServer->mProgramHandle = this;
mVoipMsSMSClient->mProgramHandle = this;
mSprinklerManager->mProgramHandle = this;
connect(mVoipMsSMSClient,SIGNAL(DIDSFetched(QStringList)),mSettingsWindow,SLOT(DIDsListFetched(QStringList)));
mAVReceiverDevice->ConnectToReceiver();

View File

@ -11,6 +11,7 @@
#include "NetworkDevicesMgr.h"
#include "EthernetNetworkServer.h"
#include "ContactRepository.h"
#include "SprinklerMgr.h"
//#include "AppIconWidget.h"
class CMasterCtrl : public QObject
@ -30,6 +31,7 @@ public:
CNetworkDevicesMgr *mNetworkDevicesManager;
CEthernetNetworkServer *mEthernetNetworkServer;
CContactRepository *mContactsRepository;
CSprinklerMgr *mSprinklerManager;
// CAppIconWidget mAppWidget;

View File

@ -10,6 +10,7 @@ CNetworkDevicesMgr::CNetworkDevicesMgr()
{
mVoipMSInterfaceHandle = 0;
mProgramHandle = 0;
mSprinklerMgrHandle = 0;
}
CNetworkDevicesMgr::~CNetworkDevicesMgr()
@ -50,12 +51,30 @@ int CNetworkDevicesMgr::CreateNewSMSDevice(int Address, CAbstractNetworkCommIF *
int CNetworkDevicesMgr::CreateNewSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkIF)
{
CSprinklerDevice *SprinklerDevice = new CSprinklerDevice(Address,NetworkIF);
if(mSprinklerMgrHandle == 0)
{
return RET_ERROR;
}
CSprinklerDevice *SprinklerDevice = new CSprinklerDevice(Address,NetworkIF,mSprinklerMgrHandle);
mNetworkDevicesList.append((CNetworkDevice*)SprinklerDevice);
return RET_OK;
}
int CNetworkDevicesMgr::CreateNewSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkIF)
{
if(mSprinklerMgrHandle == 0)
{
return RET_ERROR;
}
CSprinklerInterface *SprinklerInterface = new CSprinklerInterface(Address,NetworkIF,mSprinklerMgrHandle);
mNetworkDevicesList.append((CNetworkDevice*)SprinklerInterface);
return RET_OK;
}
void CNetworkDevicesMgr::EthernetNetworkDeviceDisconnected(CNetworkDevice *Device)
{
qDebug("Device disconnected. ID: %d, Address: %d",Device->GetDeviceID(),Device->GetDeviceAddress());
@ -118,4 +137,6 @@ int CNetworkDevicesMgr::NewSMSMessagesReceived(QList<CSMSMessage> NewMessages)
SMSDevice->SendNewSMSReceived(NewMessages);
}
}
return RET_OK;
}

View File

@ -5,6 +5,7 @@
#include "AVReceiverDevice.h"
#include "SMSDevice.h"
#include "SprinklerDevice.h"
#include "SprinklerInterface.h"
#include "AbstractNetworkInterface.h"
#include "QList"
#include <QObject>
@ -12,6 +13,8 @@
class CVoipMsSMSClient;
class CMasterCtrl;
class CContactRepository;
class CSprinklerMgr;
class CNetworkDevicesMgr: public QObject
{
Q_OBJECT
@ -24,6 +27,7 @@ public:
int CreateNewSMSDevice(int Address,CAbstractNetworkCommIF *NetworkIF);
int CreateNewSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkIF);
int CreateNewSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkIF);
int FindDeviceByPtr(CNetworkDevice *Device);
@ -33,6 +37,7 @@ public:
CVoipMsSMSClient *mVoipMSInterfaceHandle;
CContactRepository *mContactRepositoryHandle;
CMasterCtrl *mProgramHandle;
CSprinklerMgr *mSprinklerMgrHandle;
int NewSMSMessagesReceived(QList<CSMSMessage> NewMessages);

View File

@ -1,12 +1,13 @@
#include "SprinklerDevice.h"
#include "ProtocolDefs.h"
#include <QDebug>
#include "SprinklerMgr.h"
CSprinklerDevice::CSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkInterface):
CSprinklerDevice::CSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkInterface, CSprinklerMgr *SprinklerMgr):
CNetworkDevice(ID_SPRINKLER_DEVICE,Address,NetworkInterface)
{
mSprinklerMgr = SprinklerMgr;
}
CSprinklerDevice::~CSprinklerDevice()

View File

@ -4,16 +4,20 @@
#include "GlobalDefine.h"
#include "NetworkDevice.h"
class CSprinklerMgr;
class CSprinklerDevice: public QObject, public CNetworkDevice
{
Q_OBJECT
public:
CSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkInterface);
CSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkInterface, CSprinklerMgr *SprinklerMgr);
virtual ~CSprinklerDevice();
virtual int NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data);
CSprinklerMgr *mSprinklerMgr;
};
#endif // SPRINKLERDEVICE_H

View File

@ -1,12 +1,13 @@
#include "SprinklerInterface.h"
#include "ProtocolDefs.h"
#include <QDebug>
#include "SprinklerMgr.h"
CSprinklerInterface::CSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkInterface):
CNetworkDevice(ID_SPRINKLER_DEVICE,Address,NetworkInterface)
CSprinklerInterface::CSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkInterface, CSprinklerMgr *SprinklerMgr):
CNetworkDevice(ID_SPRINKLER_INTERFACE,Address,NetworkInterface)
{
mSprinklerMgr = SprinklerMgr;
}
CSprinklerInterface::~CSprinklerInterface()

View File

@ -5,15 +5,20 @@
#include "NetworkDevice.h"
class CSprinklerMgr;
class CSprinklerInterface: public QObject, public CNetworkDevice
{
Q_OBJECT
public:
CSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkInterface);
CSprinklerInterface(int Address, CAbstractNetworkCommIF *NetworkInterface, CSprinklerMgr *SprinklerMgr);
virtual ~CSprinklerInterface();
virtual int NewDeviceFrameReceived(int DeviceID, int DeviceAddress, int MessageID, int DataSize, QByteArray Data);
CSprinklerMgr *mSprinklerMgr;
};
#endif // SPRINKLERDEVICE_H

View File

@ -2,5 +2,5 @@
CSprinklerMgr::CSprinklerMgr(QObject *parent) : QObject(parent)
{
mProgramHandle = 0;
}

View File

@ -3,15 +3,20 @@
#include <QObject>
class CMasterCtrl;
class CSprinklerMgr : public QObject
{
Q_OBJECT
public:
explicit CSprinklerMgr(QObject *parent = 0);
CMasterCtrl *mProgramHandle;
signals:
public slots:
};
#endif // SPRINKLERMGR_H
#endif // SPRINKLERMGR_H