Feature/makefile add apps library (#218)
* add BACnet stack library at apps/lib * convert apps to use apps/lib for smaller binary * fix -DBACDL_ALL=1 build * fix piface build * datalink MAX_MPDU and MAX_HEADER cleanup * add bip6 to git workflow * fix system library dependency of BACnet library Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
@@ -93,6 +93,20 @@ jobs:
|
|||||||
make clean
|
make clean
|
||||||
make router-mstp
|
make router-mstp
|
||||||
|
|
||||||
|
bip6:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Create Build Environment
|
||||||
|
run: |
|
||||||
|
sudo apt-get update -qq
|
||||||
|
sudo apt-get install -qq libconfig-dev
|
||||||
|
- name: Build BACnet/IPv6 Demos
|
||||||
|
run: |
|
||||||
|
gcc --version
|
||||||
|
make clean
|
||||||
|
make bip6
|
||||||
|
|
||||||
mstp:
|
mstp:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -67,3 +67,6 @@ CMakeLists.txt.user
|
|||||||
/out/*
|
/out/*
|
||||||
Obj/
|
Obj/
|
||||||
Release/
|
Release/
|
||||||
|
apps/piface/libmcp23s17/
|
||||||
|
apps/piface/libpifacedigital/
|
||||||
|
|
||||||
|
|||||||
@@ -23,27 +23,37 @@ mstpwin32:
|
|||||||
|
|
||||||
.PHONY: mstp
|
.PHONY: mstp
|
||||||
mstp:
|
mstp:
|
||||||
$(MAKE) BACDL=mstp -C apps all
|
$(MAKE) BACDL=mstp -s -C apps all
|
||||||
|
|
||||||
.PHONY: bip6-win32
|
.PHONY: bip6-win32
|
||||||
bip6-win32:
|
bip6-win32:
|
||||||
$(MAKE) BACDL=bip6 BACNET_PORT=win32 -C apps all
|
$(MAKE) BACDL=bip6 BACNET_PORT=win32 -s -C apps all
|
||||||
|
|
||||||
.PHONY: bip6
|
.PHONY: bip6
|
||||||
bip6:
|
bip6:
|
||||||
$(MAKE) BACDL=bip6 -C apps all
|
$(MAKE) BACDL=bip6 -s -C apps all
|
||||||
|
|
||||||
.PHONY: ethernet
|
.PHONY: ethernet
|
||||||
ethernet:
|
ethernet:
|
||||||
$(MAKE) BACDL=ethernet -C apps all
|
$(MAKE) BACDL=ethernet -s -C apps all
|
||||||
|
|
||||||
.PHONY: apps
|
.PHONY: apps
|
||||||
apps:
|
apps:
|
||||||
$(MAKE) -s -C apps all
|
$(MAKE) -s -C apps all
|
||||||
|
|
||||||
|
.PHONY: lib
|
||||||
|
lib:
|
||||||
|
$(MAKE) -s -C apps $@
|
||||||
|
|
||||||
.PHONY: cmake
|
.PHONY: cmake
|
||||||
cmake:
|
cmake:
|
||||||
mkdir build && cd build && cmake .. -DBUILD_SHARED_LIBS=ON && cmake --build . --clean-first
|
CMAKE_BUILD_DIR=build
|
||||||
|
[ -d $(CMAKE_BUILD_DIR) ] || mkdir -p $(CMAKE_BUILD_DIR)
|
||||||
|
[ -d $(CMAKE_BUILD_DIR) ] && cd $(CMAKE_BUILD_DIR) && cmake .. -DBUILD_SHARED_LIBS=ON && cmake --build . --clean-first
|
||||||
|
|
||||||
|
.PHONY: cmake-test
|
||||||
|
cmake-test:
|
||||||
|
[ -d $(CMAKE_BUILD_DIR) ] && $(MAKE) -s -C build test
|
||||||
|
|
||||||
.PHONY: abort
|
.PHONY: abort
|
||||||
abort:
|
abort:
|
||||||
@@ -83,7 +93,7 @@ gateway:
|
|||||||
|
|
||||||
.PHONY: gateway-win32
|
.PHONY: gateway-win32
|
||||||
gateway-win32:
|
gateway-win32:
|
||||||
$(MAKE) BACNET_PORT=win32 -C apps gateway
|
$(MAKE) BACNET_PORT=win32 -s -C apps gateway
|
||||||
|
|
||||||
.PHONY: readbdt
|
.PHONY: readbdt
|
||||||
readbdt:
|
readbdt:
|
||||||
@@ -115,7 +125,7 @@ uevent:
|
|||||||
|
|
||||||
.PHONY: whois
|
.PHONY: whois
|
||||||
whois:
|
whois:
|
||||||
$(MAKE) -C apps $@
|
$(MAKE) -s -C apps $@
|
||||||
|
|
||||||
.PHONY: writepropm
|
.PHONY: writepropm
|
||||||
writepropm:
|
writepropm:
|
||||||
@@ -148,11 +158,11 @@ at91sam7s: ports/at91sam7s/Makefile
|
|||||||
|
|
||||||
.PHONY: stm32f10x
|
.PHONY: stm32f10x
|
||||||
stm32f10x: ports/stm32f10x/Makefile
|
stm32f10x: ports/stm32f10x/Makefile
|
||||||
$(MAKE) -C ports/stm32f10x clean all
|
$(MAKE) -s -C ports/stm32f10x clean all
|
||||||
|
|
||||||
.PHONY: stm32f4xx
|
.PHONY: stm32f4xx
|
||||||
stm32f4xx: ports/stm32f4xx/Makefile
|
stm32f4xx: ports/stm32f4xx/Makefile
|
||||||
$(MAKE) -C ports/stm32f4xx clean all
|
$(MAKE) -s -C ports/stm32f4xx clean all
|
||||||
|
|
||||||
.PHONY: mstpsnap
|
.PHONY: mstpsnap
|
||||||
mstpsnap: ports/linux/mstpsnap.mak
|
mstpsnap: ports/linux/mstpsnap.mak
|
||||||
|
|||||||
+101
-124
@@ -11,6 +11,12 @@
|
|||||||
BACNET_DEFINES ?=
|
BACNET_DEFINES ?=
|
||||||
BACNET_LIB ?=
|
BACNET_LIB ?=
|
||||||
|
|
||||||
|
# BACnet Library
|
||||||
|
BACNET_LIB_DIR = $(realpath lib)
|
||||||
|
BACNET_LIB_NAME = bacnet
|
||||||
|
BACNET_LIB_TARGET = $(BACNET_LIB_DIR)/lib$(BACNET_LIB_NAME).a
|
||||||
|
BACNET_LIB=-L$(BACNET_LIB_DIR),-l$(BACNET_LIB_NAME)
|
||||||
|
|
||||||
# choose a datalink to build the example applications
|
# choose a datalink to build the example applications
|
||||||
# Use BACDL=mstp or BACDL=bip and BBMD=server when invoking make
|
# Use BACDL=mstp or BACDL=bip and BBMD=server when invoking make
|
||||||
|
|
||||||
@@ -113,90 +119,19 @@ BACNET_DEFINES += -DBACNET_PROTOCOL_REVISION=17
|
|||||||
# put all the flags together
|
# put all the flags together
|
||||||
INCLUDES = -I$(BACNET_SRC_DIR) -I$(BACNET_PORT_DIR)
|
INCLUDES = -I$(BACNET_SRC_DIR) -I$(BACNET_PORT_DIR)
|
||||||
CFLAGS += $(WARNINGS) $(DEBUGGING) $(OPTIMIZATION) $(BACNET_DEFINES) $(INCLUDES)
|
CFLAGS += $(WARNINGS) $(DEBUGGING) $(OPTIMIZATION) $(BACNET_DEFINES) $(INCLUDES)
|
||||||
LFLAGS += -Wl,$(SYSTEM_LIB)
|
|
||||||
ifneq (${BACNET_LIB},)
|
ifneq (${BACNET_LIB},)
|
||||||
LFLAGS += -Wl,$(BACNET_LIB)
|
LFLAGS += -Wl,$(BACNET_LIB)
|
||||||
endif
|
endif
|
||||||
|
# BACnet library depends on system flags.
|
||||||
|
# System flags must go after BACnet library flags.
|
||||||
|
LFLAGS += -Wl,$(SYSTEM_LIB)
|
||||||
# GCC dead code removal
|
# GCC dead code removal
|
||||||
CFLAGS += -ffunction-sections -fdata-sections
|
CFLAGS += -ffunction-sections -fdata-sections
|
||||||
LFLAGS += -Wl,--gc-sections
|
LFLAGS += -Wl,--gc-sections
|
||||||
|
|
||||||
PORT_ARCNET_SRC = \
|
|
||||||
$(BACNET_PORT_DIR)/arcnet.c
|
|
||||||
|
|
||||||
PORT_MSTP_SRC = \
|
|
||||||
$(BACNET_PORT_DIR)/rs485.c \
|
|
||||||
$(BACNET_PORT_DIR)/dlmstp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/mstp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/mstptext.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/crc.c
|
|
||||||
|
|
||||||
PORT_ETHERNET_SRC = \
|
|
||||||
$(BACNET_PORT_DIR)/ethernet.c
|
|
||||||
|
|
||||||
PORT_BIP_SRC = \
|
|
||||||
$(BACNET_PORT_DIR)/bip-init.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/bbmd/h_bbmd.c
|
|
||||||
|
|
||||||
PORT_BIP6_SRC = \
|
|
||||||
$(BACNET_PORT_DIR)/bip6.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/bbmd6/h_bbmd6.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/bbmd6/vmac.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc6.c
|
|
||||||
|
|
||||||
PORT_ALL_SRC = \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/datalink.c \
|
|
||||||
$(PORT_ARCNET_SRC) \
|
|
||||||
$(PORT_MSTP_SRC) \
|
|
||||||
$(PORT_ETHERNET_SRC) \
|
|
||||||
$(PORT_BIP_SRC) \
|
|
||||||
$(PORT_BIP6_SRC)
|
|
||||||
|
|
||||||
PORT_NONE_SRC = \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/datalink.c
|
|
||||||
|
|
||||||
ifeq (${BACDL_DEFINE},-DBACDL_BIP=1)
|
|
||||||
BACNET_PORT_SRC = ${PORT_BIP_SRC}
|
|
||||||
endif
|
|
||||||
ifeq (${BACDL_DEFINE},-DBACDL_BIP6=1)
|
|
||||||
BACNET_PORT_SRC = ${PORT_BIP6_SRC}
|
|
||||||
endif
|
|
||||||
ifeq (${BACDL_DEFINE},-DBACDL_MSTP=1)
|
|
||||||
BACNET_PORT_SRC = ${PORT_MSTP_SRC}
|
|
||||||
endif
|
|
||||||
ifeq (${BACDL_DEFINE},-DBACDL_ARCNET=1)
|
|
||||||
BACNET_PORT_SRC = ${PORT_ARCNET_SRC}
|
|
||||||
endif
|
|
||||||
ifeq (${BACDL_DEFINE},-DBACDL_ETHERNET=1)
|
|
||||||
BACNET_PORT_SRC = ${PORT_ETHERNET_SRC}
|
|
||||||
endif
|
|
||||||
ifeq (${BACDL_DEFINE},-DBACDL_NONE=1)
|
|
||||||
BACNET_PORT_SRC = ${PORT_NONE_SRC}
|
|
||||||
endif
|
|
||||||
ifdef BACDL_ALL
|
|
||||||
BACNET_PORT_SRC = ${PORT_ALL_SRC}
|
|
||||||
endif
|
|
||||||
|
|
||||||
BACNET_PORT_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/datalink/dlenv.c \
|
|
||||||
$(BACNET_PORT_DIR)/mstimer-init.c \
|
|
||||||
$(BACNET_PORT_DIR)/datetime-init.c \
|
|
||||||
|
|
||||||
BACNET_SRC ?= \
|
|
||||||
$(wildcard $(BACNET_SRC_DIR)/bacnet/*.c) \
|
|
||||||
|
|
||||||
BACNET_BASIC_SRC ?= \
|
|
||||||
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/*.c) \
|
|
||||||
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/binding/*.c) \
|
|
||||||
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/sys/*.c) \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/npdu/h_npdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/npdu/s_router.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/tsm/tsm.c
|
|
||||||
|
|
||||||
.EXPORT_ALL_VARIABLES:
|
.EXPORT_ALL_VARIABLES:
|
||||||
|
|
||||||
SUBDIRS = readprop writeprop readfile writefile reinit server dcc \
|
SUBDIRS = lib readprop writeprop readfile writefile reinit server dcc \
|
||||||
whohas whois iam ucov scov timesync epics readpropm readrange \
|
whohas whois iam ucov scov timesync epics readpropm readrange \
|
||||||
writepropm uptransfer getevent uevent abort error event ack-alarm
|
writepropm uptransfer getevent uevent abort error event ack-alarm
|
||||||
|
|
||||||
@@ -225,13 +160,55 @@ $(TARGETS): %: $(patsubst %, %.%, $(SUBDIRS))
|
|||||||
$(foreach TGT, $(TARGETS), $(patsubst %, %.$(TGT), $(SUBDIRS))):
|
$(foreach TGT, $(TARGETS), $(patsubst %, %.$(TGT), $(SUBDIRS))):
|
||||||
$(MAKE) -b -C $(subst ., , $@)
|
$(MAKE) -b -C $(subst ., , $@)
|
||||||
|
|
||||||
|
.PHONY: lib
|
||||||
|
lib: lib/Makefile Makefile $(BACNET_LIB_TARGET)
|
||||||
|
|
||||||
|
$(BACNET_LIB_TARGET):
|
||||||
|
$(MAKE) -b -C lib
|
||||||
|
|
||||||
.PHONY: gateway
|
.PHONY: gateway
|
||||||
gateway:
|
gateway: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C gateway
|
$(MAKE) -b -C gateway
|
||||||
|
|
||||||
.PHONY: server
|
.PHONY: abort
|
||||||
server:
|
abort: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -s -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: ack-alarm
|
||||||
|
ack-alarm: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: dcc
|
||||||
|
dcc: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: epics
|
||||||
|
epics: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: error
|
||||||
|
error: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: event
|
||||||
|
event: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: getevent
|
||||||
|
getevent: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: iam
|
||||||
|
iam: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: iamrouter
|
||||||
|
iamrouter: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: initrouter
|
||||||
|
initrouter: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: mstpcap
|
.PHONY: mstpcap
|
||||||
mstpcap:
|
mstpcap:
|
||||||
@@ -241,79 +218,79 @@ mstpcap:
|
|||||||
mstpcrc:
|
mstpcrc:
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: abort
|
.PHONY: ptransfer
|
||||||
abort:
|
ptransfer: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: ack-alarm
|
.PHONY: readprop
|
||||||
ack-alarm:
|
readprop: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: dcc
|
.PHONY: readpropm
|
||||||
dcc:
|
readpropm: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
|
||||||
|
|
||||||
.PHONY: epics
|
|
||||||
epics:
|
|
||||||
$(MAKE) -b -C $@
|
|
||||||
|
|
||||||
.PHONY: error
|
|
||||||
error:
|
|
||||||
$(MAKE) -b -C $@
|
|
||||||
|
|
||||||
.PHONY: event
|
|
||||||
event:
|
|
||||||
$(MAKE) -b -C $@
|
|
||||||
|
|
||||||
.PHONY: getevent
|
|
||||||
getevent:
|
|
||||||
$(MAKE) -b -C $@
|
|
||||||
|
|
||||||
.PHONY: iam
|
|
||||||
iam:
|
|
||||||
$(MAKE) -b -C $@
|
|
||||||
|
|
||||||
.PHONY: iamrouter
|
|
||||||
iamrouter:
|
|
||||||
$(MAKE) -b -C $@
|
|
||||||
|
|
||||||
.PHONY: initrouter
|
|
||||||
initrouter:
|
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: readbdt
|
.PHONY: readbdt
|
||||||
readbdt:
|
readbdt: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: readfdt
|
.PHONY: readfdt
|
||||||
readfdt:
|
readfdt: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: readfile
|
||||||
|
readfile: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: readrange
|
||||||
|
readrange: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: reinit
|
||||||
|
reinit: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: scov
|
||||||
|
scov: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: server
|
||||||
|
server: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -s -b -C $@
|
||||||
|
|
||||||
|
.PHONY: timesync
|
||||||
|
timesync: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: uevent
|
.PHONY: uevent
|
||||||
uevent:
|
uevent: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -C $@
|
||||||
|
|
||||||
.PHONY: whois
|
.PHONY: whois
|
||||||
whois:
|
whois: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: writebdt
|
.PHONY: writebdt
|
||||||
writebdt:
|
writebdt: $(BACNET_LIB_TARGET)
|
||||||
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
.PHONY: writefile
|
||||||
|
writefile: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: router
|
.PHONY: router
|
||||||
router:
|
router: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -s -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: router-ipv6
|
.PHONY: router-ipv6
|
||||||
router-ipv6:
|
router-ipv6: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: router-mstp
|
.PHONY: router-mstp
|
||||||
router-mstp:
|
router-mstp: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
.PHONY: writepropm
|
.PHONY: writepropm
|
||||||
writepropm:
|
writepropm: $(BACNET_LIB_TARGET)
|
||||||
$(MAKE) -b -C $@
|
$(MAKE) -b -C $@
|
||||||
|
|
||||||
|
|||||||
+8
-18
@@ -1,38 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the GCC port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacabort
|
TARGET = bacabort
|
||||||
|
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_abort.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -43,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-24
@@ -1,44 +1,28 @@
|
|||||||
#Makefile to build BACnet Application with GNU Make
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacackalarm
|
TARGET = bacackalarm
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
|
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
|
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rr_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_ack_alarm.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -49,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-19
@@ -1,38 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for GCC compiler
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacdcc
|
TARGET = bacdcc
|
||||||
|
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_dcc.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_dcc.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -43,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+10
-20
@@ -1,38 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacepics
|
TARGET = bacepics
|
||||||
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rpm_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rpm.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -43,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+10
-17
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacerror
|
TARGET = bacerror
|
||||||
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_error.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-22
@@ -1,8 +1,4 @@
|
|||||||
#Makefile to build BACnet Application with GNU Make
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacevent
|
TARGET = bacevent
|
||||||
@@ -11,32 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rr_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_cevent.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -47,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -1,14 +1,8 @@
|
|||||||
#Makefile to build BACnet Gateway Demonstration Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacgateway
|
TARGET = bacgateway
|
||||||
|
# BACnet objects that are used with this app
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
|
||||||
|
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/gateway/gw_device.c \
|
$(BACNET_OBJECT_DIR)/gateway/gw_device.c \
|
||||||
@@ -54,6 +48,9 @@ BACNET_BASIC_SRC = \
|
|||||||
$(BACNET_SRC_DIR)/bacnet/basic/tsm/tsm.c \
|
$(BACNET_SRC_DIR)/bacnet/basic/tsm/tsm.c \
|
||||||
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/service/*.c)
|
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/service/*.c)
|
||||||
|
|
||||||
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
OBJS += ${SRCS:.c=.o}
|
||||||
|
|||||||
+8
-18
@@ -2,37 +2,27 @@
|
|||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacge
|
TARGET = bacge
|
||||||
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_getevent.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rr_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_getevent.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -43,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-16
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = baciam
|
TARGET = baciam
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-16
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = baciamr
|
TARGET = baciamr
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacinitr
|
TARGET = bacinitr
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -0,0 +1,124 @@
|
|||||||
|
# BACnet Stack library
|
||||||
|
# Build all the non-OS or port specific code
|
||||||
|
|
||||||
|
BACNET_LIB_NAME ?= bacnet
|
||||||
|
BACNET_LIB_DIR ?= $(realpath .)
|
||||||
|
BACNET_LIB_TARGET ?= $(BACNET_LIB_DIR)/lib$(BACNET_LIB_NAME).a
|
||||||
|
BACNET_SRC_DIR ?= $(realpath ../../src)
|
||||||
|
BACNET_PORT_DIR ?= $(realpath ../../ports/linux)
|
||||||
|
BACNET_DEFINES ?=
|
||||||
|
|
||||||
|
#build for release (default) or debug
|
||||||
|
OPTIMIZATION ?= -Os
|
||||||
|
DEBUGGING ?=
|
||||||
|
WARNINGS ?= -Wall -Wmissing-prototypes
|
||||||
|
# dead code removal
|
||||||
|
ifeq (${BUILD},debug)
|
||||||
|
OPTIMIZATION = -O0
|
||||||
|
DEBUGGING = -g -DDEBUG_ENABLED=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
# put all the flags together
|
||||||
|
INCLUDES = -I$(BACNET_SRC_DIR)
|
||||||
|
CFLAGS += $(WARNINGS) $(DEBUGGING) $(OPTIMIZATION) $(BACNET_DEFINES) $(INCLUDES)
|
||||||
|
CFLAGS += -ffunction-sections -fdata-sections
|
||||||
|
|
||||||
|
PORT_ARCNET_SRC = \
|
||||||
|
$(BACNET_PORT_DIR)/arcnet.c
|
||||||
|
|
||||||
|
PORT_MSTP_SRC = \
|
||||||
|
$(BACNET_PORT_DIR)/rs485.c \
|
||||||
|
$(BACNET_PORT_DIR)/dlmstp.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/mstp.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/mstptext.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/crc.c
|
||||||
|
|
||||||
|
PORT_ETHERNET_SRC = \
|
||||||
|
$(BACNET_PORT_DIR)/ethernet.c
|
||||||
|
|
||||||
|
PORT_BIP_SRC = \
|
||||||
|
$(BACNET_PORT_DIR)/bip-init.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/basic/bbmd/h_bbmd.c
|
||||||
|
|
||||||
|
PORT_BIP6_SRC = \
|
||||||
|
$(BACNET_PORT_DIR)/bip6.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/basic/bbmd6/h_bbmd6.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/basic/bbmd6/vmac.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/bvlc6.c
|
||||||
|
|
||||||
|
PORT_ALL_SRC = \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/datalink.c \
|
||||||
|
$(PORT_ARCNET_SRC) \
|
||||||
|
$(PORT_MSTP_SRC) \
|
||||||
|
$(PORT_ETHERNET_SRC) \
|
||||||
|
$(PORT_BIP_SRC) \
|
||||||
|
$(PORT_BIP6_SRC)
|
||||||
|
|
||||||
|
PORT_NONE_SRC = \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/datalink.c
|
||||||
|
|
||||||
|
ifeq (${BACDL_DEFINE},-DBACDL_BIP=1)
|
||||||
|
BACNET_PORT_SRC = ${PORT_BIP_SRC}
|
||||||
|
endif
|
||||||
|
ifeq (${BACDL_DEFINE},-DBACDL_BIP6=1)
|
||||||
|
BACNET_PORT_SRC = ${PORT_BIP6_SRC}
|
||||||
|
endif
|
||||||
|
ifeq (${BACDL_DEFINE},-DBACDL_MSTP=1)
|
||||||
|
BACNET_PORT_SRC = ${PORT_MSTP_SRC}
|
||||||
|
endif
|
||||||
|
ifeq (${BACDL_DEFINE},-DBACDL_ARCNET=1)
|
||||||
|
BACNET_PORT_SRC = ${PORT_ARCNET_SRC}
|
||||||
|
endif
|
||||||
|
ifeq (${BACDL_DEFINE},-DBACDL_ETHERNET=1)
|
||||||
|
BACNET_PORT_SRC = ${PORT_ETHERNET_SRC}
|
||||||
|
endif
|
||||||
|
ifeq (${BACDL_DEFINE},-DBACDL_NONE=1)
|
||||||
|
BACNET_PORT_SRC = ${PORT_NONE_SRC}
|
||||||
|
endif
|
||||||
|
ifeq (${BACDL_DEFINE},-DBACDL_ALL=1)
|
||||||
|
BACNET_PORT_SRC = ${PORT_ALL_SRC}
|
||||||
|
endif
|
||||||
|
ifneq (${BACDL_DEFINE},)
|
||||||
|
CFLAGS += ${BACDL_DEFINE}
|
||||||
|
endif
|
||||||
|
|
||||||
|
BACNET_PORT_SRC += \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/datalink/dlenv.c \
|
||||||
|
$(BACNET_PORT_DIR)/mstimer-init.c \
|
||||||
|
$(BACNET_PORT_DIR)/datetime-init.c \
|
||||||
|
|
||||||
|
BACNET_SRC ?= \
|
||||||
|
$(wildcard $(BACNET_SRC_DIR)/bacnet/*.c) \
|
||||||
|
|
||||||
|
BACNET_BASIC_SRC ?= \
|
||||||
|
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/*.c) \
|
||||||
|
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/binding/*.c) \
|
||||||
|
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/service/*.c) \
|
||||||
|
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/sys/*.c) \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/basic/npdu/h_npdu.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/basic/npdu/s_router.c \
|
||||||
|
$(BACNET_SRC_DIR)/bacnet/basic/tsm/tsm.c
|
||||||
|
|
||||||
|
SRCS := $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
||||||
|
|
||||||
|
OBJS = ${SRCS:.c=.o}
|
||||||
|
|
||||||
|
all: $(BACNET_LIB_TARGET)
|
||||||
|
|
||||||
|
lib: $(BACNET_LIB_TARGET)
|
||||||
|
|
||||||
|
$(BACNET_LIB_TARGET): $(OBJS) Makefile
|
||||||
|
${AR} rcs $@ $(OBJS)
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
|
depend:
|
||||||
|
rm -f .depend
|
||||||
|
${CC} -MM ${CFLAGS} *.c >> .depend
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf core $(OBJS) $(BACNET_LIB_TARGET)
|
||||||
|
|
||||||
|
include: .depend
|
||||||
+2
-2
@@ -72,8 +72,8 @@ static volatile struct mstp_port_struct_t MSTP_Port;
|
|||||||
/* track the receive state to know when there is a broken packet */
|
/* track the receive state to know when there is a broken packet */
|
||||||
static MSTP_RECEIVE_STATE MSTP_Receive_State = MSTP_RECEIVE_STATE_IDLE;
|
static MSTP_RECEIVE_STATE MSTP_Receive_State = MSTP_RECEIVE_STATE_IDLE;
|
||||||
/* buffers needed by mstp port struct */
|
/* buffers needed by mstp port struct */
|
||||||
static uint8_t RxBuffer[MAX_MPDU];
|
static uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
/* method to tell main loop to exit from CTRL-C or other signals */
|
/* method to tell main loop to exit from CTRL-C or other signals */
|
||||||
static volatile bool Exit_Requested;
|
static volatile bool Exit_Requested;
|
||||||
/* flag to indicate Wireshark is running the show - no stdout or stderr */
|
/* flag to indicate Wireshark is running the show - no stdout or stderr */
|
||||||
|
|||||||
+27
-194
@@ -4,220 +4,53 @@
|
|||||||
|
|
||||||
## General Flags
|
## General Flags
|
||||||
TARGET = bacpiface
|
TARGET = bacpiface
|
||||||
|
# BACnet objects that are used with this app
|
||||||
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
|
SRC = main.c \
|
||||||
|
$(BACNET_OBJECT_DIR)/device.c \
|
||||||
|
$(BACNET_OBJECT_DIR)/netport.c \
|
||||||
|
$(BACNET_OBJECT_DIR)/bi.c \
|
||||||
|
$(BACNET_OBJECT_DIR)/bo.c
|
||||||
|
|
||||||
|
CFLAGS += -DMAX_TSM_TRANSACTIONS=1
|
||||||
|
CFLAGS += -DMAX_BINARY_INPUTS=4
|
||||||
|
CFLAGS += -DMAX_BINARY_OUTPUTS=8
|
||||||
|
|
||||||
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
# Source locations
|
# Source locations
|
||||||
BACNET_CORE = ../../src
|
|
||||||
BACNET_INCLUDE = ../../include
|
|
||||||
BACNET_HANDLER = ../../demo/handler
|
|
||||||
BACNET_OBJECT = ../../demo/object
|
|
||||||
BACNET_DEMO = ../../demo
|
|
||||||
BACNET_PORT_DIR = ../../ports/linux
|
|
||||||
PIFACE_INCLUDE = libpifacedigital/src
|
PIFACE_INCLUDE = libpifacedigital/src
|
||||||
PIFACE_LIB = libpifacedigital
|
PIFACE_LIB = libpifacedigital
|
||||||
MCP23S17_LIB = libmcp23s17
|
MCP23S17_LIB = libmcp23s17
|
||||||
|
|
||||||
## BACnet options
|
|
||||||
BACDL_DEFINE ?= -DBACDL_BIP=1
|
|
||||||
# Declare your level of BBMD support
|
|
||||||
BBMD_DEFINE ?= -DBBMD_ENABLED=1
|
|
||||||
|
|
||||||
# local files for this project
|
|
||||||
CSRC = main.c \
|
|
||||||
device.c
|
|
||||||
|
|
||||||
# common demo files needed
|
|
||||||
DEMOSRC = \
|
|
||||||
$(BACNET_HANDLER)/dlenv.c \
|
|
||||||
$(BACNET_HANDLER)/txbuf.c \
|
|
||||||
$(BACNET_HANDLER)/noserv.c \
|
|
||||||
$(BACNET_HANDLER)/h_npdu.c \
|
|
||||||
$(BACNET_HANDLER)/h_whois.c \
|
|
||||||
$(BACNET_HANDLER)/h_iam.c \
|
|
||||||
$(BACNET_HANDLER)/h_rp.c \
|
|
||||||
$(BACNET_HANDLER)/h_rp_a.c \
|
|
||||||
$(BACNET_HANDLER)/h_rpm.c \
|
|
||||||
$(BACNET_HANDLER)/h_rpm_a.c \
|
|
||||||
$(BACNET_HANDLER)/h_rr.c \
|
|
||||||
$(BACNET_HANDLER)/h_wp.c \
|
|
||||||
$(BACNET_HANDLER)/h_wpm.c \
|
|
||||||
$(BACNET_HANDLER)/h_alarm_ack.c \
|
|
||||||
$(BACNET_HANDLER)/h_arf.c \
|
|
||||||
$(BACNET_HANDLER)/h_arf_a.c \
|
|
||||||
$(BACNET_HANDLER)/h_awf.c \
|
|
||||||
$(BACNET_HANDLER)/h_rd.c \
|
|
||||||
$(BACNET_HANDLER)/h_dcc.c \
|
|
||||||
$(BACNET_HANDLER)/h_ts.c \
|
|
||||||
$(BACNET_HANDLER)/h_whohas.c \
|
|
||||||
$(BACNET_HANDLER)/h_ihave.c \
|
|
||||||
$(BACNET_HANDLER)/h_cov.c \
|
|
||||||
$(BACNET_HANDLER)/h_ccov.c \
|
|
||||||
$(BACNET_HANDLER)/h_ucov.c \
|
|
||||||
$(BACNET_HANDLER)/h_getevent.c \
|
|
||||||
$(BACNET_HANDLER)/h_gas_a.c \
|
|
||||||
$(BACNET_HANDLER)/h_get_alarm_sum.c \
|
|
||||||
$(BACNET_HANDLER)/h_getevent_a.c \
|
|
||||||
$(BACNET_HANDLER)/h_pt.c \
|
|
||||||
$(BACNET_HANDLER)/h_pt_a.c \
|
|
||||||
$(BACNET_HANDLER)/h_upt.c \
|
|
||||||
$(BACNET_HANDLER)/s_arfs.c \
|
|
||||||
$(BACNET_HANDLER)/s_awfs.c \
|
|
||||||
$(BACNET_HANDLER)/s_dcc.c \
|
|
||||||
$(BACNET_HANDLER)/s_ihave.c \
|
|
||||||
$(BACNET_HANDLER)/s_get_alarm_sum.c \
|
|
||||||
$(BACNET_HANDLER)/s_get_event.c \
|
|
||||||
$(BACNET_HANDLER)/s_iam.c \
|
|
||||||
$(BACNET_HANDLER)/s_cov.c \
|
|
||||||
$(BACNET_HANDLER)/s_ptransfer.c \
|
|
||||||
$(BACNET_HANDLER)/s_rd.c \
|
|
||||||
$(BACNET_HANDLER)/s_rp.c \
|
|
||||||
$(BACNET_HANDLER)/s_rpm.c \
|
|
||||||
$(BACNET_HANDLER)/s_ts.c \
|
|
||||||
$(BACNET_HANDLER)/s_cevent.c \
|
|
||||||
$(BACNET_HANDLER)/s_router.c \
|
|
||||||
$(BACNET_HANDLER)/s_uevent.c \
|
|
||||||
$(BACNET_HANDLER)/s_whohas.c \
|
|
||||||
$(BACNET_HANDLER)/s_whois.c \
|
|
||||||
$(BACNET_HANDLER)/s_wpm.c \
|
|
||||||
$(BACNET_HANDLER)/s_upt.c \
|
|
||||||
$(BACNET_HANDLER)/s_wp.c
|
|
||||||
|
|
||||||
OBJSRC = \
|
|
||||||
$(BACNET_OBJECT)/bi.c \
|
|
||||||
$(BACNET_OBJECT)/bo.c \
|
|
||||||
$(BACNET_OBJECT)/netport.c
|
|
||||||
|
|
||||||
# core BACnet stack files
|
|
||||||
CORESRC = \
|
|
||||||
$(BACNET_CORE)/apdu.c \
|
|
||||||
$(BACNET_CORE)/npdu.c \
|
|
||||||
$(BACNET_CORE)/bacdcode.c \
|
|
||||||
$(BACNET_CORE)/bacint.c \
|
|
||||||
$(BACNET_CORE)/bacreal.c \
|
|
||||||
$(BACNET_CORE)/bacstr.c \
|
|
||||||
$(BACNET_CORE)/bacapp.c \
|
|
||||||
$(BACNET_CORE)/bacprop.c \
|
|
||||||
$(BACNET_CORE)/bactext.c \
|
|
||||||
$(BACNET_CORE)/datetime.c \
|
|
||||||
$(BACNET_CORE)/indtext.c \
|
|
||||||
$(BACNET_CORE)/key.c \
|
|
||||||
$(BACNET_CORE)/keylist.c \
|
|
||||||
$(BACNET_CORE)/proplist.c \
|
|
||||||
$(BACNET_CORE)/debug.c \
|
|
||||||
$(BACNET_CORE)/bigend.c \
|
|
||||||
$(BACNET_CORE)/arf.c \
|
|
||||||
$(BACNET_CORE)/awf.c \
|
|
||||||
$(BACNET_CORE)/cov.c \
|
|
||||||
$(BACNET_CORE)/dcc.c \
|
|
||||||
$(BACNET_CORE)/iam.c \
|
|
||||||
$(BACNET_CORE)/ihave.c \
|
|
||||||
$(BACNET_CORE)/rd.c \
|
|
||||||
$(BACNET_CORE)/rp.c \
|
|
||||||
$(BACNET_CORE)/rpm.c \
|
|
||||||
$(BACNET_CORE)/timesync.c \
|
|
||||||
$(BACNET_CORE)/whohas.c \
|
|
||||||
$(BACNET_CORE)/whois.c \
|
|
||||||
$(BACNET_CORE)/wp.c \
|
|
||||||
$(BACNET_CORE)/wpm.c \
|
|
||||||
$(BACNET_CORE)/abort.c \
|
|
||||||
$(BACNET_CORE)/reject.c \
|
|
||||||
$(BACNET_CORE)/bacerror.c \
|
|
||||||
$(BACNET_CORE)/ptransfer.c \
|
|
||||||
$(BACNET_CORE)/memcopy.c \
|
|
||||||
$(BACNET_CORE)/filename.c \
|
|
||||||
$(BACNET_CORE)/tsm.c \
|
|
||||||
$(BACNET_CORE)/bacaddr.c \
|
|
||||||
$(BACNET_CORE)/address.c \
|
|
||||||
$(BACNET_CORE)/bacdevobjpropref.c \
|
|
||||||
$(BACNET_CORE)/bacpropstates.c \
|
|
||||||
$(BACNET_CORE)/alarm_ack.c \
|
|
||||||
$(BACNET_CORE)/event.c \
|
|
||||||
$(BACNET_CORE)/getevent.c \
|
|
||||||
$(BACNET_CORE)/get_alarm_sum.c \
|
|
||||||
$(BACNET_CORE)/readrange.c \
|
|
||||||
$(BACNET_CORE)/timestamp.c \
|
|
||||||
$(BACNET_CORE)/lighting.c \
|
|
||||||
$(BACNET_CORE)/version.c
|
|
||||||
|
|
||||||
PORT_BIP_SRC = \
|
|
||||||
$(BACNET_PORT_DIR)/bip-init.c \
|
|
||||||
$(BACNET_CORE)/bvlc.c \
|
|
||||||
$(BACNET_CORE)/bip.c
|
|
||||||
|
|
||||||
ifeq (${BACDL_DEFINE},-DBACDL_BIP=1)
|
|
||||||
PORT_SRC = ${PORT_BIP_SRC}
|
|
||||||
endif
|
|
||||||
|
|
||||||
## Include Directories
|
|
||||||
INCLUDES = -I. -I$(BACNET_INCLUDE) -I$(BACNET_HANDLER) -I$(BACNET_OBJECT)
|
|
||||||
INCLUDES += -I$(BACNET_PORT_DIR)
|
|
||||||
INCLUDES += -I$(PIFACE_INCLUDE)
|
|
||||||
|
|
||||||
# Source to Object conversion
|
|
||||||
COBJ = $(CSRC:%.c=%.o)
|
|
||||||
DEMOOBJ = $(DEMOSRC:.c=.o)
|
|
||||||
COREOBJ = $(CORESRC:.c=.o)
|
|
||||||
OBJOBJ = $(OBJSRC:.c=.o)
|
|
||||||
PORTOBJ = $(PORT_SRC:.c=.o)
|
|
||||||
|
|
||||||
# define something from the Makefile or batch file
|
|
||||||
DEFINES = $(BACDL_DEFINE) $(BBMD_DEFINE)
|
|
||||||
OPTIMIZATION = -Os $(OPTIMIZE_FLAGS)
|
|
||||||
DEBUGGING = -g
|
|
||||||
ifeq (${BUILD},debug)
|
|
||||||
OPTIMIZATION = -O0
|
|
||||||
DEBUGGING = -g
|
|
||||||
endif
|
|
||||||
ifeq (${BUILD},release)
|
|
||||||
OPTIMIZATION = -Os $(OPTIMIZE_FLAGS)
|
|
||||||
DEBUGGING = -DNDEBUG
|
|
||||||
endif
|
|
||||||
|
|
||||||
BFLAGS += -DBACNET_PROTOCOL_REVISION=17
|
|
||||||
BFLAGS += -DMAX_TSM_TRANSACTIONS=1
|
|
||||||
BFLAGS += -DMAX_BINARY_INPUTS=4
|
|
||||||
BFLAGS += -DMAX_BINARY_OUTPUTS=8
|
|
||||||
|
|
||||||
## Compile options for C files
|
|
||||||
CFLAGS = $(DEFINES)
|
|
||||||
CFLAGS += $(DEBUGGING)
|
|
||||||
CFLAGS += $(INCLUDES)
|
|
||||||
# warnings
|
|
||||||
CFLAGS += -Wall
|
|
||||||
CFLAGS += -Wstrict-prototypes
|
|
||||||
CFLAGS += -Wmissing-prototypes
|
|
||||||
# put it all together
|
|
||||||
CFLAGS += $(BFLAGS) $(OPTIMIZATION)
|
|
||||||
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
|
|
||||||
|
|
||||||
## Linker flags
|
|
||||||
LDPIFACE = -Wl,-L$(PIFACE_LIB),-lpifacedigital,-L$(MCP23S17_LIB),-lmcp23s17
|
LDPIFACE = -Wl,-L$(PIFACE_LIB),-lpifacedigital,-L$(MCP23S17_LIB),-lmcp23s17
|
||||||
LDFLAGS = -Wl,-lc,-lgcc,-lrt,-lm
|
LFLAGS += $(LDPIFACE)
|
||||||
LFLAGS := $(LDPIFACE) $(LDFLAGS)
|
|
||||||
|
|
||||||
## Objects not in library that must be built in order to link
|
OBJS += ${SRC:.c=.o}
|
||||||
OBJECTS = $(COBJ) $(DEMOOBJ) $(COREOBJ) $(OBJOBJ) $(PORTOBJ)
|
|
||||||
|
|
||||||
all: $(TARGET)
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
$(TARGET): $(OBJECTS) $(LIBRARY)
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
$(CC) $(OBJECTS) $(LFLAGS) -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
|
size $@
|
||||||
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
|
.PHONY: depend
|
||||||
depend:
|
depend:
|
||||||
rm -f .depend
|
rm -f .depend
|
||||||
${CC} -MM ${CFLAGS} *.c >> .depend
|
${CC} -MM ${CFLAGS} *.c >> .depend
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET} ${OBJECTS}
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|
||||||
|
|
||||||
.PHONY: clean all include depend
|
|
||||||
|
|
||||||
## Other dependencies
|
|
||||||
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
|
|
||||||
|
|
||||||
|
|||||||
Regular → Executable
+9
-2
@@ -3,8 +3,15 @@
|
|||||||
# The library is located at github.com/piface
|
# The library is located at github.com/piface
|
||||||
# Since the PiFace library is GPLv3, we have to keep it separate.
|
# Since the PiFace library is GPLv3, we have to keep it separate.
|
||||||
|
|
||||||
git clone https://github.com/piface/libmcp23s17.git
|
if [ ! -d "libmcp23s17" ]
|
||||||
git clone https://github.com/piface/libpifacedigital.git
|
then
|
||||||
|
git clone git@github.com:piface/libmcp23s17.git
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "libpifacedigital" ]
|
||||||
|
then
|
||||||
|
git clone git@github.com:piface/libpifacedigital.git
|
||||||
|
fi
|
||||||
|
|
||||||
# Build the library
|
# Build the library
|
||||||
|
|
||||||
|
|||||||
+13
-18
@@ -1,24 +1,17 @@
|
|||||||
#Makefile to build BACnet Application using GCC compiler
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
# AR = ar
|
|
||||||
# MAKE = make
|
|
||||||
# SIZE = size
|
|
||||||
#
|
|
||||||
# Assumes rm and cp are available
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = ptransfer
|
TARGET = ptransfer
|
||||||
|
# BACnet objects that are used with this app
|
||||||
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
|
SRC = main.c \
|
||||||
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
|
|
||||||
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = main.c \
|
OBJS += ${SRC:.c=.o}
|
||||||
../object/netport.c \
|
|
||||||
../object/device-client.c
|
|
||||||
|
|
||||||
OBJS = ${SRCS:.c=.o}
|
|
||||||
|
|
||||||
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
@@ -27,19 +20,21 @@ ${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
|||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
lib: ${BACNET_LIB_TARGET}
|
|
||||||
|
|
||||||
${BACNET_LIB_TARGET}:
|
${BACNET_LIB_TARGET}:
|
||||||
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) )
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
|
.PHONY: depend
|
||||||
depend:
|
depend:
|
||||||
rm -f .depend
|
rm -f .depend
|
||||||
${CC} -MM ${CFLAGS} *.c >> .depend
|
${CC} -MM ${CFLAGS} *.c >> .depend
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -rf core ${TARGET_BIN} ${OBJS} ${BACNET_LIB_TARGET}
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|
||||||
|
|||||||
+9
-16
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the GCC Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacrbdt
|
TARGET = bacrbdt
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-16
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the GCC Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacrfdt
|
TARGET = bacrfdt
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-21
@@ -1,40 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacarf
|
TARGET = bacarf
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_arfs.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -45,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+7
-17
@@ -7,32 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -43,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-24
@@ -1,8 +1,4 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacrpm
|
TARGET = bacrpm
|
||||||
@@ -11,34 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rpm_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rpm.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -49,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+7
-17
@@ -7,32 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rr_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_readrange.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -43,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-21
@@ -1,8 +1,4 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacrd
|
TARGET = bacrd
|
||||||
@@ -11,31 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rd.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -46,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -99,10 +99,11 @@ static DNET *Router_Table_Head;
|
|||||||
static uint16_t BIP_Net;
|
static uint16_t BIP_Net;
|
||||||
static uint16_t BIP6_Net;
|
static uint16_t BIP6_Net;
|
||||||
/* buffer for receiving packets from the directly connected ports */
|
/* buffer for receiving packets from the directly connected ports */
|
||||||
static uint8_t BIP_Rx_Buffer[MAX_MPDU];
|
static uint8_t BIP_Rx_Buffer[BIP_MPDU_MAX];
|
||||||
static uint8_t BIP6_Rx_Buffer[MAX_MPDU];
|
static uint8_t BIP6_Rx_Buffer[BIP6_MPDU_MAX];
|
||||||
/* buffer for transmitting from any port */
|
/* buffer for transmitting from any port */
|
||||||
static uint8_t Tx_Buffer[MAX_MPDU];
|
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||||
|
static uint8_t Tx_Buffer[MAX(BIP_MPDU_MAX,BIP6_MPDU_MAX)];
|
||||||
/* main loop exit control */
|
/* main loop exit control */
|
||||||
static bool Exit_Requested;
|
static bool Exit_Requested;
|
||||||
|
|
||||||
@@ -1150,14 +1151,16 @@ int main(int argc, char *argv[])
|
|||||||
/* input */
|
/* input */
|
||||||
current_seconds = time(NULL);
|
current_seconds = time(NULL);
|
||||||
/* returns 0 bytes on timeout */
|
/* returns 0 bytes on timeout */
|
||||||
pdu_len = bip_receive(&src, &BIP_Rx_Buffer[0], MAX_MPDU, 5);
|
pdu_len = bip_receive(&src, &BIP_Rx_Buffer[0],
|
||||||
|
sizeof(BIP_Rx_Buffer), 5);
|
||||||
/* process */
|
/* process */
|
||||||
if (pdu_len) {
|
if (pdu_len) {
|
||||||
debug_printf("BACnet/IP Received packet\n");
|
debug_printf("BACnet/IP Received packet\n");
|
||||||
my_routing_npdu_handler(BIP_Net, &src, &BIP_Rx_Buffer[0], pdu_len);
|
my_routing_npdu_handler(BIP_Net, &src, &BIP_Rx_Buffer[0], pdu_len);
|
||||||
}
|
}
|
||||||
/* returns 0 bytes on timeout */
|
/* returns 0 bytes on timeout */
|
||||||
pdu_len = bip6_receive(&src, &BIP6_Rx_Buffer[0], MAX_MPDU, 5);
|
pdu_len = bip6_receive(&src, &BIP6_Rx_Buffer[0],
|
||||||
|
sizeof(BIP6_Rx_Buffer), 5);
|
||||||
/* process */
|
/* process */
|
||||||
if (pdu_len) {
|
if (pdu_len) {
|
||||||
debug_printf("BACnet/IPv6 Received packet\n");
|
debug_printf("BACnet/IPv6 Received packet\n");
|
||||||
|
|||||||
@@ -97,10 +97,11 @@ static DNET *Router_Table_Head;
|
|||||||
static uint16_t BIP_Net;
|
static uint16_t BIP_Net;
|
||||||
static uint16_t MSTP_Net;
|
static uint16_t MSTP_Net;
|
||||||
/* buffer for receiving packets from the directly connected ports */
|
/* buffer for receiving packets from the directly connected ports */
|
||||||
static uint8_t BIP_Rx_Buffer[MAX_MPDU];
|
static uint8_t BIP_Rx_Buffer[BIP_MPDU_MAX];
|
||||||
static uint8_t MSTP_Rx_Buffer[MAX_MPDU];
|
static uint8_t MSTP_Rx_Buffer[DLMSTP_MPDU_MAX];
|
||||||
/* buffer for transmitting from any port */
|
/* buffer for transmitting from any port */
|
||||||
static uint8_t Tx_Buffer[MAX_MPDU];
|
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||||
|
static uint8_t Tx_Buffer[MAX(DLMSTP_MPDU_MAX,BIP_MPDU_MAX)];
|
||||||
/* main loop exit control */
|
/* main loop exit control */
|
||||||
static bool Exit_Requested;
|
static bool Exit_Requested;
|
||||||
|
|
||||||
@@ -1161,14 +1162,16 @@ int main(int argc, char *argv[])
|
|||||||
/* input */
|
/* input */
|
||||||
current_seconds = time(NULL);
|
current_seconds = time(NULL);
|
||||||
/* returns 0 bytes on timeout */
|
/* returns 0 bytes on timeout */
|
||||||
pdu_len = bip_receive(&src, &BIP_Rx_Buffer[0], MAX_MPDU, 5);
|
pdu_len = bip_receive(&src, &BIP_Rx_Buffer[0],
|
||||||
|
sizeof(BIP_Rx_Buffer), 5);
|
||||||
/* process */
|
/* process */
|
||||||
if (pdu_len) {
|
if (pdu_len) {
|
||||||
debug_printf("BACnet/IP Received packet\n");
|
debug_printf("BACnet/IP Received packet\n");
|
||||||
my_routing_npdu_handler(BIP_Net, &src, &BIP_Rx_Buffer[0], pdu_len);
|
my_routing_npdu_handler(BIP_Net, &src, &BIP_Rx_Buffer[0], pdu_len);
|
||||||
}
|
}
|
||||||
/* returns 0 bytes on timeout */
|
/* returns 0 bytes on timeout */
|
||||||
pdu_len = dlmstp_receive(&src, &MSTP_Rx_Buffer[0], MAX_MPDU, 5);
|
pdu_len = dlmstp_receive(&src, &MSTP_Rx_Buffer[0],
|
||||||
|
sizeof(MSTP_Rx_Buffer), 5);
|
||||||
/* process */
|
/* process */
|
||||||
if (pdu_len) {
|
if (pdu_len) {
|
||||||
debug_printf("BACnet MS/TP Received packet\n");
|
debug_printf("BACnet MS/TP Received packet\n");
|
||||||
|
|||||||
+7
-18
@@ -7,33 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_ccov.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_ucov.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_cov.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -44,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-11
@@ -1,7 +1,8 @@
|
|||||||
#Makefile to build BACnet Application for the GCC port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacserv
|
TARGET = bacserv
|
||||||
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/device.c \
|
$(BACNET_OBJECT_DIR)/device.c \
|
||||||
@@ -37,24 +38,21 @@ SRC = main.c \
|
|||||||
$(BACNET_OBJECT_DIR)/acc.c \
|
$(BACNET_OBJECT_DIR)/acc.c \
|
||||||
$(BACNET_OBJECT_DIR)/bacfile.c
|
$(BACNET_OBJECT_DIR)/bacfile.c
|
||||||
|
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(wildcard $(BACNET_SRC_DIR)/bacnet/basic/service/*.c)
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS = ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -65,7 +63,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-22
@@ -1,8 +1,4 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacts
|
TARGET = bacts
|
||||||
@@ -11,32 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_ts.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_ts.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -47,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-21
@@ -1,8 +1,4 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacucov
|
TARGET = bacucov
|
||||||
@@ -11,31 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_cov.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -46,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-22
@@ -1,8 +1,4 @@
|
|||||||
#Makefile to build BACnet Application with GNU Make
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacuevent
|
TARGET = bacuevent
|
||||||
@@ -11,32 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rr_a.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_uevent.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -47,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -7,33 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_upt.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_upt.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -44,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-22
@@ -1,8 +1,4 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacwh
|
TARGET = bacwh
|
||||||
@@ -11,32 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_ihave.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whohas.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -47,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-20
@@ -1,39 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacwi
|
TARGET = bacwi
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -44,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacwir
|
TARGET = bacwir
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+9
-16
@@ -1,35 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the GCC Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
|
# Executable file name
|
||||||
TARGET = bacwbdt
|
TARGET = bacwbdt
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -40,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-22
@@ -1,42 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacawf
|
TARGET = bacawf
|
||||||
|
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_awfs.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -47,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
+8
-17
@@ -1,4 +1,4 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacwp
|
TARGET = bacwp
|
||||||
@@ -7,31 +7,22 @@ BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
|||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_wp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -42,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -1,43 +1,28 @@
|
|||||||
#Makefile to build BACnet Application for the Linux Port
|
#Makefile to build BACnet Application using GCC compiler
|
||||||
|
|
||||||
# tools - only if you need them.
|
|
||||||
# Most platforms have this already defined
|
|
||||||
# CC = gcc
|
|
||||||
|
|
||||||
# Executable file name
|
# Executable file name
|
||||||
TARGET = bacwpm
|
TARGET = bacwpm
|
||||||
|
|
||||||
# BACnet objects that are used with this app
|
# BACnet objects that are used with this app
|
||||||
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
BACNET_OBJECT_DIR = $(BACNET_SRC_DIR)/bacnet/basic/object
|
||||||
SRC = main.c \
|
SRC = main.c \
|
||||||
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
$(BACNET_OBJECT_DIR)/client/device-client.c \
|
||||||
$(BACNET_OBJECT_DIR)/netport.c
|
$(BACNET_OBJECT_DIR)/netport.c
|
||||||
BACNET_BASIC_SRC += \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_apdu.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_noserv.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/h_whois.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_iam.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_rp.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_wpm.c \
|
|
||||||
$(BACNET_SRC_DIR)/bacnet/basic/service/s_whois.c
|
|
||||||
|
|
||||||
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
# TARGET_EXT is defined in apps/Makefile as .exe or nothing
|
||||||
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
TARGET_BIN = ${TARGET}$(TARGET_EXT)
|
||||||
|
|
||||||
SRCS = $(SRC) $(BACNET_SRC) $(BACNET_BASIC_SRC) $(BACNET_PORT_SRC)
|
OBJS += ${SRC:.c=.o}
|
||||||
|
|
||||||
OBJS += ${SRCS:.c=.o}
|
all: ${BACNET_LIB_TARGET} Makefile ${TARGET_BIN}
|
||||||
|
|
||||||
.PHONY: all
|
${TARGET_BIN}: ${OBJS} Makefile ${BACNET_LIB_TARGET}
|
||||||
all: Makefile ${TARGET_BIN}
|
|
||||||
|
|
||||||
${TARGET_BIN}: ${OBJS}
|
|
||||||
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
${CC} ${PFLAGS} ${OBJS} ${LFLAGS} -o $@
|
||||||
size $@
|
size $@
|
||||||
cp $@ ../../bin
|
cp $@ ../../bin
|
||||||
|
|
||||||
|
${BACNET_LIB_TARGET}:
|
||||||
|
( cd ${BACNET_LIB_DIR} ; $(MAKE) clean ; $(MAKE) -s )
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
${CC} -c ${CFLAGS} $*.c -o $@
|
${CC} -c ${CFLAGS} $*.c -o $@
|
||||||
|
|
||||||
@@ -48,7 +33,7 @@ depend:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map
|
rm -f core ${TARGET_BIN} ${OBJS} $(TARGET).map ${BACNET_LIB_TARGET}
|
||||||
|
|
||||||
.PHONY: include
|
.PHONY: include
|
||||||
include: .depend
|
include: .depend
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ int bip_send_pdu(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
unsigned pdu_len)
|
unsigned pdu_len)
|
||||||
{ /* number of bytes of data */
|
{ /* number of bytes of data */
|
||||||
|
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||||
int mtu_len = 0;
|
int mtu_len = 0;
|
||||||
int bytes_sent = 0;
|
int bytes_sent = 0;
|
||||||
/* addr and port in host format */
|
/* addr and port in host format */
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
#include "bacnet/npdu.h"
|
#include "bacnet/npdu.h"
|
||||||
|
|
||||||
/* specific defines for BACnet/IP over Ethernet */
|
/* specific defines for BACnet/IP over Ethernet */
|
||||||
#define MAX_HEADER (1 + 1 + 2)
|
#define BIP_HEADER_MAX (1 + 1 + 2)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define BIP_MPDU_MAX (BIP_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
#define BVLL_TYPE_BACNET_IP (0x81)
|
#define BVLL_TYPE_BACNET_IP (0x81)
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ static void bvlc_send_result(uint8_t *dest_addr,
|
|||||||
|
|
||||||
BACNET_BVLC_RESULT result_code)
|
BACNET_BVLC_RESULT result_code)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
|
|
||||||
mtu_len = (uint16_t)bvlc_encode_bvlc_result(&mtu[0], result_code);
|
mtu_len = (uint16_t)bvlc_encode_bvlc_result(&mtu[0], result_code);
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ struct mstp_pdu_packet {
|
|||||||
bool data_expecting_reply;
|
bool data_expecting_reply;
|
||||||
uint8_t destination_mac;
|
uint8_t destination_mac;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint8_t buffer[MAX_MPDU];
|
uint8_t buffer[DLMSTP_MPDU_MAX];
|
||||||
};
|
};
|
||||||
/* count must be a power of 2 for ringbuf library */
|
/* count must be a power of 2 for ringbuf library */
|
||||||
#ifndef MSTP_PDU_PACKET_COUNT
|
#ifndef MSTP_PDU_PACKET_COUNT
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ struct mstp_pdu_packet {
|
|||||||
bool data_expecting_reply;
|
bool data_expecting_reply;
|
||||||
uint8_t destination_mac;
|
uint8_t destination_mac;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint8_t buffer[MAX_MPDU];
|
uint8_t buffer[DLMSTP_MPDU_MAX];
|
||||||
};
|
};
|
||||||
static struct mstp_pdu_packet PDU_Buffer[MSTP_PDU_PACKET_COUNT];
|
static struct mstp_pdu_packet PDU_Buffer[MSTP_PDU_PACKET_COUNT];
|
||||||
static RING_BUFFER PDU_Queue;
|
static RING_BUFFER PDU_Queue;
|
||||||
|
|||||||
@@ -77,14 +77,14 @@ static bool run_thread;
|
|||||||
/* local MS/TP port data - shared with RS-485 */
|
/* local MS/TP port data - shared with RS-485 */
|
||||||
static volatile struct mstp_port_struct_t MSTP_Port;
|
static volatile struct mstp_port_struct_t MSTP_Port;
|
||||||
/* buffers needed by mstp port struct */
|
/* buffers needed by mstp port struct */
|
||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint8_t RxBuffer[MAX_MPDU];
|
static uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
/* data structure for MS/TP PDU Queue */
|
/* data structure for MS/TP PDU Queue */
|
||||||
struct mstp_pdu_packet {
|
struct mstp_pdu_packet {
|
||||||
bool data_expecting_reply;
|
bool data_expecting_reply;
|
||||||
uint8_t destination_mac;
|
uint8_t destination_mac;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint8_t buffer[MAX_MPDU];
|
uint8_t buffer[DLMSTP_MPDU_MAX];
|
||||||
};
|
};
|
||||||
/* count must be a power of 2 for ringbuf library */
|
/* count must be a power of 2 for ringbuf library */
|
||||||
#ifndef MSTP_PDU_PACKET_COUNT
|
#ifndef MSTP_PDU_PACKET_COUNT
|
||||||
|
|||||||
@@ -40,8 +40,8 @@
|
|||||||
#include "bacnet/basic/sys/ringbuf.h"
|
#include "bacnet/basic/sys/ringbuf.h"
|
||||||
/* defines specific to MS/TP */
|
/* defines specific to MS/TP */
|
||||||
/* preamble+type+dest+src+len+crc8+crc16 */
|
/* preamble+type+dest+src+len+crc8+crc16 */
|
||||||
#define MAX_HEADER (2+1+1+1+2+1+2)
|
#define DLMSTP_HEADER_MAX (2+1+1+1+2+1+2)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define DLMSTP_MPDU_MAX (DLMSTP_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
/* count must be a power of 2 for ringbuf library */
|
/* count must be a power of 2 for ringbuf library */
|
||||||
#ifndef MSTP_PDU_PACKET_COUNT
|
#ifndef MSTP_PDU_PACKET_COUNT
|
||||||
@@ -53,7 +53,7 @@ typedef struct dlmstp_packet {
|
|||||||
BACNET_ADDRESS address; /* source address */
|
BACNET_ADDRESS address; /* source address */
|
||||||
uint8_t frame_type; /* type of message */
|
uint8_t frame_type; /* type of message */
|
||||||
uint16_t pdu_len; /* packet length */
|
uint16_t pdu_len; /* packet length */
|
||||||
uint8_t pdu[MAX_MPDU]; /* packet */
|
uint8_t pdu[DLMSTP_MPDU_MAX]; /* packet */
|
||||||
} DLMSTP_PACKET;
|
} DLMSTP_PACKET;
|
||||||
|
|
||||||
/* data structure for MS/TP PDU Queue */
|
/* data structure for MS/TP PDU Queue */
|
||||||
@@ -61,7 +61,7 @@ struct mstp_pdu_packet {
|
|||||||
bool data_expecting_reply;
|
bool data_expecting_reply;
|
||||||
uint8_t destination_mac;
|
uint8_t destination_mac;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint8_t buffer[MAX_MPDU];
|
uint8_t buffer[DLMSTP_MPDU_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct shared_mstp_data {
|
typedef struct shared_mstp_data {
|
||||||
@@ -85,8 +85,8 @@ typedef struct shared_mstp_data {
|
|||||||
pthread_cond_t Master_Done_Flag;
|
pthread_cond_t Master_Done_Flag;
|
||||||
pthread_mutex_t Master_Done_Mutex;
|
pthread_mutex_t Master_Done_Mutex;
|
||||||
/* buffers needed by mstp port struct */
|
/* buffers needed by mstp port struct */
|
||||||
uint8_t TxBuffer[MAX_MPDU];
|
uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
uint8_t RxBuffer[MAX_MPDU];
|
uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
/* The minimum time without a DataAvailable or ReceiveError event */
|
/* The minimum time without a DataAvailable or ReceiveError event */
|
||||||
/* that a node must wait for a station to begin replying to a */
|
/* that a node must wait for a station to begin replying to a */
|
||||||
/* confirmed request: 255 milliseconds. (Implementations may use */
|
/* confirmed request: 255 milliseconds. (Implementations may use */
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ int ethernet_send_pdu(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
int i = 0; /* counter */
|
int i = 0; /* counter */
|
||||||
int bytes = 0;
|
int bytes = 0;
|
||||||
BACNET_ADDRESS src = { 0 }; /* source address for npdu */
|
BACNET_ADDRESS src = { 0 }; /* source address for npdu */
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 }; /* our buffer */
|
uint8_t mtu[ETHERNET_MPDU_MAX] = { 0 }; /* our buffer */
|
||||||
int mtu_len = 0;
|
int mtu_len = 0;
|
||||||
|
|
||||||
(void)npdu_data;
|
(void)npdu_data;
|
||||||
@@ -265,7 +265,7 @@ int ethernet_send_pdu(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
mtu[15] = 0x82; /* SSAP for BACnet */
|
mtu[15] = 0x82; /* SSAP for BACnet */
|
||||||
mtu[16] = 0x03; /* Control byte in header */
|
mtu[16] = 0x03; /* Control byte in header */
|
||||||
mtu_len = 17;
|
mtu_len = 17;
|
||||||
if ((mtu_len + pdu_len) > MAX_MPDU) {
|
if ((mtu_len + pdu_len) > ETHERNET_MPDU_MAX) {
|
||||||
fprintf(stderr, "ethernet: PDU is too big to send!\n");
|
fprintf(stderr, "ethernet: PDU is too big to send!\n");
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
@@ -293,7 +293,7 @@ uint16_t ethernet_receive(BACNET_ADDRESS *src, /* source address */
|
|||||||
unsigned timeout)
|
unsigned timeout)
|
||||||
{ /* number of milliseconds to wait for a packet */
|
{ /* number of milliseconds to wait for a packet */
|
||||||
int received_bytes;
|
int received_bytes;
|
||||||
uint8_t buf[MAX_MPDU] = { 0 }; /* data */
|
uint8_t buf[ETHERNET_MPDU_MAX] = { 0 }; /* data */
|
||||||
uint16_t pdu_len = 0; /* return value */
|
uint16_t pdu_len = 0; /* return value */
|
||||||
fd_set read_fds;
|
fd_set read_fds;
|
||||||
int max;
|
int max;
|
||||||
|
|||||||
@@ -61,8 +61,8 @@
|
|||||||
/* local port data - shared with RS-485 */
|
/* local port data - shared with RS-485 */
|
||||||
static volatile struct mstp_port_struct_t MSTP_Port;
|
static volatile struct mstp_port_struct_t MSTP_Port;
|
||||||
/* buffers needed by mstp port struct */
|
/* buffers needed by mstp port struct */
|
||||||
static uint8_t RxBuffer[MAX_MPDU];
|
static uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static struct mstimer Silence_Timer;
|
static struct mstimer Silence_Timer;
|
||||||
|
|
||||||
static uint32_t Timer_Silence(void *pArg)
|
static uint32_t Timer_Silence(void *pArg)
|
||||||
|
|||||||
@@ -69,8 +69,8 @@
|
|||||||
/* local port data - shared with RS-485 */
|
/* local port data - shared with RS-485 */
|
||||||
static volatile struct mstp_port_struct_t MSTP_Port;
|
static volatile struct mstp_port_struct_t MSTP_Port;
|
||||||
/* buffers needed by mstp port struct */
|
/* buffers needed by mstp port struct */
|
||||||
static uint8_t RxBuffer[MAX_MPDU];
|
static uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint16_t SilenceTime;
|
static uint16_t SilenceTime;
|
||||||
#define INCREMENT_AND_LIMIT_UINT16(x) \
|
#define INCREMENT_AND_LIMIT_UINT16(x) \
|
||||||
{ \
|
{ \
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ int dlmstp_send_pdu(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
MSTP_Port.TxDestination = MSTP_BROADCAST_ADDRESS;
|
MSTP_Port.TxDestination = MSTP_BROADCAST_ADDRESS;
|
||||||
}
|
}
|
||||||
dlmstp_get_my_address(&src);
|
dlmstp_get_my_address(&src);
|
||||||
if ((MAX_HEADER + pdu_len) > MAX_MPDU) {
|
if ((DLMSTP_HEADER_MAX + pdu_len) > DLMSTP_MPDU_MAX) {
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
bytes_sent = MSTP_Create_Frame((uint8_t *)&MSTP_Port.TxBuffer[0],
|
bytes_sent = MSTP_Create_Frame((uint8_t *)&MSTP_Port.TxBuffer[0],
|
||||||
|
|||||||
@@ -42,15 +42,15 @@
|
|||||||
#include "bacnet/npdu.h"
|
#include "bacnet/npdu.h"
|
||||||
|
|
||||||
/* defines specific to MS/TP */
|
/* defines specific to MS/TP */
|
||||||
#define MAX_HEADER (2+1+1+1+2+1)
|
#define DLMSTP_HEADER_MAX (2+1+1+1+2+1)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define DLMSTP_MPDU_MAX (DLMSTP_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
typedef struct dlmstp_packet {
|
typedef struct dlmstp_packet {
|
||||||
bool ready; /* true if ready to be sent or received */
|
bool ready; /* true if ready to be sent or received */
|
||||||
BACNET_ADDRESS address; /* source address */
|
BACNET_ADDRESS address; /* source address */
|
||||||
uint8_t frame_type; /* type of message */
|
uint8_t frame_type; /* type of message */
|
||||||
unsigned pdu_len; /* packet length */
|
unsigned pdu_len; /* packet length */
|
||||||
uint8_t pdu[MAX_MPDU]; /* packet */
|
uint8_t pdu[DLMSTP_MPDU_MAX]; /* packet */
|
||||||
} DLMSTP_PACKET;
|
} DLMSTP_PACKET;
|
||||||
|
|
||||||
/* number of MS/TP tx/rx packets */
|
/* number of MS/TP tx/rx packets */
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ void MSTP_Create_And_Send_Frame(
|
|||||||
uint8_t *data, /* any data to be sent - may be null */
|
uint8_t *data, /* any data to be sent - may be null */
|
||||||
unsigned data_len)
|
unsigned data_len)
|
||||||
{ /* number of bytes of data (up to 501) */
|
{ /* number of bytes of data (up to 501) */
|
||||||
uint8_t buffer[MAX_MPDU] = { 0 }; /* buffer for sending */
|
uint8_t buffer[DLMSTP_MPDU_MAX] = { 0 }; /* buffer for sending */
|
||||||
uint16_t len = 0; /* number of bytes to send */
|
uint16_t len = 0; /* number of bytes to send */
|
||||||
|
|
||||||
len = (uint16_t)MSTP_Create_Frame(&buffer[0], /* where frame is loaded */
|
len = (uint16_t)MSTP_Create_Frame(&buffer[0], /* where frame is loaded */
|
||||||
@@ -435,7 +435,7 @@ void MSTP_Receive_Frame_FSM(volatile struct mstp_port_struct_t *mstp_port)
|
|||||||
(mstp_port->DestinationAddress ==
|
(mstp_port->DestinationAddress ==
|
||||||
MSTP_BROADCAST_ADDRESS)) {
|
MSTP_BROADCAST_ADDRESS)) {
|
||||||
/* FrameTooLong */
|
/* FrameTooLong */
|
||||||
if (mstp_port->DataLength > MAX_MPDU) {
|
if (mstp_port->DataLength > DLMSTP_MPDU_MAX) {
|
||||||
/* indicate that a frame with an illegal or */
|
/* indicate that a frame with an illegal or */
|
||||||
/* unacceptable data length has been received */
|
/* unacceptable data length has been received */
|
||||||
mstp_port->ReceivedInvalidFrame = true;
|
mstp_port->ReceivedInvalidFrame = true;
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ int dlmstp_send_pdu(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
MSTP_Port.TxDestination = MSTP_BROADCAST_ADDRESS;
|
MSTP_Port.TxDestination = MSTP_BROADCAST_ADDRESS;
|
||||||
}
|
}
|
||||||
dlmstp_get_my_address(&src);
|
dlmstp_get_my_address(&src);
|
||||||
if ((MAX_HEADER + pdu_len) > MAX_MPDU) {
|
if ((DLMSTP_HEADER_MAX + pdu_len) > DLMSTP_MPDU_MAX) {
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
bytes_sent = MSTP_Create_Frame((uint8_t *)&MSTP_Port.TxBuffer[0],
|
bytes_sent = MSTP_Create_Frame((uint8_t *)&MSTP_Port.TxBuffer[0],
|
||||||
|
|||||||
@@ -42,15 +42,15 @@
|
|||||||
#include "bacnet/npdu.h"
|
#include "bacnet/npdu.h"
|
||||||
|
|
||||||
/* defines specific to MS/TP */
|
/* defines specific to MS/TP */
|
||||||
#define MAX_HEADER (2+1+1+1+2+1)
|
#define DLMSTP_HEADER_MAX (2+1+1+1+2+1)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define DLMSTP_MPDU_MAX (DLMSTP_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
typedef struct dlmstp_packet {
|
typedef struct dlmstp_packet {
|
||||||
bool ready; /* true if ready to be sent or received */
|
bool ready; /* true if ready to be sent or received */
|
||||||
BACNET_ADDRESS address; /* source address */
|
BACNET_ADDRESS address; /* source address */
|
||||||
uint8_t frame_type; /* type of message */
|
uint8_t frame_type; /* type of message */
|
||||||
unsigned pdu_len; /* packet length */
|
unsigned pdu_len; /* packet length */
|
||||||
uint8_t pdu[MAX_MPDU]; /* packet */
|
uint8_t pdu[DLMSTP_MPDU_MAX]; /* packet */
|
||||||
} DLMSTP_PACKET;
|
} DLMSTP_PACKET;
|
||||||
|
|
||||||
/* number of MS/TP tx/rx packets */
|
/* number of MS/TP tx/rx packets */
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ void MSTP_Create_And_Send_Frame(
|
|||||||
uint8_t *data, /* any data to be sent - may be null */
|
uint8_t *data, /* any data to be sent - may be null */
|
||||||
unsigned data_len)
|
unsigned data_len)
|
||||||
{ /* number of bytes of data (up to 501) */
|
{ /* number of bytes of data (up to 501) */
|
||||||
uint8_t buffer[MAX_MPDU] = { 0 }; /* buffer for sending */
|
uint8_t buffer[DLMSTP_MPDU_MAX] = { 0 }; /* buffer for sending */
|
||||||
uint16_t len = 0; /* number of bytes to send */
|
uint16_t len = 0; /* number of bytes to send */
|
||||||
|
|
||||||
len = (uint16_t)MSTP_Create_Frame(&buffer[0], /* where frame is loaded */
|
len = (uint16_t)MSTP_Create_Frame(&buffer[0], /* where frame is loaded */
|
||||||
@@ -435,7 +435,7 @@ void MSTP_Receive_Frame_FSM(volatile struct mstp_port_struct_t *mstp_port)
|
|||||||
(mstp_port->DestinationAddress ==
|
(mstp_port->DestinationAddress ==
|
||||||
MSTP_BROADCAST_ADDRESS)) {
|
MSTP_BROADCAST_ADDRESS)) {
|
||||||
/* FrameTooLong */
|
/* FrameTooLong */
|
||||||
if (mstp_port->DataLength > MAX_MPDU) {
|
if (mstp_port->DataLength > DLMSTP_MPDU_MAX) {
|
||||||
/* indicate that a frame with an illegal or */
|
/* indicate that a frame with an illegal or */
|
||||||
/* unacceptable data length has been received */
|
/* unacceptable data length has been received */
|
||||||
mstp_port->ReceivedInvalidFrame = true;
|
mstp_port->ReceivedInvalidFrame = true;
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ struct mstp_port_struct_t {
|
|||||||
|
|
||||||
/* An array of octets, used to store PDU octets prior to being transmitted. */
|
/* An array of octets, used to store PDU octets prior to being transmitted. */
|
||||||
/* This array is only used for APDU messages */
|
/* This array is only used for APDU messages */
|
||||||
uint8_t TxBuffer[MAX_MPDU];
|
uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
unsigned TxLength;
|
unsigned TxLength;
|
||||||
uint8_t TxDestination;
|
uint8_t TxDestination;
|
||||||
bool TxReady; /* true if ready to be sent or received */
|
bool TxReady; /* true if ready to be sent or received */
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ int ethernet_send_pdu(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
int i = 0; /* counter */
|
int i = 0; /* counter */
|
||||||
int bytes = 0;
|
int bytes = 0;
|
||||||
BACNET_ADDRESS src = { 0 }; /* source address for npdu */
|
BACNET_ADDRESS src = { 0 }; /* source address for npdu */
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 }; /* our buffer */
|
uint8_t mtu[ETHERNET_MPDU_MAX] = { 0 }; /* our buffer */
|
||||||
int mtu_len = 0;
|
int mtu_len = 0;
|
||||||
|
|
||||||
(void)npdu_data;
|
(void)npdu_data;
|
||||||
@@ -130,7 +130,7 @@ int ethernet_send_pdu(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
mtu[15] = 0x82; /* SSAP for BACnet */
|
mtu[15] = 0x82; /* SSAP for BACnet */
|
||||||
mtu[16] = 0x03; /* Control byte in header */
|
mtu[16] = 0x03; /* Control byte in header */
|
||||||
mtu_len = 17;
|
mtu_len = 17;
|
||||||
if ((mtu_len + pdu_len) > MAX_MPDU) {
|
if ((mtu_len + pdu_len) > ETHERNET_MPDU_MAX) {
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
memcpy(&mtu[mtu_len], pdu, pdu_len);
|
memcpy(&mtu[mtu_len], pdu, pdu_len);
|
||||||
@@ -152,7 +152,7 @@ uint16_t ethernet_receive(BACNET_ADDRESS *src, /* source address */
|
|||||||
unsigned timeout)
|
unsigned timeout)
|
||||||
{ /* number of milliseconds to wait for a packet */
|
{ /* number of milliseconds to wait for a packet */
|
||||||
int received_bytes;
|
int received_bytes;
|
||||||
uint8_t buf[MAX_MPDU] = { 0 }; /* data */
|
uint8_t buf[ETHERNET_MPDU_MAX] = { 0 }; /* data */
|
||||||
uint16_t pdu_len = 0; /* return value */
|
uint16_t pdu_len = 0; /* return value */
|
||||||
|
|
||||||
/* Make sure the socket is open */
|
/* Make sure the socket is open */
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ static uint8_t Nmax_master = 127;
|
|||||||
struct mstp_tx_packet {
|
struct mstp_tx_packet {
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint16_t index;
|
uint16_t index;
|
||||||
uint8_t buffer[MAX_MPDU];
|
uint8_t buffer[DLMSTP_MPDU_MAX];
|
||||||
};
|
};
|
||||||
/* count must be a power of 2 for ringbuf library */
|
/* count must be a power of 2 for ringbuf library */
|
||||||
#ifndef MSTP_TRANSMIT_PACKET_COUNT
|
#ifndef MSTP_TRANSMIT_PACKET_COUNT
|
||||||
@@ -179,7 +179,7 @@ struct mstp_pdu_packet {
|
|||||||
bool data_expecting_reply;
|
bool data_expecting_reply;
|
||||||
uint8_t destination_mac;
|
uint8_t destination_mac;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint8_t buffer[MAX_MPDU];
|
uint8_t buffer[DLMSTP_MPDU_MAX];
|
||||||
};
|
};
|
||||||
/* count must be a power of 2 for ringbuf library */
|
/* count must be a power of 2 for ringbuf library */
|
||||||
#ifndef MSTP_PDU_PACKET_COUNT
|
#ifndef MSTP_PDU_PACKET_COUNT
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ static volatile uint8_t Nmax_master = 127;
|
|||||||
/* An array of octets, used to store octets for transmitting */
|
/* An array of octets, used to store octets for transmitting */
|
||||||
/* OutputBuffer is indexed from 0 to OutputBufferSize-1. */
|
/* OutputBuffer is indexed from 0 to OutputBufferSize-1. */
|
||||||
/* The maximum size of a frame is 501 octets. */
|
/* The maximum size of a frame is 501 octets. */
|
||||||
static uint8_t OutputBuffer[MAX_MPDU];
|
static uint8_t OutputBuffer[DLMSTP_MPDU_MAX];
|
||||||
/* Number of bytes pending transmit. 0=nothing pending transmit */
|
/* Number of bytes pending transmit. 0=nothing pending transmit */
|
||||||
uint16_t OutputBufferLength;
|
uint16_t OutputBufferLength;
|
||||||
|
|
||||||
|
|||||||
@@ -37,12 +37,12 @@
|
|||||||
#include "rs485.h"
|
#include "rs485.h"
|
||||||
|
|
||||||
/* buffer for storing received bytes - size must be power of two */
|
/* buffer for storing received bytes - size must be power of two */
|
||||||
/* BACnet MAX_MPDU for MS/TP is 501 bytes */
|
/* BACnet DLMSTP_MPDU_MAX for MS/TP is 501 bytes */
|
||||||
static uint8_t Receive_Queue_Data[512];
|
static uint8_t Receive_Queue_Data[512];
|
||||||
static FIFO_BUFFER Receive_Queue;
|
static FIFO_BUFFER Receive_Queue;
|
||||||
|
|
||||||
/* buffer for storing bytes to transmit */
|
/* buffer for storing bytes to transmit */
|
||||||
/* BACnet MAX_MPDU for MS/TP is 501 bytes */
|
/* BACnet DLMSTP_MPDU_MAX for MS/TP is 501 bytes */
|
||||||
static uint8_t Transmit_Queue_Data[512];
|
static uint8_t Transmit_Queue_Data[512];
|
||||||
static FIFO_BUFFER Transmit_Queue;
|
static FIFO_BUFFER Transmit_Queue;
|
||||||
|
|
||||||
|
|||||||
@@ -54,8 +54,8 @@ static DLMSTP_PACKET Transmit_Packet;
|
|||||||
/* local MS/TP port data - shared with RS-485 */
|
/* local MS/TP port data - shared with RS-485 */
|
||||||
volatile struct mstp_port_struct_t MSTP_Port;
|
volatile struct mstp_port_struct_t MSTP_Port;
|
||||||
/* buffers needed by mstp port struct */
|
/* buffers needed by mstp port struct */
|
||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint8_t RxBuffer[MAX_MPDU];
|
static uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
/* Timer that indicates line silence - and functions */
|
/* Timer that indicates line silence - and functions */
|
||||||
static uint32_t SilenceStartTime;
|
static uint32_t SilenceStartTime;
|
||||||
static uint32_t TimeBeginPeriod;
|
static uint32_t TimeBeginPeriod;
|
||||||
@@ -282,7 +282,7 @@ uint16_t MSTP_Get_Send(
|
|||||||
} else {
|
} else {
|
||||||
destination = MSTP_BROADCAST_ADDRESS;
|
destination = MSTP_BROADCAST_ADDRESS;
|
||||||
}
|
}
|
||||||
if ((MAX_HEADER + Transmit_Packet.pdu_len) > MAX_MPDU) {
|
if ((MAX_HEADER + Transmit_Packet.pdu_len) > DLMSTP_MPDU_MAX) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* convert the PDU into the MSTP Frame */
|
/* convert the PDU into the MSTP Frame */
|
||||||
@@ -421,7 +421,7 @@ uint16_t MSTP_Get_Reply(
|
|||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ((MAX_HEADER + Transmit_Packet.pdu_len) > MAX_MPDU) {
|
if ((MAX_HEADER + Transmit_Packet.pdu_len) > DLMSTP_MPDU_MAX) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* is this the reply to the DER? */
|
/* is this the reply to the DER? */
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ static DLMSTP_PACKET Transmit_Packet;
|
|||||||
/* local MS/TP port data - shared with RS-485 */
|
/* local MS/TP port data - shared with RS-485 */
|
||||||
volatile struct mstp_port_struct_t MSTP_Port;
|
volatile struct mstp_port_struct_t MSTP_Port;
|
||||||
/* buffers needed by mstp port struct */
|
/* buffers needed by mstp port struct */
|
||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint8_t RxBuffer[MAX_MPDU];
|
static uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
/* The minimum time without a DataAvailable or ReceiveError event */
|
/* The minimum time without a DataAvailable or ReceiveError event */
|
||||||
/* that a node must wait for a station to begin replying to a */
|
/* that a node must wait for a station to begin replying to a */
|
||||||
/* confirmed request: 255 milliseconds. (Implementations may use */
|
/* confirmed request: 255 milliseconds. (Implementations may use */
|
||||||
@@ -267,7 +267,7 @@ uint16_t MSTP_Get_Send(
|
|||||||
} else {
|
} else {
|
||||||
destination = MSTP_BROADCAST_ADDRESS;
|
destination = MSTP_BROADCAST_ADDRESS;
|
||||||
}
|
}
|
||||||
if ((MAX_HEADER + Transmit_Packet.pdu_len) > MAX_MPDU) {
|
if ((MAX_HEADER + Transmit_Packet.pdu_len) > DLMSTP_MPDU_MAX) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* convert the PDU into the MSTP Frame */
|
/* convert the PDU into the MSTP Frame */
|
||||||
@@ -407,7 +407,7 @@ uint16_t MSTP_Get_Reply(
|
|||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ((MAX_HEADER + Transmit_Packet.pdu_len) > MAX_MPDU) {
|
if ((MAX_HEADER + Transmit_Packet.pdu_len) > DLMSTP_MPDU_MAX) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* is this the reply to the DER? */
|
/* is this the reply to the DER? */
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ bool ethernet_init(char *if_name)
|
|||||||
*/
|
*/
|
||||||
/* Open the output device */
|
/* Open the output device */
|
||||||
pcap_eth802_fp = pcap_open(if_name, /* name of the device */
|
pcap_eth802_fp = pcap_open(if_name, /* name of the device */
|
||||||
MAX_MPDU, /* portion of the packet to capture */
|
ETHERNET_MPDU_MAX, /* portion of the packet to capture */
|
||||||
PCAP_OPENFLAG_PROMISCUOUS, /* promiscuous mode */
|
PCAP_OPENFLAG_PROMISCUOUS, /* promiscuous mode */
|
||||||
eth_timeout, /* read timeout */
|
eth_timeout, /* read timeout */
|
||||||
NULL, /* authentication on the remote machine */
|
NULL, /* authentication on the remote machine */
|
||||||
@@ -226,7 +226,7 @@ int ethernet_send(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
int bytes = 0;
|
int bytes = 0;
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[ETHERNET_MPDU_MAX] = { 0 };
|
||||||
int mtu_len = 0;
|
int mtu_len = 0;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
@@ -256,7 +256,7 @@ int ethernet_send(BACNET_ADDRESS *dest, /* destination address */
|
|||||||
LogError("ethernet.c: invalid source MAC address!\n");
|
LogError("ethernet.c: invalid source MAC address!\n");
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
if ((14 + 3 + pdu_len) > MAX_MPDU) {
|
if ((14 + 3 + pdu_len) > ETHERNET_MPDU_MAX) {
|
||||||
LogError("ethernet.c: PDU is too big to send!\n");
|
LogError("ethernet.c: PDU is too big to send!\n");
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -226,7 +226,7 @@ static void RS485_Configure_Status(void)
|
|||||||
RS485_Print_Error();
|
RS485_Print_Error();
|
||||||
}
|
}
|
||||||
/* Set the Comm buffer size */
|
/* Set the Comm buffer size */
|
||||||
SetupComm(RS485_Handle, MAX_MPDU, MAX_MPDU);
|
SetupComm(RS485_Handle, DLMSTP_MPDU_MAX, DLMSTP_MPDU_MAX);
|
||||||
/* raise DTR */
|
/* raise DTR */
|
||||||
if (!EscapeCommFunction(RS485_Handle, SETDTR)) {
|
if (!EscapeCommFunction(RS485_Handle, SETDTR)) {
|
||||||
fprintf(stderr, "Unable to set DTR on %s\n", RS485_Port_Name);
|
fprintf(stderr, "Unable to set DTR on %s\n", RS485_Port_Name);
|
||||||
|
|||||||
@@ -78,8 +78,8 @@ typedef struct pcaprec_hdr_s {
|
|||||||
|
|
||||||
/* local port data - shared with RS-485 */
|
/* local port data - shared with RS-485 */
|
||||||
volatile struct mstp_port_struct_t MSTP_Port;
|
volatile struct mstp_port_struct_t MSTP_Port;
|
||||||
static uint8_t RxBuffer[MAX_MPDU];
|
static uint8_t RxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint8_t TxBuffer[MAX_MPDU];
|
static uint8_t TxBuffer[DLMSTP_MPDU_MAX];
|
||||||
static uint16_t SilenceTime;
|
static uint16_t SilenceTime;
|
||||||
#define INCREMENT_AND_LIMIT_UINT16(x) \
|
#define INCREMENT_AND_LIMIT_UINT16(x) \
|
||||||
{ \
|
{ \
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ struct mstp_pdu_packet {
|
|||||||
bool data_expecting_reply;
|
bool data_expecting_reply;
|
||||||
uint8_t destination_mac;
|
uint8_t destination_mac;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint8_t buffer[MAX_MPDU];
|
uint8_t buffer[DLMSTP_MPDU_MAX];
|
||||||
};
|
};
|
||||||
static volatile struct mstp_pdu_packet PDU_Buffer[MSTP_PDU_PACKET_COUNT];
|
static volatile struct mstp_pdu_packet PDU_Buffer[MSTP_PDU_PACKET_COUNT];
|
||||||
static RING_BUFFER PDU_Queue;
|
static RING_BUFFER PDU_Queue;
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
#include "bacnet/npdu.h"
|
#include "bacnet/npdu.h"
|
||||||
|
|
||||||
/* specific defines for Ethernet */
|
/* specific defines for Ethernet */
|
||||||
#define MAX_HEADER (6+6+2+1+1+1)
|
#define ETHERNET_HEADER_MAX (6+6+2+1+1+1)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define ETHERNET_MPDU_MAX (ETHERNET_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
/* Unless we explicitly need these remaps to be NOT exposed
|
/* Unless we explicitly need these remaps to be NOT exposed
|
||||||
* (e.g. implementation where we need both bacnet and Zephyr symbols),
|
* (e.g. implementation where we need both bacnet and Zephyr symbols),
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ static bool BVLC_NAT_Handling = false;
|
|||||||
static BACNET_IP_ADDRESS Remote_BBMD;
|
static BACNET_IP_ADDRESS Remote_BBMD;
|
||||||
#if BBMD_ENABLED
|
#if BBMD_ENABLED
|
||||||
/* local buffer & length for sending */
|
/* local buffer & length for sending */
|
||||||
static uint8_t BVLC_Buffer[MAX_MPDU];
|
static uint8_t BVLC_Buffer[BIP_MPDU_MAX];
|
||||||
static uint16_t BVLC_Buffer_Len;
|
static uint16_t BVLC_Buffer_Len;
|
||||||
/* Broadcast Distribution Table */
|
/* Broadcast Distribution Table */
|
||||||
#ifndef MAX_BBMD_ENTRIES
|
#ifndef MAX_BBMD_ENTRIES
|
||||||
@@ -317,7 +317,7 @@ static uint16_t bbmd_forward_npdu(
|
|||||||
BACNET_IP_ADDRESS *bip_src, uint8_t *npdu, uint16_t npdu_length)
|
BACNET_IP_ADDRESS *bip_src, uint8_t *npdu, uint16_t npdu_length)
|
||||||
{
|
{
|
||||||
BACNET_IP_ADDRESS broadcast_address = { 0 };
|
BACNET_IP_ADDRESS broadcast_address = { 0 };
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
|
|
||||||
mtu_len = (uint16_t)bvlc_encode_forwarded_npdu(
|
mtu_len = (uint16_t)bvlc_encode_forwarded_npdu(
|
||||||
@@ -345,7 +345,7 @@ static uint16_t bbmd_bdt_forward_npdu(BACNET_IP_ADDRESS *bip_src,
|
|||||||
uint16_t npdu_length,
|
uint16_t npdu_length,
|
||||||
bool original)
|
bool original)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
unsigned i = 0; /* loop counter */
|
unsigned i = 0; /* loop counter */
|
||||||
BACNET_IP_ADDRESS bip_dest = { 0 };
|
BACNET_IP_ADDRESS bip_dest = { 0 };
|
||||||
@@ -410,7 +410,7 @@ static uint16_t bbmd_fdt_forward_npdu(BACNET_IP_ADDRESS *bip_src,
|
|||||||
uint16_t npdu_length,
|
uint16_t npdu_length,
|
||||||
bool original)
|
bool original)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
unsigned i = 0; /* loop counter */
|
unsigned i = 0; /* loop counter */
|
||||||
BACNET_IP_ADDRESS bip_dest = { 0 };
|
BACNET_IP_ADDRESS bip_dest = { 0 };
|
||||||
@@ -566,7 +566,7 @@ int bvlc_send_pdu(BACNET_ADDRESS *dest,
|
|||||||
unsigned pdu_len)
|
unsigned pdu_len)
|
||||||
{
|
{
|
||||||
BACNET_IP_ADDRESS bvlc_dest = { 0 };
|
BACNET_IP_ADDRESS bvlc_dest = { 0 };
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
#if BBMD_ENABLED
|
#if BBMD_ENABLED
|
||||||
BACNET_IP_ADDRESS bip_src = { 0 };
|
BACNET_IP_ADDRESS bip_src = { 0 };
|
||||||
@@ -633,7 +633,7 @@ int bvlc_send_pdu(BACNET_ADDRESS *dest,
|
|||||||
*/
|
*/
|
||||||
static int bvlc_send_result(BACNET_IP_ADDRESS *dest_addr, uint16_t result_code)
|
static int bvlc_send_result(BACNET_IP_ADDRESS *dest_addr, uint16_t result_code)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
|
|
||||||
mtu_len = bvlc_encode_result(&mtu[0], sizeof(mtu), result_code);
|
mtu_len = bvlc_encode_result(&mtu[0], sizeof(mtu), result_code);
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ static uint8_t BVLC6_Function_Code = BVLC6_RESULT;
|
|||||||
static BACNET_IP6_ADDRESS Remote_BBMD;
|
static BACNET_IP6_ADDRESS Remote_BBMD;
|
||||||
#if defined(BACDL_BIP6) && BBMD6_ENABLED
|
#if defined(BACDL_BIP6) && BBMD6_ENABLED
|
||||||
/* local buffer & length for sending */
|
/* local buffer & length for sending */
|
||||||
static uint8_t BVLC6_Buffer[MAX_MPDU];
|
static uint8_t BVLC6_Buffer[BIP6_MPDU_MAX];
|
||||||
static uint16_t BVLC6_Buffer_Len;
|
static uint16_t BVLC6_Buffer_Len;
|
||||||
/* Broadcast Distribution Table */
|
/* Broadcast Distribution Table */
|
||||||
#ifndef MAX_BBMD6_ENTRIES
|
#ifndef MAX_BBMD6_ENTRIES
|
||||||
@@ -281,7 +281,7 @@ int bvlc6_send_pdu(BACNET_ADDRESS *dest,
|
|||||||
unsigned pdu_len)
|
unsigned pdu_len)
|
||||||
{
|
{
|
||||||
BACNET_IP6_ADDRESS bvlc_dest = { { 0 } };
|
BACNET_IP6_ADDRESS bvlc_dest = { { 0 } };
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
uint32_t vmac_src = 0;
|
uint32_t vmac_src = 0;
|
||||||
uint32_t vmac_dst = 0;
|
uint32_t vmac_dst = 0;
|
||||||
@@ -403,7 +403,7 @@ static void bbmd6_send_forward_npdu(BACNET_IP6_ADDRESS *address,
|
|||||||
uint8_t *npdu,
|
uint8_t *npdu,
|
||||||
unsigned int npdu_len)
|
unsigned int npdu_len)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
unsigned i = 0; /* loop counter */
|
unsigned i = 0; /* loop counter */
|
||||||
|
|
||||||
@@ -443,7 +443,7 @@ static void bbmd6_send_forward_npdu(BACNET_IP6_ADDRESS *address,
|
|||||||
static int bvlc6_send_result(
|
static int bvlc6_send_result(
|
||||||
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint16_t result_code)
|
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint16_t result_code)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
|
|
||||||
mtu_len = bvlc6_encode_result(&mtu[0], sizeof(mtu), vmac_src, result_code);
|
mtu_len = bvlc6_encode_result(&mtu[0], sizeof(mtu), vmac_src, result_code);
|
||||||
@@ -465,7 +465,7 @@ static int bvlc6_send_result(
|
|||||||
static int bvlc6_send_address_resolution_ack(
|
static int bvlc6_send_address_resolution_ack(
|
||||||
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint32_t vmac_dst)
|
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint32_t vmac_dst)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
|
|
||||||
mtu_len = bvlc6_encode_address_resolution_ack(
|
mtu_len = bvlc6_encode_address_resolution_ack(
|
||||||
@@ -489,7 +489,7 @@ static int bvlc6_send_address_resolution_ack(
|
|||||||
static int bvlc6_send_virtual_address_resolution_ack(
|
static int bvlc6_send_virtual_address_resolution_ack(
|
||||||
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint32_t vmac_dst)
|
BACNET_IP6_ADDRESS *dest_addr, uint32_t vmac_src, uint32_t vmac_dst)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
|
|
||||||
mtu_len = bvlc6_encode_virtual_address_resolution_ack(
|
mtu_len = bvlc6_encode_virtual_address_resolution_ack(
|
||||||
@@ -1036,7 +1036,7 @@ int bvlc6_register_with_bbmd(BACNET_IP6_ADDRESS *bbmd_addr,
|
|||||||
uint32_t vmac_src,
|
uint32_t vmac_src,
|
||||||
uint16_t time_to_live_seconds)
|
uint16_t time_to_live_seconds)
|
||||||
{
|
{
|
||||||
uint8_t mtu[MAX_MPDU] = { 0 };
|
uint8_t mtu[BIP6_MPDU_MAX] = { 0 };
|
||||||
uint16_t mtu_len = 0;
|
uint16_t mtu_len = 0;
|
||||||
|
|
||||||
mtu_len = bvlc6_encode_register_foreign_device(
|
mtu_len = bvlc6_encode_register_foreign_device(
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
#include "bacnet/npdu.h"
|
#include "bacnet/npdu.h"
|
||||||
|
|
||||||
/* specific defines for ARCNET */
|
/* specific defines for ARCNET */
|
||||||
#define MAX_HEADER (1+1+2+2+1+1+1+1)
|
#define ARCNET_HEADER_MAX (1+1+2+2+1+1+1+1)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define ARCNET_MPDU_MAX (ARCNET_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -35,8 +35,6 @@
|
|||||||
/* specific defines for BACnet/IP over Ethernet */
|
/* specific defines for BACnet/IP over Ethernet */
|
||||||
#define BIP_HEADER_MAX (1 + 1 + 2)
|
#define BIP_HEADER_MAX (1 + 1 + 2)
|
||||||
#define BIP_MPDU_MAX (BIP_HEADER_MAX + MAX_PDU)
|
#define BIP_MPDU_MAX (BIP_HEADER_MAX + MAX_PDU)
|
||||||
/* for legacy demo applications */
|
|
||||||
#define MAX_MPDU BIP_MPDU_MAX
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -24,8 +24,6 @@
|
|||||||
/* specific defines for BACnet/IP over Ethernet */
|
/* specific defines for BACnet/IP over Ethernet */
|
||||||
#define BIP6_HEADER_MAX (1 + 1 + 2)
|
#define BIP6_HEADER_MAX (1 + 1 + 2)
|
||||||
#define BIP6_MPDU_MAX (BIP6_HEADER_MAX+MAX_PDU)
|
#define BIP6_MPDU_MAX (BIP6_HEADER_MAX+MAX_PDU)
|
||||||
/* for legacy demo applications */
|
|
||||||
#define MAX_MPDU BIP6_MPDU_MAX
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
+245
-85
@@ -37,104 +37,264 @@
|
|||||||
#if defined(BACDL_ALL) || defined FOR_DOXYGEN
|
#if defined(BACDL_ALL) || defined FOR_DOXYGEN
|
||||||
#include "bacnet/datalink/ethernet.h"
|
#include "bacnet/datalink/ethernet.h"
|
||||||
#include "bacnet/datalink/bip.h"
|
#include "bacnet/datalink/bip.h"
|
||||||
#include "bacnet/datalink/bip6.h"
|
|
||||||
#include "bacnet/datalink/bvlc.h"
|
#include "bacnet/datalink/bvlc.h"
|
||||||
|
#include "bacnet/basic/bbmd/h_bbmd.h"
|
||||||
|
#include "bacnet/datalink/bip6.h"
|
||||||
|
#include "bacnet/datalink/bvlc6.h"
|
||||||
|
#include "bacnet/basic/bbmd6/h_bbmd6.h"
|
||||||
#include "bacnet/datalink/arcnet.h"
|
#include "bacnet/datalink/arcnet.h"
|
||||||
#include "bacnet/datalink/dlmstp.h"
|
#include "bacnet/datalink/dlmstp.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
/* Function pointers - point to your datalink */
|
|
||||||
|
|
||||||
/** Function template to Initialize the DataLink services at the given
|
static enum {
|
||||||
interface.
|
DATALINK_NONE = 0,
|
||||||
* @ingroup DLTemplates
|
DATALINK_ARCNET,
|
||||||
*
|
DATALINK_ETHERNET,
|
||||||
* @note For Linux, ifname is eth0, ath0, arc0, ttyS0, and others.
|
DATALINK_BIP,
|
||||||
For Windows, ifname is the COM port or dotted ip address of the
|
DATALINK_BIP6,
|
||||||
interface.
|
DATALINK_MSTP
|
||||||
|
} Datalink_Transport;
|
||||||
* @param ifname [in] The named interface to use for the network layer.
|
|
||||||
* @return True if the interface is successfully initialized,
|
|
||||||
* else False if the initialization fails.
|
|
||||||
*/
|
|
||||||
bool (*datalink_init)(char *ifname);
|
|
||||||
|
|
||||||
/** Function template to send a packet via the DataLink.
|
|
||||||
* @ingroup DLTemplates
|
|
||||||
*
|
|
||||||
* @param dest [in] Destination address.
|
|
||||||
* @param npdu_data [in] The NPDU header (Network) information.
|
|
||||||
* @param pdu [in] Buffer of data to be sent - may be null.
|
|
||||||
* @param pdu_len [in] Number of bytes in the pdu buffer.
|
|
||||||
* @return Number of bytes sent on success, negative number on failure.
|
|
||||||
*/
|
|
||||||
int (*datalink_send_pdu)(BACNET_ADDRESS *dest,
|
|
||||||
BACNET_NPDU_DATA *npdu_data,
|
|
||||||
uint8_t *pdu,
|
|
||||||
unsigned pdu_len);
|
|
||||||
|
|
||||||
uint16_t (*datalink_receive)(
|
|
||||||
BACNET_ADDRESS *src, uint8_t *pdu, uint16_t max_pdu, unsigned timeout);
|
|
||||||
|
|
||||||
/** Function template to close the DataLink services and perform any cleanup.
|
|
||||||
* @ingroup DLTemplates
|
|
||||||
*/
|
|
||||||
void (*datalink_cleanup)(void);
|
|
||||||
|
|
||||||
void (*datalink_get_broadcast_address)(BACNET_ADDRESS *dest);
|
|
||||||
|
|
||||||
void (*datalink_get_my_address)(BACNET_ADDRESS *my_address);
|
|
||||||
|
|
||||||
void datalink_set(char *datalink_string)
|
void datalink_set(char *datalink_string)
|
||||||
{
|
{
|
||||||
if (strcasecmp("bip", datalink_string) == 0) {
|
if (strcasecmp("bip", datalink_string) == 0) {
|
||||||
datalink_init = bip_init;
|
Datalink_Transport = DATALINK_BIP;
|
||||||
datalink_send_pdu = bip_send_pdu;
|
|
||||||
datalink_receive = bip_receive;
|
|
||||||
datalink_cleanup = bip_cleanup;
|
|
||||||
datalink_get_broadcast_address = bip_get_broadcast_address;
|
|
||||||
datalink_get_my_address = bip_get_my_address;
|
|
||||||
} else if (strcasecmp("bvlc", datalink_string) == 0) {
|
|
||||||
datalink_init = bip_init;
|
|
||||||
datalink_send_pdu = bvlc_send_pdu;
|
|
||||||
datalink_receive = bvlc_receive;
|
|
||||||
datalink_cleanup = bip_cleanup;
|
|
||||||
datalink_get_broadcast_address = bip_get_broadcast_address;
|
|
||||||
datalink_get_my_address = bip_get_my_address;
|
|
||||||
} else if (strcasecmp("bip6", datalink_string) == 0) {
|
} else if (strcasecmp("bip6", datalink_string) == 0) {
|
||||||
datalink_init = bip6_init;
|
Datalink_Transport = DATALINK_BIP6;
|
||||||
datalink_send_pdu = bip6_send_pdu;
|
|
||||||
datalink_receive = bip6_receive;
|
|
||||||
datalink_cleanup = bip6_cleanup;
|
|
||||||
datalink_get_broadcast_address = bip6_get_broadcast_address;
|
|
||||||
datalink_get_my_address = bip6_get_my_address;
|
|
||||||
} else if (strcasecmp("bvlc6", datalink_string) == 0) {
|
|
||||||
datalink_init = bip6_init;
|
|
||||||
datalink_send_pdu = bvlc6_send_pdu;
|
|
||||||
datalink_receive = bvlc6_receive;
|
|
||||||
datalink_cleanup = bip6_cleanup;
|
|
||||||
datalink_get_broadcast_address = bip6_get_broadcast_address;
|
|
||||||
datalink_get_my_address = bip6_get_my_address;
|
|
||||||
} else if (strcasecmp("ethernet", datalink_string) == 0) {
|
} else if (strcasecmp("ethernet", datalink_string) == 0) {
|
||||||
datalink_init = ethernet_init;
|
Datalink_Transport = DATALINK_ETHERNET;
|
||||||
datalink_send_pdu = ethernet_send_pdu;
|
|
||||||
datalink_receive = ethernet_receive;
|
|
||||||
datalink_cleanup = ethernet_cleanup;
|
|
||||||
datalink_get_broadcast_address = ethernet_get_broadcast_address;
|
|
||||||
datalink_get_my_address = ethernet_get_my_address;
|
|
||||||
} else if (strcasecmp("arcnet", datalink_string) == 0) {
|
} else if (strcasecmp("arcnet", datalink_string) == 0) {
|
||||||
datalink_init = arcnet_init;
|
Datalink_Transport = DATALINK_ARCNET;
|
||||||
datalink_send_pdu = arcnet_send_pdu;
|
|
||||||
datalink_receive = arcnet_receive;
|
|
||||||
datalink_cleanup = arcnet_cleanup;
|
|
||||||
datalink_get_broadcast_address = arcnet_get_broadcast_address;
|
|
||||||
datalink_get_my_address = arcnet_get_my_address;
|
|
||||||
} else if (strcasecmp("mstp", datalink_string) == 0) {
|
} else if (strcasecmp("mstp", datalink_string) == 0) {
|
||||||
datalink_init = dlmstp_init;
|
Datalink_Transport = DATALINK_MSTP;
|
||||||
datalink_send_pdu = dlmstp_send_pdu;
|
} else if (strcasecmp("none", datalink_string) == 0) {
|
||||||
datalink_receive = dlmstp_receive;
|
Datalink_Transport = DATALINK_NONE;
|
||||||
datalink_cleanup = dlmstp_cleanup;
|
}
|
||||||
datalink_get_broadcast_address = dlmstp_get_broadcast_address;
|
}
|
||||||
datalink_get_my_address = dlmstp_get_my_address;
|
|
||||||
|
bool datalink_init(char *ifname)
|
||||||
|
{
|
||||||
|
bool status = false;
|
||||||
|
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
status = true;
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
status = arcnet_init(ifname);
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
status = ethernet_init(ifname);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
status = bip_init(ifname);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
status = bip6_init(ifname);
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
status = dlmstp_init(ifname);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
int datalink_send_pdu(BACNET_ADDRESS *dest,
|
||||||
|
BACNET_NPDU_DATA *npdu_data,
|
||||||
|
uint8_t *pdu,
|
||||||
|
unsigned pdu_len)
|
||||||
|
{
|
||||||
|
int bytes = 0;
|
||||||
|
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
bytes = pdu_len;
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
bytes = arcnet_send_pdu(
|
||||||
|
dest, npdu_data, pdu, pdu_len);
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
bytes = ethernet_send_pdu(
|
||||||
|
dest, npdu_data, pdu, pdu_len);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
bytes = bip_send_pdu(
|
||||||
|
dest, npdu_data, pdu, pdu_len);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
bytes = bip6_send_pdu(
|
||||||
|
dest, npdu_data, pdu, pdu_len);
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
bytes = dlmstp_send_pdu(
|
||||||
|
dest, npdu_data, pdu, pdu_len);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t datalink_receive(
|
||||||
|
BACNET_ADDRESS *src, uint8_t *pdu, uint16_t max_pdu, unsigned timeout)
|
||||||
|
{
|
||||||
|
uint16_t bytes = 0;
|
||||||
|
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
bytes = arcnet_receive(
|
||||||
|
src, pdu, max_pdu, timeout);
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
bytes = ethernet_receive(
|
||||||
|
src, pdu, max_pdu, timeout);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
bytes = bip_receive(
|
||||||
|
src, pdu, max_pdu, timeout);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
bytes = bip6_receive(
|
||||||
|
src, pdu, max_pdu, timeout);
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
bytes = dlmstp_receive(
|
||||||
|
src, pdu, max_pdu, timeout);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
void datalink_cleanup(void)
|
||||||
|
{
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
arcnet_cleanup();
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
ethernet_cleanup();
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
bip_cleanup();
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
bip6_cleanup();
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
dlmstp_cleanup();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void datalink_get_broadcast_address(BACNET_ADDRESS *dest)
|
||||||
|
{
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
arcnet_get_broadcast_address(dest);
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
ethernet_get_broadcast_address(dest);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
bip_get_broadcast_address(dest);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
bip6_get_broadcast_address(dest);
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
dlmstp_get_broadcast_address(dest);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void datalink_get_my_address(BACNET_ADDRESS *my_address)
|
||||||
|
{
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
arcnet_get_my_address(my_address);
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
ethernet_get_my_address(my_address);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
bip_get_my_address(my_address);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
bip6_get_my_address(my_address);
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
dlmstp_get_my_address(my_address);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void datalink_set_interface(char *ifname)
|
||||||
|
{
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
(void)ifname;
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
(void)ifname;
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
(void)ifname;
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
(void)ifname;
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
(void)ifname;
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
(void)ifname;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void datalink_maintenance_timer(uint16_t seconds)
|
||||||
|
{
|
||||||
|
switch (Datalink_Transport) {
|
||||||
|
case DATALINK_NONE:
|
||||||
|
break;
|
||||||
|
case DATALINK_ARCNET:
|
||||||
|
break;
|
||||||
|
case DATALINK_ETHERNET:
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP:
|
||||||
|
bvlc_maintenance_timer(seconds);
|
||||||
|
break;
|
||||||
|
case DATALINK_BIP6:
|
||||||
|
bvlc6_maintenance_timer(seconds);
|
||||||
|
break;
|
||||||
|
case DATALINK_MSTP:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#if defined(BACDL_ETHERNET)
|
#if defined(BACDL_ETHERNET)
|
||||||
#include "bacnet/datalink/ethernet.h"
|
#include "bacnet/datalink/ethernet.h"
|
||||||
|
#define MAX_MPDU ETHERNET_MPDU_MAX
|
||||||
|
|
||||||
#define datalink_init ethernet_init
|
#define datalink_init ethernet_init
|
||||||
#define datalink_send_pdu ethernet_send_pdu
|
#define datalink_send_pdu ethernet_send_pdu
|
||||||
@@ -41,6 +42,7 @@
|
|||||||
|
|
||||||
#elif defined(BACDL_ARCNET)
|
#elif defined(BACDL_ARCNET)
|
||||||
#include "bacnet/datalink/arcnet.h"
|
#include "bacnet/datalink/arcnet.h"
|
||||||
|
#define MAX_MPDU ARCNET_MPDU_MAX
|
||||||
|
|
||||||
#define datalink_init arcnet_init
|
#define datalink_init arcnet_init
|
||||||
#define datalink_send_pdu arcnet_send_pdu
|
#define datalink_send_pdu arcnet_send_pdu
|
||||||
@@ -52,6 +54,7 @@
|
|||||||
|
|
||||||
#elif defined(BACDL_MSTP)
|
#elif defined(BACDL_MSTP)
|
||||||
#include "bacnet/datalink/dlmstp.h"
|
#include "bacnet/datalink/dlmstp.h"
|
||||||
|
#define MAX_MPDU DLMSTP_MPDU_MAX
|
||||||
|
|
||||||
#define datalink_init dlmstp_init
|
#define datalink_init dlmstp_init
|
||||||
#define datalink_send_pdu dlmstp_send_pdu
|
#define datalink_send_pdu dlmstp_send_pdu
|
||||||
@@ -65,6 +68,7 @@
|
|||||||
#include "bacnet/datalink/bip.h"
|
#include "bacnet/datalink/bip.h"
|
||||||
#include "bacnet/datalink/bvlc.h"
|
#include "bacnet/datalink/bvlc.h"
|
||||||
#include "bacnet/basic/bbmd/h_bbmd.h"
|
#include "bacnet/basic/bbmd/h_bbmd.h"
|
||||||
|
#define MAX_MPDU BIP_MPDU_MAX
|
||||||
|
|
||||||
#define datalink_init bip_init
|
#define datalink_init bip_init
|
||||||
#define datalink_send_pdu bip_send_pdu
|
#define datalink_send_pdu bip_send_pdu
|
||||||
@@ -85,6 +89,8 @@ void routed_get_my_address(
|
|||||||
#include "bacnet/datalink/bip6.h"
|
#include "bacnet/datalink/bip6.h"
|
||||||
#include "bacnet/datalink/bvlc6.h"
|
#include "bacnet/datalink/bvlc6.h"
|
||||||
#include "bacnet/basic/bbmd6/h_bbmd6.h"
|
#include "bacnet/basic/bbmd6/h_bbmd6.h"
|
||||||
|
#define MAX_MPDU BIP6_MPDU_MAX
|
||||||
|
|
||||||
#define datalink_init bip6_init
|
#define datalink_init bip6_init
|
||||||
#define datalink_send_pdu bip6_send_pdu
|
#define datalink_send_pdu bip6_send_pdu
|
||||||
#define datalink_receive bip6_receive
|
#define datalink_receive bip6_receive
|
||||||
|
|||||||
@@ -33,15 +33,15 @@
|
|||||||
|
|
||||||
/* defines specific to MS/TP */
|
/* defines specific to MS/TP */
|
||||||
/* preamble+type+dest+src+len+crc8+crc16 */
|
/* preamble+type+dest+src+len+crc8+crc16 */
|
||||||
#define MAX_HEADER (2+1+1+1+2+1+2)
|
#define DLMSTP_HEADER_MAX (2+1+1+1+2+1+2)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define DLMSTP_MPDU_MAX (DLMSTP_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
typedef struct dlmstp_packet {
|
typedef struct dlmstp_packet {
|
||||||
bool ready; /* true if ready to be sent or received */
|
bool ready; /* true if ready to be sent or received */
|
||||||
BACNET_ADDRESS address; /* source address */
|
BACNET_ADDRESS address; /* source address */
|
||||||
uint8_t frame_type; /* type of message */
|
uint8_t frame_type; /* type of message */
|
||||||
uint16_t pdu_len; /* packet length */
|
uint16_t pdu_len; /* packet length */
|
||||||
uint8_t pdu[MAX_MPDU]; /* packet */
|
uint8_t pdu[DLMSTP_MPDU_MAX]; /* packet */
|
||||||
} DLMSTP_PACKET;
|
} DLMSTP_PACKET;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
#include "bacnet/npdu.h"
|
#include "bacnet/npdu.h"
|
||||||
|
|
||||||
/* specific defines for Ethernet */
|
/* specific defines for Ethernet */
|
||||||
#define MAX_HEADER (6+6+2+1+1+1)
|
#define ETHERNET_HEADER_MAX (6+6+2+1+1+1)
|
||||||
#define MAX_MPDU (MAX_HEADER+MAX_PDU)
|
#define ETHERNET_MPDU_MAX (ETHERNET_HEADER_MAX+MAX_PDU)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
Reference in New Issue
Block a user