#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 *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 DevicesStatusList; for(int i = 0; i < mLANMonitorList.size(); i++) { bool Status = mLANMonitorList.at(i)->IsDeviceOnline(); DevicesStatusList.append(Status); } mProgramPtr->UpdateLANDevicesPresenceStatusRequest(DevicesStatusList); }