From d9714b556703561a0abcbe71970b1cd6922168a6 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 21 Jul 2012 21:23:18 +0000 Subject: Use NuttX types in FreeModBus port; Add FreeModBus demo at apps/examples/modbus; Add new termios APIs git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4964 42af7a65-404d-4744-a932-0658087f49c3 --- apps/include/modbus/mb.h | 36 ++++++++++++++++++------------------ apps/include/modbus/mbframe.h | 12 ++++++------ apps/include/modbus/mbfunc.h | 20 ++++++++++---------- apps/include/modbus/mbport.h | 37 ++++++++++++++++++++----------------- apps/include/modbus/mbproto.h | 4 ++-- apps/include/modbus/mbutils.h | 12 ++++++------ 6 files changed, 62 insertions(+), 59 deletions(-) (limited to 'apps/include/modbus') diff --git a/apps/include/modbus/mb.h b/apps/include/modbus/mb.h index b534c178a..ed247d163 100644 --- a/apps/include/modbus/mb.h +++ b/apps/include/modbus/mb.h @@ -31,7 +31,8 @@ #ifndef _MB_H #define _MB_H -#include "port.h" +#include +#include #ifdef __cplusplus PR_BEGIN_EXTERN_C @@ -121,7 +122,6 @@ typedef enum MB_ETIMEDOUT /*!< timeout error occurred. */ } eMBErrorCode; - /* ----------------------- Function prototypes ------------------------------*/ /*! \ingroup modbus * \brief Initialize the Modbus protocol stack. @@ -148,8 +148,8 @@ typedef enum * slave addresses are in the range 1 - 247. * - eMBErrorCode::MB_EPORTERR IF the porting layer returned an error. */ -eMBErrorCode eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, - UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity ); +eMBErrorCode eMBInit( eMBMode eMode, uint8_t ucSlaveAddress, + uint8_t ucPort, uint32_t ulBaudRate, eMBParity eParity ); /*! \ingroup modbus * \brief Initialize the Modbus protocol stack for Modbus TCP. @@ -165,7 +165,7 @@ eMBErrorCode eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, * slave addresses are in the range 1 - 247. * - eMBErrorCode::MB_EPORTERR IF the porting layer returned an error. */ -eMBErrorCode eMBTCPInit( USHORT usTCPPort ); +eMBErrorCode eMBTCPInit( uint16_t usTCPPort ); /*! \ingroup modbus * \brief Release resources used by the protocol stack. @@ -228,7 +228,7 @@ eMBErrorCode eMBPoll( void ); * * \param ucSlaveID Values is returned in the Slave ID byte of the * Report Slave ID response. - * \param xIsRunning If TRUE the Run Indicator Status byte is set to 0xFF. + * \param xIsRunning If true the Run Indicator Status byte is set to 0xFF. * otherwise the Run Indicator Status is 0x00. * \param pucAdditional Values which should be returned in the Additional * bytes of the Report Slave ID response. @@ -238,9 +238,9 @@ eMBErrorCode eMBPoll( void ); * is too small it returns eMBErrorCode::MB_ENORES. Otherwise * it returns eMBErrorCode::MB_ENOERR. */ -eMBErrorCode eMBSetSlaveID( UCHAR ucSlaveID, BOOL xIsRunning, - UCHAR const *pucAdditional, - USHORT usAdditionalLen ); +eMBErrorCode eMBSetSlaveID( uint8_t ucSlaveID, bool xIsRunning, + uint8_t const *pucAdditional, + uint16_t usAdditionalLen ); /*! \ingroup modbus * \brief Registers a callback handler for a given function code. @@ -262,7 +262,7 @@ eMBErrorCode eMBSetSlaveID( UCHAR ucSlaveID, BOOL xIsRunning, * case the values in config.h should be adjusted. If the argument was not * valid it returns eMBErrorCode::MB_EINVAL. */ -eMBErrorCode eMBRegisterCB( UCHAR ucFunctionCode, +eMBErrorCode eMBRegisterCB( uint8_t ucFunctionCode, pxMBFunctionHandler pxHandler ); /* ----------------------- Callback -----------------------------------------*/ @@ -309,8 +309,8 @@ eMBErrorCode eMBRegisterCB( UCHAR ucFunctionCode, * - eMBErrorCode::MB_EIO If an unrecoverable error occurred. In this case * a SLAVE DEVICE FAILURE exception is sent as a response. */ -eMBErrorCode eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, - USHORT usNRegs ); +eMBErrorCode eMBRegInputCB( uint8_t * pucRegBuffer, uint16_t usAddress, + uint16_t usNRegs ); /*! \ingroup modbus_registers * \brief Callback function used if a Holding Register value is @@ -344,8 +344,8 @@ eMBErrorCode eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, * - eMBErrorCode::MB_EIO If an unrecoverable error occurred. In this case * a SLAVE DEVICE FAILURE exception is sent as a response. */ -eMBErrorCode eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, - USHORT usNRegs, eMBRegisterMode eMode ); +eMBErrorCode eMBRegHoldingCB( uint8_t * pucRegBuffer, uint16_t usAddress, + uint16_t usNRegs, eMBRegisterMode eMode ); /*! \ingroup modbus_registers * \brief Callback function used if a Coil Register value is @@ -379,8 +379,8 @@ eMBErrorCode eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, * - eMBErrorCode::MB_EIO If an unrecoverable error occurred. In this case * a SLAVE DEVICE FAILURE exception is sent as a response. */ -eMBErrorCode eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, - USHORT usNCoils, eMBRegisterMode eMode ); +eMBErrorCode eMBRegCoilsCB( uint8_t * pucRegBuffer, uint16_t usAddress, + uint16_t usNCoils, eMBRegisterMode eMode ); /*! \ingroup modbus_registers * \brief Callback function used if a Input Discrete Register value is @@ -408,8 +408,8 @@ eMBErrorCode eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, * - eMBErrorCode::MB_EIO If an unrecoverable error occurred. In this case * a SLAVE DEVICE FAILURE exception is sent as a response. */ -eMBErrorCode eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, - USHORT usNDiscrete ); +eMBErrorCode eMBRegDiscreteCB( uint8_t * pucRegBuffer, uint16_t usAddress, + uint16_t usNDiscrete ); #ifdef __cplusplus PR_END_EXTERN_C diff --git a/apps/include/modbus/mbframe.h b/apps/include/modbus/mbframe.h index 99d59c613..0f701e6e5 100644 --- a/apps/include/modbus/mbframe.h +++ b/apps/include/modbus/mbframe.h @@ -71,13 +71,13 @@ typedef void ( *pvMBFrameStart ) ( void ); typedef void ( *pvMBFrameStop ) ( void ); -typedef eMBErrorCode( *peMBFrameReceive ) ( UCHAR * pucRcvAddress, - UCHAR ** pucFrame, - USHORT * pusLength ); +typedef eMBErrorCode( *peMBFrameReceive ) ( uint8_t * pucRcvAddress, + uint8_t ** pucFrame, + uint16_t * pusLength ); -typedef eMBErrorCode( *peMBFrameSend ) ( UCHAR slaveAddress, - const UCHAR * pucFrame, - USHORT usLength ); +typedef eMBErrorCode( *peMBFrameSend ) ( uint8_t slaveAddress, + const uint8_t * pucFrame, + uint16_t usLength ); typedef void( *pvMBFrameClose ) ( void ); diff --git a/apps/include/modbus/mbfunc.h b/apps/include/modbus/mbfunc.h index d948ec72b..68ccdb1d9 100644 --- a/apps/include/modbus/mbfunc.h +++ b/apps/include/modbus/mbfunc.h @@ -35,43 +35,43 @@ PR_BEGIN_EXTERN_C #endif #ifdef CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF - eMBException eMBFuncReportSlaveID( UCHAR * pucFrame, USHORT * usLen ); + eMBException eMBFuncReportSlaveID( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_READ_INPUT_ENABLED -eMBException eMBFuncReadInputRegister( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncReadInputRegister( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_READ_HOLDING_ENABLED -eMBException eMBFuncReadHoldingRegister( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncReadHoldingRegister( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED -eMBException eMBFuncWriteHoldingRegister( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncWriteHoldingRegister( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED -eMBException eMBFuncWriteMultipleHoldingRegister( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncWriteMultipleHoldingRegister( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_READ_COILS_ENABLED -eMBException eMBFuncReadCoils( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncReadCoils( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_WRITE_COIL_ENABLED -eMBException eMBFuncWriteCoil( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncWriteCoil( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED -eMBException eMBFuncWriteMultipleCoils( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncWriteMultipleCoils( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED -eMBException eMBFuncReadDiscreteInputs( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncReadDiscreteInputs( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED -eMBException eMBFuncReadWriteMultipleHoldingRegister( UCHAR * pucFrame, USHORT * usLen ); +eMBException eMBFuncReadWriteMultipleHoldingRegister( uint8_t * pucFrame, uint16_t * usLen ); #endif #ifdef __cplusplus diff --git a/apps/include/modbus/mbport.h b/apps/include/modbus/mbport.h index 4f25a9644..e011c15bd 100644 --- a/apps/include/modbus/mbport.h +++ b/apps/include/modbus/mbport.h @@ -31,6 +31,9 @@ #ifndef _MB_PORT_H #define _MB_PORT_H +#include +#include + #ifdef __cplusplus PR_BEGIN_EXTERN_C #endif @@ -60,29 +63,29 @@ typedef enum } eMBParity; /* ----------------------- Supporting functions -----------------------------*/ -BOOL xMBPortEventInit( void ); +bool xMBPortEventInit( void ); -BOOL xMBPortEventPost( eMBEventType eEvent ); +bool xMBPortEventPost( eMBEventType eEvent ); -BOOL xMBPortEventGet( /*@out@ */ eMBEventType * eEvent ); +bool xMBPortEventGet( /*@out@ */ eMBEventType * eEvent ); /* ----------------------- Serial port functions ----------------------------*/ -BOOL xMBPortSerialInit( UCHAR ucPort, ULONG ulBaudRate, - UCHAR ucDataBits, eMBParity eParity ); +bool xMBPortSerialInit( uint8_t ucPort, uint32_t ulBaudRate, + uint8_t ucDataBits, eMBParity eParity ); void vMBPortClose( void ); void xMBPortSerialClose( void ); -void vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable ); +void vMBPortSerialEnable( bool xRxEnable, bool xTxEnable ); -BOOL xMBPortSerialGetByte( CHAR * pucByte ); +bool xMBPortSerialGetByte( int8_t * pucByte ); -BOOL xMBPortSerialPutByte( CHAR ucByte ); +bool xMBPortSerialPutByte( int8_t ucByte ); /* ----------------------- Timers functions ---------------------------------*/ -BOOL xMBPortTimersInit( USHORT usTimeOut50us ); +bool xMBPortTimersInit( uint16_t usTimeOut50us ); void xMBPortTimersClose( void ); @@ -90,7 +93,7 @@ void vMBPortTimersEnable( void ); void vMBPortTimersDisable( void ); -void vMBPortTimersDelay( USHORT usTimeOutMS ); +void vMBPortTimersDelay( uint16_t usTimeOutMS ); /* ----------------------- Callback for the protocol stack ------------------*/ @@ -102,26 +105,26 @@ void vMBPortTimersDelay( USHORT usTimeOutMS ); * ASCII transmission layers. In any case a call to xMBPortSerialGetByte() * must immediately return a new character. * - * \return TRUE if a event was posted to the queue because + * \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( *pxMBFrameCBByteReceived ) ( void ); -extern BOOL( *pxMBFrameCBTransmitterEmpty ) ( void ); +extern bool( *pxMBFrameCBTransmitterEmpty ) ( void ); -extern BOOL( *pxMBPortCBTimerExpired ) ( void ); +extern bool( *pxMBPortCBTimerExpired ) ( void ); /* ----------------------- TCP port functions -------------------------------*/ -BOOL xMBTCPPortInit( USHORT usTCPPort ); +bool xMBTCPPortInit( uint16_t usTCPPort ); void vMBTCPPortClose( void ); void vMBTCPPortDisable( void ); -BOOL xMBTCPPortGetRequest( UCHAR **ppucMBTCPFrame, USHORT * usTCPLength ); +bool xMBTCPPortGetRequest( uint8_t **ppucMBTCPFrame, uint16_t * usTCPLength ); -BOOL xMBTCPPortSendResponse( const UCHAR *pucMBTCPFrame, USHORT usTCPLength ); +bool xMBTCPPortSendResponse( const uint8_t *pucMBTCPFrame, uint16_t usTCPLength ); #ifdef __cplusplus PR_END_EXTERN_C diff --git a/apps/include/modbus/mbproto.h b/apps/include/modbus/mbproto.h index 786aaf403..24b0c98e7 100644 --- a/apps/include/modbus/mbproto.h +++ b/apps/include/modbus/mbproto.h @@ -69,11 +69,11 @@ PR_BEGIN_EXTERN_C MB_EX_GATEWAY_TGT_FAILED = 0x0B } eMBException; -typedef eMBException( *pxMBFunctionHandler ) ( UCHAR * pucFrame, USHORT * pusLength ); +typedef eMBException( *pxMBFunctionHandler ) ( uint8_t * pucFrame, uint16_t * pusLength ); typedef struct { - UCHAR ucFunctionCode; + uint8_t ucFunctionCode; pxMBFunctionHandler pxHandler; } xMBFunctionHandler; diff --git a/apps/include/modbus/mbutils.h b/apps/include/modbus/mbutils.h index 61495751d..5f17376cc 100644 --- a/apps/include/modbus/mbutils.h +++ b/apps/include/modbus/mbutils.h @@ -75,8 +75,8 @@ PR_BEGIN_EXTERN_C * xMBUtilSetBits( ucBits, 8, 8, 0x5A); * \endcode */ -void xMBUtilSetBits( UCHAR * ucByteBuf, USHORT usBitOffset, - UCHAR ucNBits, UCHAR ucValues ); +void xMBUtilSetBits( uint8_t * ucByteBuf, uint16_t usBitOffset, + uint8_t ucNBits, uint8_t ucValues ); /*! \brief Function to read bits in a byte buffer. * @@ -90,15 +90,15 @@ void xMBUtilSetBits( UCHAR * ucByteBuf, USHORT usBitOffset, * than 8. * * \code - * UCHAR ucBits[2] = {0, 0}; - * UCHAR ucResult; + * uint8_t ucBits[2] = {0, 0}; + * uint8_t ucResult; * * // Extract the bits 3 - 10. * ucResult = xMBUtilGetBits( ucBits, 3, 8 ); * \endcode */ -UCHAR xMBUtilGetBits( UCHAR * ucByteBuf, USHORT usBitOffset, - UCHAR ucNBits ); +uint8_t xMBUtilGetBits( uint8_t * ucByteBuf, uint16_t usBitOffset, + uint8_t ucNBits ); /*! @} */ -- cgit v1.2.3