Implémentation LanDeviceMonitor
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
#include "LANDeviceMonitor.h"
|
||||
|
||||
CLANDeviceMonitor::CLANDeviceMonitor(QString IPAddress, unsigned int CANBit, bool Active, QString Description)
|
||||
{
|
||||
mDeviceIPAddress = IPAddress;
|
||||
mCANStatusBit = CANBit;
|
||||
mIsDetectionActive = Active;
|
||||
mDeviceDescription = Description;
|
||||
mIsDeviceOnline = false;
|
||||
mDevMonitorTimer = 0;
|
||||
mPingProcess = 0;
|
||||
mIsPingInProgress = false;
|
||||
|
||||
if(mIsDetectionActive == true)
|
||||
{
|
||||
mDevMonitorTimer = new QTimer();
|
||||
mDevMonitorTimer->setSingleShot(true);
|
||||
connect(mDevMonitorTimer,&QTimer::timeout,this,&CLANDeviceMonitor::MonitorTimeExpired);
|
||||
|
||||
mPingProcess = new QProcess(this);
|
||||
connect(mPingProcess,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(PingProcessFinished(int,QProcess::ExitStatus)));
|
||||
PingDevice();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
int CLANDeviceMonitor::PingDevice()
|
||||
{
|
||||
int PingTimeout = LAN_DEVICE_MONITOR_PING_TIMEOUT - 500;
|
||||
QString Cmd = QString("ping /n 1 /w %1 %2").arg(PingTimeout).arg(mDeviceIPAddress);
|
||||
|
||||
mPingProcess->start(Cmd);
|
||||
//mDevMonitorTimer->start(4000);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
CLANDeviceMonitor::~CLANDeviceMonitor()
|
||||
{
|
||||
if(mDevMonitorTimer != 0)
|
||||
delete mDevMonitorTimer;
|
||||
if(mPingProcess != 0)
|
||||
delete mPingProcess;
|
||||
}
|
||||
|
||||
|
||||
void CLANDeviceMonitor::MonitorTimeExpired()
|
||||
{
|
||||
PingDevice();
|
||||
}
|
||||
|
||||
void CLANDeviceMonitor::PingProcessFinished(int exitCode, QProcess::ExitStatus exitStatus)
|
||||
{
|
||||
QString Result = mPingProcess->readAllStandardOutput();
|
||||
if(Result.toLower().contains("ttl="))
|
||||
{
|
||||
//Online
|
||||
mIsDeviceOnline = true;
|
||||
qDebug("Device Online");
|
||||
}
|
||||
else
|
||||
{
|
||||
//Offline
|
||||
mIsDeviceOnline = false;
|
||||
qDebug("Device Offline");
|
||||
}
|
||||
|
||||
GetDeviceCANStatusMask();
|
||||
mDevMonitorTimer->start(LAN_DEVICE_MONITOR_PRESENCE_CHECK_TIMEOUT);
|
||||
|
||||
// qDebug("%s",qPrintable(Result));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
quint64 CLANDeviceMonitor::GetDeviceCANStatusMask()
|
||||
{
|
||||
quint64 Mask = 0;
|
||||
if(mIsDeviceOnline == false)
|
||||
{
|
||||
Mask = 1;
|
||||
Mask <<= mCANStatusBit;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user