104 lines
2.9 KiB
C++
104 lines
2.9 KiB
C++
#include "MasterCtrlInterface.h"
|
|
|
|
CMasterCtrlInterface::CMasterCtrlInterface()
|
|
{
|
|
|
|
}
|
|
|
|
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;
|
|
}
|