mbport.h
上传用户:kongshuqi
上传日期:2013-10-09
资源大小:59k
文件大小:4k
- /*
- * FreeModbus Libary: A portable Modbus implementation for Modbus ASCII/RTU.
- * Copyright (C) 2006 Christian Walter <wolti@sil.at>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * File: $Id: mbport.h,v 1.14 2006/06/26 19:26:50 wolti Exp $
- */
- #ifndef _MB_PORT_H
- #define _MB_PORT_H
- #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. */
- } eMBEventType;
- /*! ingroup modbus
- * brief 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. */
- } eMBParity;
- /* ----------------------- Supporting functions -----------------------------*/
- BOOL xMBPortEventInit( void );
- BOOL xMBPortEventPost( eMBEventType eEvent );
- BOOL xMBPortEventGet( /*@out@ */ eMBEventType * eEvent );
- /* ----------------------- Serial port functions ----------------------------*/
- BOOL xMBPortSerialInit( UCHAR ucPort, ULONG ulBaudRate,
- UCHAR ucDataBits, eMBParity eParity );
- void vMBPortClose( void );
- void xMBPortSerialClose( void );
- void vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable );
- INLINE BOOL xMBPortSerialGetByte( CHAR * pucByte );
- INLINE BOOL xMBPortSerialPutByte( CHAR ucByte );
- /* ----------------------- Timers functions ---------------------------------*/
- BOOL xMBPortTimersInit( USHORT usTim1Timerout100us );
- void xMBPortTimersClose( void );
- INLINE void vMBPortTimersEnable( void );
- INLINE void vMBPortTimersDisable( void );
- /* ----------------------- Callback for the protocol stack ------------------*/
- /*!
- * brief 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.
- */
- extern BOOL( *pxMBFrameCBByteReceived ) ( void );
- extern BOOL( *pxMBFrameCBTransmitterEmpty ) ( void );
- extern BOOL( *pxMBPortCBTimerExpired ) ( void );
- /* ----------------------- TCP port functions -------------------------------*/
- BOOL xMBTCPPortInit( USHORT usTCPPort );
- void vMBTCPPortClose( void );
- void vMBTCPPortDisable( void );
- BOOL xMBTCPPortGetRequest( UCHAR **ppucMBTCPFrame, USHORT * usTCPLength );
- BOOL xMBTCPPortSendResponse( const UCHAR *pucMBTCPFrame, USHORT usTCPLength );
- #ifdef __cplusplus
- PR_END_EXTERN_C
- #endif
- #endif