From 358240268d2ed3c3b44ba67d3c426c06a7bb2ea2 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 21 Jul 2012 15:33:53 +0000 Subject: [PATCH] Add FreeModBus to NuttX build system git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4962 7fd9a85b-ad96-42d3-883c-3090e2eb8679 --- apps/Makefile | 3 +- apps/modbus/Kconfig | 4 + apps/modbus/Make.defs | 40 +++++++ apps/modbus/Makefile | 112 ++++++++++++++++++ apps/modbus/README.txt | 40 ++++--- apps/modbus/ascii/Make.defs | 44 +++++++ apps/modbus/functions/Make.defs | 41 +++++++ apps/modbus/nuttx/Make.defs | 40 +++++++ apps/modbus/rtu/Make.defs | 44 +++++++ apps/modbus/tcp/Make.defs | 44 +++++++ nuttx/configs/lpc4330-xplorer/nsh/defconfig | 66 +++++++++++ .../configs/lpc4330-xplorer/ostest/defconfig | 66 +++++++++++ 12 files changed, 529 insertions(+), 15 deletions(-) create mode 100644 apps/modbus/Make.defs create mode 100644 apps/modbus/Makefile create mode 100644 apps/modbus/ascii/Make.defs create mode 100644 apps/modbus/functions/Make.defs create mode 100644 apps/modbus/nuttx/Make.defs create mode 100644 apps/modbus/rtu/Make.defs create mode 100644 apps/modbus/tcp/Make.defs diff --git a/apps/Makefile b/apps/Makefile index 86e973441c..3a59fd6b44 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -49,7 +49,7 @@ APPDIR = ${shell pwd} # list can be extended by the .config file as well CONFIGURED_APPS = -SUBDIRS = examples graphics interpreters namedapp nshlib netutils system vsn +SUBDIRS = examples graphics interpreters modbus namedapp nshlib netutils system vsn # There are two different mechanisms for obtaining the list of configured # directories: @@ -73,6 +73,7 @@ ifeq ($(CONFIG_NUTTX_NEWCONFIG),y) include examples/Make.defs include graphics/Make.defs include interpreters/Make.defs +include modbus/Make.defs include namedapp/Make.defs include netutils/Make.defs include nshlib/Make.defs diff --git a/apps/modbus/Kconfig b/apps/modbus/Kconfig index 8394669300..da95abf6ac 100644 --- a/apps/modbus/Kconfig +++ b/apps/modbus/Kconfig @@ -5,6 +5,10 @@ comment "FreeModbus" +config MODBUS + bool "Modbus support via FreeModBus" + default n + config MB_ASCII_ENABLED bool "Modbus ASCII support" depends on MODBUS diff --git a/apps/modbus/Make.defs b/apps/modbus/Make.defs new file mode 100644 index 0000000000..a1165c1bdc --- /dev/null +++ b/apps/modbus/Make.defs @@ -0,0 +1,40 @@ +############################################################################ +# apps/modbus/Make.defs +# Adds selected applications to apps/ build +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +if ($(CONFIG_MODBUS),y) +CONFIGURED_APPS += modbus +endif + diff --git a/apps/modbus/Makefile b/apps/modbus/Makefile new file mode 100644 index 0000000000..4852286074 --- /dev/null +++ b/apps/modbus/Makefile @@ -0,0 +1,112 @@ +############################################################################ +# apps/modbus/Makefile +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +-include $(TOPDIR)/.config +-include $(TOPDIR)/Make.defs +include $(APPDIR)/Make.defs + +# FreeModBus Library + +ASRCS = +CSRCS = + +ifeq ($(CONFIG_MODBUS),y) + +CSRCS += mb.c +DEPPATH = --dep-path . +VPATH = . + +include ascii/Make.defs +include functions/Make.defs +include nuttx/Make.defs +include rtu/Make.defs +include tcp/Make.defs + +endif + +AOBJS = $(ASRCS:.S=$(OBJEXT)) +COBJS = $(CSRCS:.c=$(OBJEXT)) + +SRCS = $(ASRCS) $(CSRCS) +OBJS = $(AOBJS) $(COBJS) + +ifeq ($(WINTOOL),y) + BIN = "${shell cygpath -w $(APPDIR)/libapps$(LIBEXT)}" +else + BIN = "$(APPDIR)/libapps$(LIBEXT)" +endif + +# Build targets + +all: .built +.PHONY: context .depend depend clean distclean + +ifeq ($(CONFIG_MODBUS),y) + +$(AOBJS): %$(OBJEXT): %.S + $(call ASSEMBLE, $<, $@) + +$(COBJS): %$(OBJEXT): %.c + $(call COMPILE, $<, $@) +endif + +.built: $(OBJS) +ifeq ($(CONFIG_MODBUS),y) + @( for obj in $(OBJS) ; do \ + $(call ARCHIVE, $(BIN), $${obj}); \ + done ; ) + @touch .built +endif + +context: + +.depend: Makefile $(SRCS) +ifeq ($(CONFIG_MODBUS),y) + @$(MKDEP) $(DEPPATH) \ + $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep + @touch $@ +endif + +depend: .depend + +clean: + @rm -f *.o *~ .*.swp .built + $(call CLEAN) + +distclean: clean + @rm -f Make.dep .depend + +-include Make.dep + diff --git a/apps/modbus/README.txt b/apps/modbus/README.txt index da9b42fd4e..1f2c9c3eb0 100644 --- a/apps/modbus/README.txt +++ b/apps/modbus/README.txt @@ -56,6 +56,7 @@ was integrated into the NuttX configuration system. The NuttX-named configuration options that are available include: + CONFIG_MODBUS - General ModBus support CONFIG_MB_ASCII_ENABLED - Modbus ASCII support CONFIG_MB_RTU_ENABLED - Modbus RTU support CONFIG_MB_TCP_ENABLED - Modbus TCP support @@ -70,25 +71,36 @@ The NuttX-named configuration options that are available include: required because some targets are so fast that there is no time between receiving and transmitting the frame. If the master is to slow with enabling its receiver then he will not receive the response correctly. - CONFIG_MB_FUNC_HANDLERS_MAX - Maximum number of Modbus functions codes the protocol stack should support. The maximum number of supported Modbus functions must be greater than the sum of all enabled functions in this file and custom function handlers. If set to small adding more functions will fail. - - CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF - Number of bytes which should be allocated for the Report Slave ID command. This number limits the maximum size of the additional segment in the report slave id function. See eMBSetSlaveID() for more information on how to set this value. It is only used if CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED is set to 1. - - CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED - If the Report Slave ID function should be enabled. - CONFIG_MB_FUNC_READ_INPUT_ENABLED - If the Read Input Registers function should be enabled. - CONFIG_MB_FUNC_READ_HOLDING_ENABLED - If the Read Holding Registers function should be enabled. - CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED - If the Write Single Register function should be enabled. - CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED - If the Write Multiple registers function should be enabled. - CONFIG_MB_FUNC_READ_COILS_ENABLED - If the Read Coils function should be enabled. - CONFIG_MB_FUNC_WRITE_COIL_ENABLED - If the Write Coils function should be enabled. - CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED - If the Write Multiple Coils function should be enabled. - CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED - If the Read Discrete Inputs function should be enabled. - CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED - If the Read/Write Multiple Registers function should be enabled. + CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF - Number of bytes which should be + allocated for the Report Slave ID command. This number limits the + maximum size of the additional segment in the report slave id function. + See eMBSetSlaveID() for more information on how to set this value. It + is only used if CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED is set to 1. + CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED - If the Report Slave ID + function should be enabled. + CONFIG_MB_FUNC_READ_INPUT_ENABLED - If the Read Input Registers function + should be enabled. + CONFIG_MB_FUNC_READ_HOLDING_ENABLED - If the Read Holding Registers + function should be enabled. + CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED - If the Write Single Register + function should be enabled. + CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED - If the Write Multiple + registers function should be enabled. + CONFIG_MB_FUNC_READ_COILS_ENABLED - If the Read Coils function should + be enabled. + CONFIG_MB_FUNC_WRITE_COIL_ENABLED - If the Write Coils function should + be enabled. + CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED - If the Write Multiple Coils + function should be enabled. + CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED - If the Read Discrete Inputs + function should be enabled. + CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED - If the Read/Write Multiple + Registers function should be enabled. Note ==== diff --git a/apps/modbus/ascii/Make.defs b/apps/modbus/ascii/Make.defs new file mode 100644 index 0000000000..263134f1c3 --- /dev/null +++ b/apps/modbus/ascii/Make.defs @@ -0,0 +1,44 @@ +############################################################################ +# apps/modbus/functions/Make.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +ifeq ($(MB_ASCII_ENABLED),y) + +CSRCS += mbascii.c + +DEPPATH += --dep-path ascii +VPATH += :ascii +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(APPDIR)/modbus/ascii} + +endif diff --git a/apps/modbus/functions/Make.defs b/apps/modbus/functions/Make.defs new file mode 100644 index 0000000000..48f60d5060 --- /dev/null +++ b/apps/modbus/functions/Make.defs @@ -0,0 +1,41 @@ +############################################################################ +# apps/modbus/nuttx/Make.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +CSRCS += mbfunccoils.c mbfuncdiag.c mbfuncdisc.c mbfuncholding.c +CSRCS += mbfuncinput.c mbfuncother.c mbutils.c + +DEPPATH += --dep-path functions +VPATH += :functions +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(APPDIR)/modbus/functions} diff --git a/apps/modbus/nuttx/Make.defs b/apps/modbus/nuttx/Make.defs new file mode 100644 index 0000000000..96484217b3 --- /dev/null +++ b/apps/modbus/nuttx/Make.defs @@ -0,0 +1,40 @@ +############################################################################ +# apps/modbus/nuttx/Make.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +CSRCS += portevent.c portother.c portserial.c porttimer.c + +DEPPATH += --dep-path nuttx +VPATH += :nuttx +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(APPDIR)/modbus/nuttx} diff --git a/apps/modbus/rtu/Make.defs b/apps/modbus/rtu/Make.defs new file mode 100644 index 0000000000..bb1b46c305 --- /dev/null +++ b/apps/modbus/rtu/Make.defs @@ -0,0 +1,44 @@ +############################################################################ +# apps/modbus/rtu/Make.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +ifeq ($(MB_RTU_ENABLED),y) + +CSRCS += mbcrc.c mbrtu.c + +DEPPATH += --dep-path rtu +VPATH += :rtu +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(APPDIR)/modbus/rtu} + +endif diff --git a/apps/modbus/tcp/Make.defs b/apps/modbus/tcp/Make.defs new file mode 100644 index 0000000000..93d4a2be01 --- /dev/null +++ b/apps/modbus/tcp/Make.defs @@ -0,0 +1,44 @@ +############################################################################ +# apps/modbus/tcp/Make.defs +# +# Copyright (C) 2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. +# +############################################################################ + +ifeq ($(MB_TCP_ENABLED),y) + +CSRCS += mbtcp.c + +DEPPATH += --dep-path tcp +VPATH += :tcp +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(APPDIR)/modbus/tcp} + +endif diff --git a/nuttx/configs/lpc4330-xplorer/nsh/defconfig b/nuttx/configs/lpc4330-xplorer/nsh/defconfig index 5547bca154..417ddf5836 100644 --- a/nuttx/configs/lpc4330-xplorer/nsh/defconfig +++ b/nuttx/configs/lpc4330-xplorer/nsh/defconfig @@ -771,6 +771,72 @@ CONFIG_NET_RESOLV_ENTRIES=4 # CONFIG_FTPD_CMDBUFFERSIZE=2048 +# +# CONFIG_MODBUS - General ModBus support +# CONFIG_MB_ASCII_ENABLED - Modbus ASCII support +# CONFIG_MB_RTU_ENABLED - Modbus RTU support +# CONFIG_MB_TCP_ENABLED - Modbus TCP support +# CONFIG_MB_ASCII_TIMEOUT_SEC - Character timeout value for Modbus ASCII. The +# character timeout value is not fixed for Modbus ASCII and is therefore +# a configuration option. It should be set to the maximum expected delay +# time of the network. Default 1 +# CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS - Timeout to wait in ASCII prior +# to enabling transmitter. If defined the function calls +# vMBPortSerialDelay with the argument CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS +# to allow for a delay before the serial transmitter is enabled. This is +# required because some targets are so fast that there is no time between +# receiving and transmitting the frame. If the master is to slow with +# enabling its receiver then he will not receive the response correctly. +# CONFIG_MB_FUNC_HANDLERS_MAX - Maximum number of Modbus functions codes the +# protocol stack should support. The maximum number of supported Modbus +# functions must be greater than the sum of all enabled functions in this +# file and custom function handlers. If set to small adding more functions +# will fail. +# CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF - Number of bytes which should be +# allocated for the Report Slave ID command. This number limits the +# maximum size of the additional segment in the report slave id function. +# See eMBSetSlaveID() for more information on how to set this value. It +# is only used if CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED is set to 1. +# CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED - If the Report Slave ID +# function should be enabled. +# CONFIG_MB_FUNC_READ_INPUT_ENABLED - If the Read Input Registers function +# should be enabled. +# CONFIG_MB_FUNC_READ_HOLDING_ENABLED - If the Read Holding Registers +# function should be enabled. +# CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED - If the Write Single Register +# function should be enabled. +# CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED - If the Write Multiple +# registers function should be enabled. +# CONFIG_MB_FUNC_READ_COILS_ENABLED - If the Read Coils function should +# be enabled. +# CONFIG_MB_FUNC_WRITE_COIL_ENABLED - If the Write Coils function should +# be enabled. +# CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED - If the Write Multiple Coils +# function should be enabled. +# CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED - If the Read Discrete Inputs +# function should be enabled. +# CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED - If the Read/Write Multiple +# Registers function should be enabled. +# +CONFIG_MODBUS=n +CONFIG_MB_ASCII_ENABLED=y +CONFIG_MB_RTU_ENABLED=y +CONFIG_MB_TCP_ENABLED=n +CONFIG_MB_ASCII_TIMEOUT_SEC=1 +CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS=0 +CONFIG_MB_FUNC_HANDLERS_MAX=16 +CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF=32 +CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED=y +CONFIG_MB_FUNC_READ_INPUT_ENABLED=y +CONFIG_MB_FUNC_READ_HOLDING_ENABLED=y +CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED=y +CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED=y +CONFIG_MB_FUNC_READ_COILS_ENABLED=y +CONFIG_MB_FUNC_WRITE_COIL_ENABLED=y +CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED=y +CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED=y +CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED=y + # # USB Device Configuration # diff --git a/nuttx/configs/lpc4330-xplorer/ostest/defconfig b/nuttx/configs/lpc4330-xplorer/ostest/defconfig index 037a33daff..ddf27ee72f 100644 --- a/nuttx/configs/lpc4330-xplorer/ostest/defconfig +++ b/nuttx/configs/lpc4330-xplorer/ostest/defconfig @@ -741,6 +741,72 @@ CONFIG_NET_RESOLV_ENTRIES=4 # CONFIG_FTPD_CMDBUFFERSIZE=2048 +# +# CONFIG_MODBUS - General ModBus support +# CONFIG_MB_ASCII_ENABLED - Modbus ASCII support +# CONFIG_MB_RTU_ENABLED - Modbus RTU support +# CONFIG_MB_TCP_ENABLED - Modbus TCP support +# CONFIG_MB_ASCII_TIMEOUT_SEC - Character timeout value for Modbus ASCII. The +# character timeout value is not fixed for Modbus ASCII and is therefore +# a configuration option. It should be set to the maximum expected delay +# time of the network. Default 1 +# CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS - Timeout to wait in ASCII prior +# to enabling transmitter. If defined the function calls +# vMBPortSerialDelay with the argument CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS +# to allow for a delay before the serial transmitter is enabled. This is +# required because some targets are so fast that there is no time between +# receiving and transmitting the frame. If the master is to slow with +# enabling its receiver then he will not receive the response correctly. +# CONFIG_MB_FUNC_HANDLERS_MAX - Maximum number of Modbus functions codes the +# protocol stack should support. The maximum number of supported Modbus +# functions must be greater than the sum of all enabled functions in this +# file and custom function handlers. If set to small adding more functions +# will fail. +# CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF - Number of bytes which should be +# allocated for the Report Slave ID command. This number limits the +# maximum size of the additional segment in the report slave id function. +# See eMBSetSlaveID() for more information on how to set this value. It +# is only used if CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED is set to 1. +# CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED - If the Report Slave ID +# function should be enabled. +# CONFIG_MB_FUNC_READ_INPUT_ENABLED - If the Read Input Registers function +# should be enabled. +# CONFIG_MB_FUNC_READ_HOLDING_ENABLED - If the Read Holding Registers +# function should be enabled. +# CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED - If the Write Single Register +# function should be enabled. +# CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED - If the Write Multiple +# registers function should be enabled. +# CONFIG_MB_FUNC_READ_COILS_ENABLED - If the Read Coils function should +# be enabled. +# CONFIG_MB_FUNC_WRITE_COIL_ENABLED - If the Write Coils function should +# be enabled. +# CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED - If the Write Multiple Coils +# function should be enabled. +# CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED - If the Read Discrete Inputs +# function should be enabled. +# CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED - If the Read/Write Multiple +# Registers function should be enabled. +# +CONFIG_MODBUS=n +CONFIG_MB_ASCII_ENABLED=y +CONFIG_MB_RTU_ENABLED=y +CONFIG_MB_TCP_ENABLED=n +CONFIG_MB_ASCII_TIMEOUT_SEC=1 +CONFIG_MB_ASCII_TIMEOUT_WAIT_BEFORE_SEND_MS=0 +CONFIG_MB_FUNC_HANDLERS_MAX=16 +CONFIG_MB_FUNC_OTHER_REP_SLAVEID_BUF=32 +CONFIG_MB_FUNC_OTHER_REP_SLAVEID_ENABLED=y +CONFIG_MB_FUNC_READ_INPUT_ENABLED=y +CONFIG_MB_FUNC_READ_HOLDING_ENABLED=y +CONFIG_MB_FUNC_WRITE_HOLDING_ENABLED=y +CONFIG_MB_FUNC_WRITE_MULTIPLE_HOLDING_ENABLED=y +CONFIG_MB_FUNC_READ_COILS_ENABLED=y +CONFIG_MB_FUNC_WRITE_COIL_ENABLED=y +CONFIG_MB_FUNC_WRITE_MULTIPLE_COILS_ENABLED=y +CONFIG_MB_FUNC_READ_DISCRETE_INPUTS_ENABLED=y +CONFIG_MB_FUNC_READWRITE_HOLDING_ENABLED=y + # # USB Device Configuration #