SystemGui/Sources/MasterCtrlInterface.cpp
2020-09-13 13:50:05 -04:00

104 lines
3.0 KiB
C++

#include "MasterCtrlInterface.h"
CMasterCtrlInterface::CMasterCtrlInterface()
{
mNetworkCommSocket = 0;
}
int CMasterCtrlInterface::ConnectToMasterCtrl()
{
if(mNetworkCommSocket == 0)
{
mNetworkCommSocket = new QTcpSocket();
}
connect(mNetworkCommSocket,SIGNAL(connected()),this,SLOT(NetworkSocketConnected()));
connect(mNetworkCommSocket,SIGNAL(disconnected()),this,SLOT(NetworkSocketDisconnected()));
connect(mNetworkCommSocket,SIGNAL(readyRead()),this,SLOT(NetworkSocketDataAvailable()));
mNetworkCommSocket->connectToHost(mMasterCtrlIPAddress,mNetworkPort);
return RET_OK;
}
int CMasterCtrlInterface::DisconnectMasterCtrl()
{
if(mNetworkCommSocket != 0)
{
mNetworkCommSocket->close();
// mNetworkCommSocket->deleteLater();
}
return RET_OK;
}
int CMasterCtrlInterface::NewFrameReceived(int TargetDeviceID, int TargetDeviceAddress, int SenderID, int SenderAddress, int MessageID, int DataSize, QByteArray Data)
{
if(TargetDeviceID == ID_ETHERNET_VIRTUAL)
{
switch(MessageID)
{
case ETH_NETWK_DEVICE_INFO_REQUEST:
{
QByteArray Frame,ResponseData;
ResponseData.append((char)mMyDeviceID);
ResponseData.append((char)mDeviceAddress);
Frame = GetTxPacket(ETH_NETWK_DEVICE_INFO_RESPONSE,0,ResponseData.data(),ResponseData.size(),1,ID_MASTER,ID_ETHERNET_VIRTUAL,mDeviceAddress);
mNetworkCommSocket->write(Frame);
break;
}
case ETH_NETWK_CONNECTION_REFUSED:
{
qDebug("MasterCtrl connection refused");
mNetworkCommSocket->close();
delete mNetworkCommSocket;
mNetworkCommSocket = 0;
break;
}
case ETH_NETWK_SET_DEVICE_INFO_ACK:
{
// mNetworkCommSocket->write(GetTxPacket(SMS_CLIENT_DEVICE_DID_INFO_REQUEST,0,0,0,1,ID_MASTER,ID_SMS_CLIENT,mDeviceAddress));
DeviceConnectedToMaster();
qDebug("MasterCtrl accepted connection");
break;
}
case ETH_NETWK_DEVICE_INFO_RESPONSE:
default:
{
break;
}
}
}
else
{
DeviceFrameReceived(TargetDeviceID, TargetDeviceAddress, SenderID, SenderAddress, MessageID, DataSize, Data);
}
return RET_OK;
}
void CMasterCtrlInterface::NetworkSocketConnected()
{
qDebug("Connected to MasterCtrl");
}
void CMasterCtrlInterface::NetworkSocketDataAvailable()
{
AnalyzeRxBuffer(mNetworkCommSocket->readAll());
}
void CMasterCtrlInterface::NetworkSocketDisconnected()
{
qDebug("Disconnected from MasterCtrl");
}
int CMasterCtrlInterface::SendMasterCtrlCommand(unsigned char MessageID, QByteArray Data)
{
mNetworkCommSocket->write(GetTxPacket(MessageID,0,Data.data(),Data.size(),1,ID_MASTER,mMyDeviceID,mDeviceAddress));
return RET_OK;
}