/******************************************************************************* | |
* 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 | |
*******************************************************************************/ | |
#ifndef _MODBUSTIMEDEVENT_H_ | |
#define _MODBUSTIMEDEVENT_H_ | |
#include "timerha.h" | |
#include <modbus.h> | |
class CModbusTimedEvent{ | |
public: | |
explicit CModbusTimedEvent(TForteUInt32 pa_nUpdateInterval); // UpdateInterval = 0 => single shot event | |
virtual ~CModbusTimedEvent(){ | |
} | |
void setUpdateInterval(TForteUInt32 pa_nUpdateInterval); | |
TForteUInt32 getUpdateInterval() const{ | |
return m_nUpdateInterval; | |
} | |
void activate(); | |
void deactivate(); | |
bool isStarted() const { | |
return m_bIsStarted; | |
} | |
bool readyToExecute() const; | |
// Classes impementing this should call restartTimer in executeEvent | |
virtual int executeEvent(modbus_t* pa_pModbusConn, void* pa_pRetVal) = 0; | |
protected: | |
void restartTimer(); | |
private: | |
SForteTime m_oStartTime; | |
SForteTime m_oUpdateInterval; | |
TForteUInt32 m_nUpdateInterval; // Polling interval in milliseconds (0 => single shot event) | |
bool m_bSingleShotEvent; | |
bool m_bIsStarted; | |
}; | |
#endif // _MODBUSTIMEDEVENT_H_ |