69 lines
2.0 KiB
C++
69 lines
2.0 KiB
C++
#include "LANDevicesPresenceMonitor.h"
|
|
#include "OtarcikCan.h"
|
|
|
|
CLANDevicesPresenceMonitor::CLANDevicesPresenceMonitor()
|
|
{
|
|
mProgramPtr = 0;
|
|
mLANDevicesPresenceStateUpdateTimer = new QTimer;
|
|
mLANDevicesPresenceStateUpdateTimer->setInterval(LAN_DEVICE_MONITOR_PRESENCE_CHECK_TIMEOUT);
|
|
mLANDevicesPresenceStateUpdateTimer->setSingleShot(false);
|
|
connect(mLANDevicesPresenceStateUpdateTimer,&QTimer::timeout,this,&CLANDevicesPresenceMonitor::DevicesPresenceUpdateTimerExpired);
|
|
}
|
|
|
|
CLANDevicesPresenceMonitor::~CLANDevicesPresenceMonitor()
|
|
{
|
|
Stop();
|
|
delete mLANDevicesPresenceStateUpdateTimer;
|
|
}
|
|
|
|
int CLANDevicesPresenceMonitor::Start(QList<CLANDevicePresenceConfig> *LANDevicesList)
|
|
{
|
|
mLANMonitorList.clear();
|
|
for(int i = 0; i < LANDevicesList->size(); i++)
|
|
{
|
|
CLANDeviceMonitor *NewMonitor = new CLANDeviceMonitor(LANDevicesList->at(i).mDeviceIPAddress,LANDevicesList->at(i).mCANStatusBit,LANDevicesList->at(i).mIsDetectionActive,LANDevicesList->at(i).mDeviceDescription);
|
|
mLANMonitorList.append(NewMonitor);
|
|
}
|
|
mLANDevicesPresenceStateUpdateTimer->start();
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
int CLANDevicesPresenceMonitor::Stop()
|
|
{
|
|
//destroy all LAN monitors.
|
|
for(int i = 0; i < mLANMonitorList.size(); i++)
|
|
{
|
|
delete mLANMonitorList[i];
|
|
}
|
|
mLANMonitorList.clear();
|
|
mLANDevicesPresenceStateUpdateTimer->stop();
|
|
|
|
return RET_OK;
|
|
}
|
|
|
|
quint64 CLANDevicesPresenceMonitor::GetDevicesPresenceCANMask()
|
|
{
|
|
quint64 Mask = 0;
|
|
|
|
for(int i = 0; i < mLANMonitorList.size(); i++)
|
|
{
|
|
Mask |= mLANMonitorList[i]->GetDeviceCANStatusMask();
|
|
}
|
|
|
|
return Mask;
|
|
}
|
|
|
|
void CLANDevicesPresenceMonitor::DevicesPresenceUpdateTimerExpired()
|
|
{
|
|
QList<bool> DevicesStatusList;
|
|
|
|
for(int i = 0; i < mLANMonitorList.size(); i++)
|
|
{
|
|
bool Status = mLANMonitorList.at(i)->IsDeviceOnline();
|
|
DevicesStatusList.append(Status);
|
|
}
|
|
|
|
mProgramPtr->UpdateLANDevicesPresenceStatusRequest(DevicesStatusList);
|
|
}
|