/******************************************************************************* | |
* Copyright (c) 2012 AIT | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License 2.0 which is available at | |
* http://www.eclipse.org/legal/epl-2.0. | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Filip Andren - initial API and implementation and/or initial documentation | |
*******************************************************************************/ | |
#include "modbustimedevent.h" | |
CModbusTimedEvent::CModbusTimedEvent(TForteUInt32 pa_nUpdateInterval) | |
: m_bIsStarted(false){ | |
m_nUpdateInterval = pa_nUpdateInterval; | |
m_oUpdateInterval += (m_nUpdateInterval * cg_nForteTicksPerSecond) / 1000; | |
if(pa_nUpdateInterval == 0){ | |
m_bSingleShotEvent = true; | |
activate(); | |
} | |
else | |
m_bSingleShotEvent = false; | |
} | |
void CModbusTimedEvent::setUpdateInterval(TForteUInt32 pa_nUpdateInterval){ | |
m_nUpdateInterval = pa_nUpdateInterval; | |
SForteTime newTime; | |
newTime += (m_nUpdateInterval * cg_nForteTicksPerSecond) / 1000; | |
m_oUpdateInterval = newTime; | |
} | |
void CModbusTimedEvent::activate(){ | |
m_oStartTime = CTimerHandler::sm_poFORTETimer->getForteTime(); | |
m_bIsStarted = true; | |
} | |
void CModbusTimedEvent::deactivate(){ | |
m_bIsStarted = false; | |
} | |
bool CModbusTimedEvent::readyToExecute() const{ | |
SForteTime currentTime = CTimerHandler::sm_poFORTETimer->getForteTime(); | |
if (m_oUpdateInterval > currentTime) { | |
return false; | |
} | |
currentTime -= m_oUpdateInterval; | |
if(isStarted() && (currentTime > m_oStartTime || currentTime == m_oStartTime)){ | |
return true; | |
} | |
return false; | |
} | |
void CModbusTimedEvent::restartTimer(){ | |
activate(); | |
} |