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); DeviceID = Data.at(0);
DeviceAddress = Data.at(1); 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) if(mDevicesMgrHandle->CreateNewSMSDevice(DeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK)
{ {
//All OK. Result = RES_CREATION_SUCCESS;
//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"); qDebug("Created new SMS device");
} }
else else
{ {
Result = RES_CREATION_FAILED;
qDebug("Could not create SMS device in ethernet server"); 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 case ID_SPRINKLER_DEVICE:
{
qDebug("Invalid DevicesMgrHandle in ethernet server");
CloseSocket = true;
}
}
if(DeviceID == ID_SPRINKLER_DEVICE)
{
if(mDevicesMgrHandle != 0)
{ {
if(mDevicesMgrHandle->CreateNewSprinklerDevice(DeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK) if(mDevicesMgrHandle->CreateNewSprinklerDevice(DeviceAddress,(CAbstractNetworkCommIF*)NetworkIF) == RET_OK)
{ {
//All OK. Result = RES_CREATION_SUCCESS;
//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"); qDebug("Created new Sprinkler device");
} }
else else
{ {
Result = RES_CREATION_FAILED;
qDebug("Could not create Sprinkler device in ethernet server"); 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"); qDebug("Invalid DevicesMgrHandle in ethernet server");
CloseSocket = true; 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) // if(IsDeviceRegistered(DeviceID) == true)
// { // {
// DeviceConnection->mConnectedDevice->mDeviceID = (int)DeviceID; // DeviceConnection->mConnectedDevice->mDeviceID = (int)DeviceID;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,12 +1,13 @@
#include "SprinklerDevice.h" #include "SprinklerDevice.h"
#include "ProtocolDefs.h" #include "ProtocolDefs.h"
#include <QDebug> #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) CNetworkDevice(ID_SPRINKLER_DEVICE,Address,NetworkInterface)
{ {
mSprinklerMgr = SprinklerMgr;
} }
CSprinklerDevice::~CSprinklerDevice() CSprinklerDevice::~CSprinklerDevice()

View File

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

View File

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

View File

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

View File

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

View File

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