Commit Graph

142 Commits

Author SHA1 Message Date
Steve Karg adf6b5f1fb Bugfix/zephyr defines kconfig (#610)
* Added COV features to time-value object

* Added zephyr config names with BACNET prefix
2024-04-01 13:58:37 -05:00
Steve Karg a4910d4117 Bugfix/zephyr build for minimal ram (#606)
* Removed BACnet objects from ports/zephyr. There should only be datalink and OS related interfaces in OS ports.

* Added Kconfig and bacnet-config.h options in ports/zephyr to keep small footprint for MCUs having less RAM

* Changed ports/zephry for BACnet/IP and date-time with latest zephyr OS
2024-03-26 14:21:30 -05:00
Steve Karg 31ffc8024e Bugfix/double float promotion warnings (#605)
* Fixed compile warnings from double-float promotions.

* Changed zephyr compile to suppress deprecation warnings

* Fixed CreateObject API return value in many objects header files

* Changed zephyr build defines as strdup is no longer required for log print of strings
2024-03-26 09:45:01 -05:00
Steve Karg 1520f2c612 Add core stack headers into bacdef.h and cleanup includes. (#602)
* Added dependent BACnet stack headers into bacdef.h file.

* Changed bacdef.h and other stack includes in c/h files to have a common pattern.

* Moved bits.h, bytes.h, and bacnet_stack_exports.h under bacnet/basic/sys/ folder.
2024-03-15 16:58:52 -05:00
Steve Karg f0760e2b96 Require bacdef.h as first bacnet header to include (#598) (#600)
* Require bacdeps.h as first bacnet header to include

BACnet headers need to pull in optional configuration and
optional ecosystem overrides to allow integrators to control
builds.  This commit changes bacnet header files to first
include bacnet/bacdep.h to consistently introduce integrator
header files.

Verified by:

1. make clean all test

2. ./zephyr/scripts/twister -p unit_testing \
        -T bacnet-stack/zephyr/tests/



* Migrate BACNET_UNSIGNED_INTEGER defn to bacdef.h

Verified by:

1. make clean all test

2. ./zephyr/scripts/twister -p unit_testing \
        -T bacnet-stack/zephyr/tests/



---------

Signed-off-by: Gregory Shue <gregory.shue@legrand.com>
Co-authored-by: Greg Shue <32416235+gregshue@users.noreply.github.com>
Co-authored-by: Gregory Shue <gregory.shue@legrand.com>
2024-03-13 16:27:56 -05:00
Steve Karg cbe7d2a8ed Added support for both DFR0259 and LINKSPRITE RS485 shield in build (#588)
* Added SHIELD=dfr0259 or SHIELD=linksprite build options to RS485 driver for stm32f4xx port.
2024-03-02 07:20:27 -06:00
Steve Karg 5c55683f86 Fixed makefile for building the Linux router application. (#585)
* Fixed Makefile for building the Linux router application.
2024-02-28 17:08:00 -06:00
Steve Karg 84c638e5a1 remove ARM library for stm32f4xx port 2024-02-16 10:24:06 -06:00
Steve Karg 89fa3cea77 Fixed the Network Port object subnet mask for IP example. (#573) 2024-02-13 14:15:59 -06:00
Steve Karg 851d10bc02 Move some platform compile fixes into platform.h file 2024-02-08 14:54:17 -06:00
Steve Karg 1f591db6e7 Feature/mstp zero config option (#564)
* 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).
2024-02-02 11:18:20 -06:00
Mikhail Antropov 8f576461a8 Feature/oscbs 29 calendar time object (#440)
* Added basic Calendar object, unit tests, and integration with example device object.

* Added basic Time Value object, unit tests, and integration with example device object.

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2024-02-01 23:01:27 -06:00
Ondřej Hruška 340bd09561 Implement missing data types for calendar and schedule (#474)
* Added the SpecialEvent struct for the Exception_Schedule property of Schedule, encode/decode/same functions, unit tests, and integrated into bacapp functions.

* Added the CalendarEntry struct for the Date_List property of Calendar and the SpecialEvent struct, encode/decode functions, unit tests, and integrated into bacapp functions.

* Added the DateRange struct for the Effective_Period property of Schedule, encode/decode functions, unit tests, and integrated into bacapp functions.

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2024-02-01 10:57:46 -06:00
Steve Karg 34b1d24bb7 Build/add cmake to ports at91sam7 (#560)
* added CMake to AT91SAM7S port example

* Add ports AT91SAM7S and STM32F4xx CMake builds into pipeline
2024-01-27 16:00:22 -06:00
Steve Karg ef762118a6 Chore/refactor dlmstp core mstp (#559)
* Create common DLMSTP using core MSTP FSM in STM32F4xx example

* add openocd debug launcher under vscode in STM32F4xx example

* Add generic property list member checking for write property members of network port object in STM32F4xx example
2024-01-27 15:16:42 -06:00
Steve Karg 587e3c5a11 Chore/refactor automac unit test (#557)
* move ports automac module into bacnet/datalink and add unit test.
2024-01-12 16:14:24 -06:00
Steve Karg ebc47571ba Bugfix/stm32f4xx port example updates (#556)
* Added CMake build option for stm32f4xx

* port some fixes and comments from bacnet/basic/object/device.c module
2024-01-08 15:27:46 -06:00
Steve Karg ead190584c Fix COBS conversion for large MSTP data-not-expecting-reply frames. (#550)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-12-31 19:38:00 -06:00
Steve Karg 19539c3fd5 Add hex file output recipe to ports/stm32f4xx port 2023-12-17 14:44:56 -06:00
Steve Karg cc84a16c14 Removed rx_fsm.c example which duplicated MSTPCAP features (#544)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-12-09 11:42:14 -06:00
Steve Karg b9a29d8093 add defines for each supported BACAPP_TYPES_EXTRA (#543)
* add defines for each supported BACAPP_TYPES_EXTRA

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-12-01 12:23:44 -06:00
Steve Karg c34e1a72b2 add install recipe for stm32f4xx port example 2023-11-30 23:02:26 -06:00
Steve Karg e1efca9d9e Fix MSTP slave FSM for Data-Expecting-Reply frames (#538)
* Fix MSTP subordinate nodes Data-Expecting-Reply handling

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-11-20 19:08:28 -06:00
Steve Karg 1a55bd7b08 remove duplicate cobs.c file in MSVC project (#535)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-11-16 07:48:10 -06:00
Steve Karg 3c94580bee Added MSTP extended frame transmit. (#531)
* Added MSTP extended frame transmit to bacnet/datalink/mstp.c and ports/stm32f4xx/dlmstp.c modules.

* Changed RS485_Send_Frame to MSTP_Send_Frame in mstp.c

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-11-12 09:49:37 -06:00
Steve Karg 1372e52aa7 Feature/mstp extended frames (#529)
* added MSTP extended frames to bacnet/datalink/mstp.c module. Thank you, Simon!

* auto-size some FIFO buffers for MSTP

* add COBS library to MSTP builds

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-11-08 15:54:18 -06:00
Steve Karg 4991bb6156 Allow processing of Who-Has when DCC initiation is disabled 2023-10-31 10:55:08 -05:00
Steve Karg 0b5474d36e Ignore ReinitializeDevice and DeviceCommunicationControl service password (#518)
* Fix device object ReinitializeDevice service handling examples of no-password in the device. Add unit testing of device object ReinitializeDevice service.  Add API for setting ReinitializeDevice device object password.

* Fix DeviceCommunicationControl service handling example of no-password in the device.

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-10-18 21:32:44 -05:00
Steve Karg 20029d3f7a Issues/issue 513 how to reinitialize a bacnet stack on windows (#514)
* Check init flag before cleaning up WSA for BACnet/IP

* Check for valid socket before cleaning up WSA for BACnet/IPv6

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-10-17 23:40:28 -05:00
BACnetEd 4188f88694 Added new linear.c to Microsoft Visual Studio project (#507) 2023-10-10 07:39:19 -05:00
BACnetEd 693c149644 Upgrading Microsoft Visual Studio toolchain (#502)
* Microsoft Visual Studio 2022 Community Edition contribution ( ports/win )

* Incorporated MSVC 2022 into ports/win32 directory

* merge readme.txt into README.md

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-09-28 17:20:04 -05:00
Steve Karg 75286cffe4 Bugfix/linux bip so bindtodevice error (#498)
* disable extraneous SO_BINDTODEVICE warning in Linux BIP

---------

Co-authored-by: Steve Karg <steve.karg@legrand.us>
2023-09-14 11:09:11 -05:00
Steve Karg 0cfe83d60b add support for building with deprecation bypass 2023-09-13 16:32:07 -05:00
Steve Karg 55b8b3d93c fix BACnet/IP on OS to bind broadcast to specific port (#489)
* Fixes #346 by binding the broadcast socket to the port specific broadcast address rather than INADDR_ANY or INADDR_BROADCAST. Added additional compile and environment options for those who might need them. 

* Changed the define USE_CLASSADDR to BACNET_IP_BROADCAST_USE_CLASSADDR to help manage namespaces.

* Added BACNET_IP_BROADCAST_BIND_ADDR environment variable to override the default broadcast binding address.

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-09-10 10:24:18 -05:00
Steve Karg 0001f85f29 Bugfix/network port object link speeds (#488)
* fix ports/xplained build under Linux

* fix network port object link-speeds property

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-09-08 17:41:56 -05:00
Steve Karg 2b35883df6 Added MSTP Slave Node option to stm32f10x port (#467)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-08-07 09:45:30 -05:00
Steve Karg 7db03ac5e5 Fix spurious interrupts from STM32 ORE (#456)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-07-17 13:49:40 -05:00
Steve Karg 4efaf097c0 Fix [bug#80] npdu_decode via deprecation (#447)
* Fix [bug#80] npdu_decode via deprecation

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-07-10 17:27:10 -05:00
Jefrin da8f93ad79 Fix segfault on mstp cleanup on linux port (#445) 2023-07-08 09:47:50 -05:00
Steve Karg 5b7eac60cf cleaned up lwIP function header javadoc (#441)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-06-28 12:46:56 -05:00
Steve Karg 9bb367982b Improve MSTP debug. Fix WhoIs app APDU timeout. 2023-06-25 09:27:05 -05:00
Steve Karg c02a8281a7 Cleanup win32 build warnings (#431)
* Cleanup win32 build warnings

* Add README for MinGW32 build under Windows

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-05-13 15:13:15 -05:00
Steve Karg ced9dff0f2 Added AddListElement and RemoveListElement services (#418)
* Added AddListElement and RemoveListElement services

Added list-element codec and unit tests.
Added BACnetDestination codec and unit tests.
Added RecipientList handling to NotificationClass object.
Added AddListElement and RemoveListElement client example app.

* Fix defects found by scan-build and CPPCHECK

* Update ports errors found during CI builds

* Update zephy os test build missing files in CMakeLists

---------

Co-authored-by: Ondřej Hruška <ondra@ondrovo.com>
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-04-16 14:12:11 -05:00
Steve Karg e517df0d47 Bugfix/bacnet array encoding overflows (#414)
* Add common BACnetARRAY encode function to fix Device object list buffer overflow. Refactor device, analog-output, access-door and binary-output objects to use common BACnetARRAY encoder.

* Fix non-POSIX builds (win32).

* Cleanup some ports/stm32 build warnings
---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-04-13 20:43:54 -05:00
jci-zimm 064c6f7f1c MSTP stat lost_token_counter was missing a drop case (#421)
Co-authored-by: jzimmen_jcplc <nathan.m.zimmerman@jci.com>
2023-04-13 20:36:22 -05:00
Steve Karg 261a506eb4 refactor mstimer callback handling (#400)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2023-02-18 10:02:13 -06:00
Greg Shue eb36033fd8 [OSCBS-41] Update to Zephyr v3.2.0 (#382)
Updating to integrate with Zephyr v3.2.0 required:

- Update `west.yml` to import Zephyr v3.2.0 manifest
- Prefix include pathname of ztest.h with `zephyr/`
- Prefix every Zephyr header included pathname with `zephyr/`
- Change all Zephyr tests/samples to use `find_package`
- For unit_testing, use a distinct prj.conf which only references
  Kconfigs defined in the Zephyr repo. (Zephyr constraint.)
- Move ztest headers into a zephyr-prefixed pathname

Co-authored-by: Gregory Shue <gregory.shue@legrand.com>
2023-01-18 08:50:31 -08:00
Greg Shue b8d345679b Oscbs 33 ci zephyr port (#375)
* zephyr: twister build fixes/patches

* zephyr: hack: suppress bvlc test (build failures)

Co-authored-by: Gregory Shue <gregory.shue@legrand.com>
2023-01-05 16:53:29 -08:00
Steve Karg b91735af13 Bugfix/code clean using gcc warnings (#371)
* Enable extra GCC warnings to discover subtle bugs

* convert c++ comments to c comments

* cleanup pedantic compiler warnings

* Compile apps with GNU89 GNU99 GNU11 and GNU17

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
2022-12-25 21:43:51 -06:00
Patrick Grimm 8e6b3fafab Feature/bacnet ipv6 bind interface for link local comunication (#359) 2022-11-20 14:29:11 -06:00