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
This commit is contained in:
patacongo
2012-07-21 21:23:18 +00:00
parent 8710555aef
commit 2131203d8b
9 changed files with 303 additions and 3 deletions
+2 -1
View File
@@ -3033,5 +3033,6 @@
and some pin configuration. This would have caused problems for STM32 F107xx. and some pin configuration. This would have caused problems for STM32 F107xx.
Typos noted by Mike Smith. Typos noted by Mike Smith.
* arch/arm/src/lpc43xx/lpc43_serial.c: Add support for certain RS-485 features * arch/arm/src/lpc43xx/lpc43_serial.c: Add support for certain RS-485 features
in the serial driver (still a work in progress on initial check-in). * lib/termios/lib_cfsetispeed.c, lib_cfsetospeed.c, lib_tcflush.c: Add
simple implementations of cfsetispeed(), cfsetospeed(), and tcflush().
+7
View File
@@ -514,6 +514,13 @@
<li><a href="NuttxPortingGuide.html#pwrmgmt">Power management</a> sub-system.</li> <li><a href="NuttxPortingGuide.html#pwrmgmt">Power management</a> sub-system.</li>
</p> </p>
</tr> </tr>
<tr>
<td><br></td>
<td>
<p>
<li>ModBus support provided by built-in <a href="http://freemodbus.berlios.de/">FreeModBus</a> version 1.5.0.</li>
</p>
</tr>
<tr> <tr>
<td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td> <td valign="top" width="22"><img height="20" width="20" src="favicon.ico"></td>
+10
View File
@@ -58,6 +58,12 @@ CONFIGURED_APPS += netutils/telnetd
endif endif
endif endif
# FreeModBus library
ifeq ($(CONFIG_MODBUS),y)
CONFIGURED_APPS += modbus
endif
# Applications configured as an NX built-in commands # Applications configured as an NX built-in commands
ifeq ($(CONFIG_ADC),y) ifeq ($(CONFIG_ADC),y)
@@ -80,6 +86,10 @@ ifeq ($(CONFIG_WATCHDOG),y)
CONFIGURED_APPS += examples/watchdog CONFIGURED_APPS += examples/watchdog
endif endif
ifeq ($(CONFIG_MODBUS),y)
CONFIGURED_APPS += examples/modbus
endif
# Uncomment examples/ftpc to include the FTP client example # Uncomment examples/ftpc to include the FTP client example
# Uncomment examples/ftpd to include the FTP daemon example # Uncomment examples/ftpd to include the FTP daemon example
+1 -1
View File
@@ -492,7 +492,7 @@ CONFIG_DISABLE_SIGNALS=n
CONFIG_DISABLE_MQUEUE=n CONFIG_DISABLE_MQUEUE=n
CONFIG_DISABLE_MOUNTPOINT=n CONFIG_DISABLE_MOUNTPOINT=n
CONFIG_DISABLE_ENVIRON=n CONFIG_DISABLE_ENVIRON=n
CONFIG_DISABLE_POLL=y CONFIG_DISABLE_POLL=n
# #
# Misc libc settings # Misc libc settings
+4
View File
@@ -110,6 +110,10 @@
#define HUPCL (1 << 6) /* Hang up on last close */ #define HUPCL (1 << 6) /* Hang up on last close */
#define CLOCAL (1 << 7) /* Ignore modem status lines */ #define CLOCAL (1 << 7) /* Ignore modem status lines */
#define CBAUD (0x1f << 8) /* Baud mask (not POSIX) */
#define CBAUDEX (0x10 << 8) /* Extra speed mask (not POSIX) */
#define _CBAUD_SHIFT 8 /* So that we all agree where the baud code is stored */
/* Local Modes (c_lflag in the termios structure) */ /* Local Modes (c_lflag in the termios structure) */
#define ECHO (1 << 0) /* Enable echo */ #define ECHO (1 << 0) /* Enable echo */
+3 -1
View File
@@ -36,5 +36,7 @@
TERMIOS_SRCS = TERMIOS_SRCS =
ifneq ($(CONFIG_NFILE_DESCRIPTORS),0) ifneq ($(CONFIG_NFILE_DESCRIPTORS),0)
TERMIOS_SRCS += lib_tcgetattr.c lib_tcsetattr.c TERMIOS_SRCS += lib_cfgetispeed.c lib_cfgetospeed.c lib_cfsetispeed.c
TERMIOS_SRCS += lib_cfsetospeed.c lib_tcflush.c lib_tcgetattr.c
TERMIOS_SRCS += lib_tcsetattr.c
endif endif
+93
View File
@@ -0,0 +1,93 @@
/****************************************************************************
* lib/termios/lib_cfsetispeed.c
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <sys/types.h>
#include <termios.h>
#include <assert.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Private Variables
****************************************************************************/
/****************************************************************************
* Public Variables
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: cfsetispeed
*
* Descripton:
* The cfsetispeed() function sets the input baud rate stored in the
* structure pointed to by termios_p to speed.
*
* There is no effect on the baud rates set in the hardware until a
* subsequent successful call to tcsetattr() on the same termios structure.
*
* NOTE: NuttX does not no control input/output baud rates independently
* This function is *identical* to cfsetospeed
*
* Input Parameters:
* termiosp - The termiosp argument is a pointer to a termios structure.
* speed - The new input speed
*
* Returned Value:
* Baud is not checked... OK is always returned.
*
****************************************************************************/
int cfsetispeed(struct termios *termios_p, speed_t speed)
{
DEBUGASSERT(termios_p);
termios_p->c_cflag &= ~CBAUD;
termios_p->c_cflag |= ((tcflag_t)speed << _CBAUD_SHIFT);
return OK;
}
+93
View File
@@ -0,0 +1,93 @@
/****************************************************************************
* lib/termios/lib_cfsetospeed.c
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <sys/types.h>
#include <termios.h>
#include <assert.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Private Variables
****************************************************************************/
/****************************************************************************
* Public Variables
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: cfsetospeed
*
* Descripton:
* The cfsetospeed() function sets the output baud rate stored in the
* structure pointed to by termios_p to speed.
*
* There is no effect on the baud rates set in the hardware until a
* subsequent successful call to tcsetattr() on the same termios structure.
*
* NOTE: NuttX does not no control input/output baud rates independently
* This function is *identical* to cfsetispeed
*
* Input Parameters:
* termiosp - The termiosp argument is a pointer to a termios structure.
* speed - The new output speed
*
* Returned Value:
* Baud is not checked... OK is always returned.
*
****************************************************************************/
int cfsetospeed(struct termios *termios_p, speed_t speed)
{
DEBUGASSERT(termios_p);
termios_p->c_cflag &= ~CBAUD;
termios_p->c_cflag |= ((tcflag_t)speed << _CBAUD_SHIFT);
return OK;
}
+90
View File
@@ -0,0 +1,90 @@
/****************************************************************************
* lib/termios/lib_tcflush.c
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <errno.h>
#include <nuttx/serial/tioctl.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Private Variables
****************************************************************************/
/****************************************************************************
* Public Variables
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: tcflush
*
* Descripton:
* Function for flushing a terminal/serial device
*
* Input Parameters:
* fd - The 'fd' argument is an open file descriptor associated with a terminal.
* cmd - The TCFLSH ioctl argument.
*
* Returned Value:
* Upon successful completion, 0 is returned. Otherwise, -1 is returned and
* errno is set to indicate the error.
*
****************************************************************************/
int tcflush(int fd, int cmd)
{
/* Not yet implemented */
return ioctl(fd, TCFLSH, (unsigned long)cmd);
}