Masterctrl/Sources/NetworkDevicesMgr.cpp
2020-09-13 13:47:47 -04:00

172 lines
4.4 KiB
C++

#include "NetworkDevicesMgr.h"
#include "232NetworkCommIF.h"
#include "485NetworkCommIF.h"
#include "EthernetNetworkCommIF.h"
#include "MasterCtrl.h"
CNetworkDevicesMgr::CNetworkDevicesMgr()
{
mVoipMSInterfaceHandle = 0;
mProgramHandle = 0;
mSprinklerMgrHandle = 0;
mAvReceiverDevice = 0;
mChaletLoraDevice = 0;
}
CNetworkDevicesMgr::~CNetworkDevicesMgr()
{
for(int i = 0; i < mNetworkDevicesList.size(); i++)
{
delete mNetworkDevicesList.at(i);
}
mNetworkDevicesList.clear();
}
int CNetworkDevicesMgr::InitNetworkDevices()
{
C232NetworkCommIF *NetworkInterface = new C232NetworkCommIF();
CDeadboltDevice *DeadboltDevice = new CDeadboltDevice(1,(CAbstractNetworkCommIF*)NetworkInterface);
mNetworkDevicesList.append(DeadboltDevice);
return RET_OK;
}
int CNetworkDevicesMgr::CreateNewSMSDevice(int Address, CAbstractNetworkCommIF *NetworkIF)
{
if(mVoipMSInterfaceHandle == 0)
{
return RET_ERROR;
}
CSMSDevice *SMSDevice = new CSMSDevice(Address,NetworkIF,mVoipMSInterfaceHandle);
SMSDevice->mContactRepositoryHandle = mContactRepositoryHandle;
mNetworkDevicesList.append((CNetworkDevice*)SMSDevice);
return RET_OK;
}
int CNetworkDevicesMgr::CreateNewSprinklerDevice(int Address, CAbstractNetworkCommIF *NetworkIF)
{
if(mSprinklerMgrHandle == 0)
{
return RET_ERROR;
}
CSprinklerDevice *SprinklerDevice = new CSprinklerDevice(Address,NetworkIF,mSprinklerMgrHandle);
mNetworkDevicesList.append((CNetworkDevice*)SprinklerDevice);
mSprinklerMgrHandle->NewSprinklerDeviceCreated(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;
}
int CNetworkDevicesMgr::CreateNewAvReceiverInterface(int Address, CAbstractNetworkCommIF *NetworkIF)
{
if(mAvReceiverDevice == 0)
{
return RET_ERROR;
}
CAvReceiverInterface *AvReceiverInterface = new CAvReceiverInterface(Address,NetworkIF,mAvReceiverDevice);
mNetworkDevicesList.append((CNetworkDevice*)AvReceiverInterface);
return RET_OK;
}
int CNetworkDevicesMgr::CreateNewChaletInterface(int Address, CAbstractNetworkCommIF *NetworkIF)
{
if(mChaletLoraDevice == 0)
{
return RET_ERROR;
}
CChaletInterface *ChaletInterface = new CChaletInterface(Address, NetworkIF,mChaletLoraDevice);
mNetworkDevicesList.append((CNetworkDevice*)ChaletInterface);
return RET_OK;
}
void CNetworkDevicesMgr::EthernetNetworkDeviceDisconnected(CNetworkDevice *Device)
{
qDebug("Device disconnected. ID: %d, Address: %d",Device->GetDeviceID(),Device->GetDeviceAddress());
int index = FindDeviceByPtr(Device);
if(index != -1)
{
delete mNetworkDevicesList.at(index);
mNetworkDevicesList.removeAt(index);
}
}
int CNetworkDevicesMgr::FindDeviceByPtr(CNetworkDevice *Device)
{
for(int i = 0; i < mNetworkDevicesList.size(); i++)
{
if(mNetworkDevicesList.at(i) == Device)
{
return i;
}
}
return -1;
}
CNetworkDevice* CNetworkDevicesMgr::GetDevice(int DeviceID, int Address)
{
for(int i = 0; i < mNetworkDevicesList.size(); i++)
{
if(mNetworkDevicesList.at(i)->GetDeviceID() == DeviceID &&
mNetworkDevicesList.at(i)->GetDeviceAddress() == Address)
{
return mNetworkDevicesList.at(i);
}
}
return 0;
}
QList<CNetworkDevice*> CNetworkDevicesMgr::GetDevices(int DeviceID)
{
QList<CNetworkDevice*> DevicesList;
for(int i = 0; i < mNetworkDevicesList.size(); i++)
{
if(mNetworkDevicesList.at(i)->GetDeviceID() == DeviceID)
{
DevicesList.append(mNetworkDevicesList.at(i));
}
}
return DevicesList;
}
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);
}
}
return RET_OK;
}