diff options
Diffstat (limited to 'apps/include/modbus/mbport.h')
-rw-r--r-- | apps/include/modbus/mbport.h | 135 |
1 files changed, 69 insertions, 66 deletions
diff --git a/apps/include/modbus/mbport.h b/apps/include/modbus/mbport.h index fbc1c260d..ae2170d2b 100644 --- a/apps/include/modbus/mbport.h +++ b/apps/include/modbus/mbport.h @@ -1,4 +1,6 @@ -/* +/**************************************************************************** + * apps/include/modbus/mbport.h + * * FreeModbus Libary: A portable Modbus implementation for Modbus ASCII/RTU. * Copyright (c) 2006 Christian Walter <wolti@sil.at> * All rights reserved. @@ -25,108 +27,109 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * File: $Id: mbport.h,v 1.19 2010/06/06 13:54:40 wolti Exp $ - */ + ****************************************************************************/ -#ifndef _MB_PORT_H -#define _MB_PORT_H +#ifndef __APPS_INCLUDE_MODBUS_MBPORT_H +#define __APPS_INCLUDE_MODBUS_MBPORT_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ #include <stdint.h> #include <stdbool.h> +/**************************************************************************** + * Public Types + ****************************************************************************/ + #ifdef __cplusplus PR_BEGIN_EXTERN_C #endif -/* ----------------------- Type definitions ---------------------------------*/ - typedef enum { - EV_READY, /*!< Startup finished. */ - EV_FRAME_RECEIVED, /*!< Frame received. */ - EV_EXECUTE, /*!< Execute function. */ - EV_FRAME_SENT /*!< Frame sent. */ + EV_READY, /* Startup finished. */ + EV_FRAME_RECEIVED, /* Frame received. */ + EV_EXECUTE, /* Execute function. */ + EV_FRAME_SENT /* Frame sent. */ } eMBEventType; -/*! \ingroup modbus - * \brief Parity used for characters in serial mode. +/* Parity used for characters in serial mode. * * The parity which should be applied to the characters sent over the serial * link. Please note that this values are actually passed to the porting * layer and therefore not all parity modes might be available. */ + typedef enum { - MB_PAR_NONE, /*!< No parity. */ - MB_PAR_ODD, /*!< Odd parity. */ - MB_PAR_EVEN /*!< Even parity. */ + MB_PAR_NONE, /* No parity. */ + MB_PAR_ODD, /* Odd parity. */ + MB_PAR_EVEN /* Even parity. */ } eMBParity; -/* ----------------------- Supporting functions -----------------------------*/ -bool xMBPortEventInit( void ); - -bool xMBPortEventPost( eMBEventType eEvent ); - -bool xMBPortEventGet( /*@out@ */ eMBEventType * eEvent ); - -/* ----------------------- Serial port functions ----------------------------*/ - -bool xMBPortSerialInit( uint8_t ucPort, speed_t ulBaudRate, - uint8_t ucDataBits, eMBParity eParity ); - -void vMBPortClose( void ); - -void xMBPortSerialClose( void ); - -void vMBPortSerialEnable( bool xRxEnable, bool xTxEnable ); - -bool xMBPortSerialGetByte( int8_t * pucByte ); +/**************************************************************************** + * Public Data + ****************************************************************************/ -bool xMBPortSerialPutByte( int8_t ucByte ); - -/* ----------------------- Timers functions ---------------------------------*/ -bool xMBPortTimersInit( uint16_t usTimeOut50us ); - -void xMBPortTimersClose( void ); - -void vMBPortTimersEnable( void ); - -void vMBPortTimersDisable( void ); - -void vMBPortTimersDelay( uint16_t usTimeOutMS ); - -/* ----------------------- Callback for the protocol stack ------------------*/ - -/*! - * \brief Callback function for the porting layer when a new byte is - * available. +/* Callback function for the porting layer when a new byte is available. * * Depending upon the mode this callback function is used by the RTU or * ASCII transmission layers. In any case a call to xMBPortSerialGetByte() * must immediately return a new character. * - * \return <code>true</code> if a event was posted to the queue because - * a new byte was received. The port implementation should wake up the - * tasks which are currently blocked on the eventqueue. + * Return true if a event was posted to the queue because a new byte was + * received. The port implementation should wake up the tasks which are + * currently blocked on the eventqueue. */ -extern bool( *pxMBFrameCBByteReceived ) ( void ); -extern bool( *pxMBFrameCBTransmitterEmpty ) ( void ); +extern bool(*pxMBFrameCBByteReceived)(void); +extern bool(*pxMBFrameCBTransmitterEmpty)(void); +extern bool(*pxMBPortCBTimerExpired)(void); -extern bool( *pxMBPortCBTimerExpired ) ( void ); +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ -/* ----------------------- TCP port functions -------------------------------*/ -bool xMBTCPPortInit( uint16_t usTCPPort ); +/* Supporting functions */ -void vMBTCPPortClose( void ); +bool xMBPortEventInit(void); +bool xMBPortEventPost(eMBEventType eEvent); +bool xMBPortEventGet(/*@out@ */ eMBEventType * eEvent); -void vMBTCPPortDisable( void ); +/* Serial port functions */ -bool xMBTCPPortGetRequest( uint8_t **ppucMBTCPFrame, uint16_t * usTCPLength ); +bool xMBPortSerialInit(uint8_t ucPort, speed_t ulBaudRate, + uint8_t ucDataBits, eMBParity eParity); +#ifdef CONFIG_MB_HAVE_CLOSE +void vMBPortClose(void); +#endif +void xMBPortSerialClose(void); +void vMBPortSerialEnable(bool xRxEnable, bool xTxEnable); +bool xMBPortSerialGetByte(int8_t * pucByte); +bool xMBPortSerialPutByte(int8_t ucByte); + +/* Timers functions */ -bool xMBTCPPortSendResponse( const uint8_t *pucMBTCPFrame, uint16_t usTCPLength ); +bool xMBPortTimersInit(uint16_t usTimeOut50us); +void xMBPortTimersClose(void); +void vMBPortTimersEnable(void); +void vMBPortTimersDisable(void); +void vMBPortTimersDelay(uint16_t usTimeOutMS); + +/* TCP port function */ + +bool xMBTCPPortInit(uint16_t usTCPPort); +#ifdef CONFIG_MB_HAVE_CLOSE +void vMBTCPPortClose(void); +#endif +void vMBTCPPortDisable(void); +bool xMBTCPPortGetRequest(uint8_t **ppucMBTCPFrame, uint16_t * usTCPLength); +bool xMBTCPPortSendResponse(const uint8_t *pucMBTCPFrame, uint16_t usTCPLength); #ifdef __cplusplus PR_END_EXTERN_C #endif -#endif + +#endif /* __APPS_INCLUDE_MODBUS_MBPORT_H */ |