LAN Devices presence

This commit is contained in:
2024-03-05 16:29:13 -05:00
parent bd720d25dc
commit 32a0f76bf2
20 changed files with 1821 additions and 559 deletions
@@ -0,0 +1,68 @@
#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);
}