1f591db6e7
* Added a MS/TP zero-config (automatically choose an unused MAC address) using an algorithm that starts with MAC=64 and waits for a random number of PFM (minimum of 8 plus modulo 64) before attempting to choose a MAC sequentially from 64..127. The confirmation uses a 128-bit UUID with the MSTP Test Request frame. The modifications are in src/bacnet/datalink/mstp.c and src/bacnet/datalink/dlmstp.c modules enabling any device to use zero-config if enabled. A working demonstration is in the ports/stm32f4xx for the NUCLEO board. Complete unit testing is included. Options include lurking forever (wait for a router or another master node before joining) or lurking for a minimum time (enables self forming automatic MAC addressing device nodes).
55 lines
1.2 KiB
CMake
55 lines
1.2 KiB
CMake
# SPDX-License-Identifier: MIT
|
|
|
|
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
|
|
|
get_filename_component(basename ${CMAKE_CURRENT_SOURCE_DIR} NAME)
|
|
project(test_${basename}
|
|
VERSION 1.0.0
|
|
LANGUAGES C)
|
|
|
|
|
|
string(REGEX REPLACE
|
|
"/test/bacnet/[a-zA-Z_/-]*$"
|
|
"/src"
|
|
SRC_DIR
|
|
${CMAKE_CURRENT_SOURCE_DIR})
|
|
string(REGEX REPLACE
|
|
"/test/bacnet/[a-zA-Z_/-]*$"
|
|
"/test"
|
|
TST_DIR
|
|
${CMAKE_CURRENT_SOURCE_DIR})
|
|
set(ZTST_DIR "${TST_DIR}/ztest/src")
|
|
|
|
add_compile_definitions(
|
|
BIG_ENDIAN=0
|
|
CONFIG_ZTEST=1
|
|
BACDL_MSTP=1
|
|
)
|
|
|
|
include_directories(
|
|
${SRC_DIR}
|
|
${TST_DIR}/ztest/include
|
|
)
|
|
|
|
add_executable(${PROJECT_NAME}
|
|
# File(s) under test
|
|
${SRC_DIR}/bacnet/datalink/mstp.c
|
|
${SRC_DIR}/bacnet/datalink/mstptext.c
|
|
${SRC_DIR}/bacnet/datalink/crc.c
|
|
${SRC_DIR}/bacnet/datalink/cobs.c
|
|
${SRC_DIR}/bacnet/basic/sys/fifo.c
|
|
${SRC_DIR}/bacnet/indtext.c
|
|
# core files needed
|
|
${SRC_DIR}/bacnet/bacdcode.c
|
|
${SRC_DIR}/bacnet/bacint.c
|
|
${SRC_DIR}/bacnet/bacstr.c
|
|
${SRC_DIR}/bacnet/bacreal.c
|
|
${SRC_DIR}/bacnet/npdu.c
|
|
${SRC_DIR}/bacnet/basic/sys/bigend.c
|
|
# Support files and stubs (pathname alphabetical)
|
|
# Test and test library files
|
|
./src/main.c
|
|
${ZTST_DIR}/ztest_mock.c
|
|
${ZTST_DIR}/ztest.c
|
|
)
|