blob: 583fefd53e88b7a5ea1eac51842d295f389c6f4c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 -2014 AIT, fortiss GmbH
* 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, Alois Zoitl - initial API and implementation and/or initial documentation
*******************************************************************************/
#ifndef _MODBUSCONNECTION_H_
#define _MODBUSCONNECTION_H_
#include <modbus.h>
#include <forte_thread.h>
#include "modbushandler.h"
#include <errno.h>
namespace forte{
namespace com_infra{
class CModbusComLayer;
}
}
class CModbusConnection : public CThread{
public:
explicit CModbusConnection(CModbusHandler* pa_modbusHandler);
~CModbusConnection();
virtual int readData(uint8_t *pa_pData) = 0;
virtual int writeData(uint16_t *pa_pData, unsigned int pa_nDataSize) = 0;
virtual void run() = 0;
/*! \brief Initializes Modbus connection
*
* Any classes derived from this class must call CModbusConnection::connect() in the beginning
* of their connect() function
*/
virtual int connect();
/*! \brief De-initializes Modbus connection
*
* Any classes derived from this class should call CModbusConnection::connect() at the end
* of their disconnect() function
*/
virtual void disconnect();
void setIPAddress(const char* pa_poIPAddress);
void setPort(unsigned int pa_nPort);
void setDevice(const char* pa_chDevice);
void setBaud(int pa_nBaud);
void setParity(char pa_cParity);
void setDataBit(int pa_nDataBit);
void setStopBit(int pa_nStopBit);
void setResponseTimeout(unsigned int pa_nResponseTimeout);
void setByteTimeout(unsigned int pa_nByteTimeout);
void setComCallback(forte::com_infra::CModbusComLayer* pa_poModbusLayer);
protected:
modbus_t* m_pModbusConn;
CModbusHandler* m_pModbusHandler;
CModbusHandler::TCallbackDescriptor m_nComCallbackId;
bool m_bConnected;
private:
const char* m_paIPAddress;
unsigned int m_nPort;
const char* m_chDevice;
int m_nBaud;
char m_cParity;
int m_nDataBit;
int m_nStopBit;
unsigned int m_nResponseTimeout;
unsigned int m_nByteTimeout;
};
#endif // _MODBUSCONNECTION_H_