* Fixed wrong calculation of data length. In cases when 2 sets of opening & closing tags (first opening tag context tag is 3, second is 0) were sent, one of the frames wasn't added, and the resulted sum was wrong
* Added unit test for case with two sets of opening & closing tags
* 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>
* fix ports/xplained build under Linux
* fix network port object link-speeds property
---------
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* Fix ReinitializeDevice service handling of optional password
* Improve ReinitializeDevice service unit testing
---------
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* added or updated secure the BACnet primitive value decoders - the core codecs - named bacnet_x_decode(), bacnet_x_application_decode() and bacnet_x_context_decode where x is one of the 13 BACnet primitive value names. The updated API includes an APDU size to prevent over-reading of an APDU buffer while decoding. Improved or added unit test code coverage for the BACnet primitive value decoders.
* marked the insecure decoding API as 'deprecated' which is defined in src/bacnet/basic/sys/platform.h and can be disabled during a build.
* added secure decoders for BACnetTimeValue, BACnetHostNPort, BACnetTimeStamp, BACnetAddress, and Weekly_Schedule and improved unit test code coverage.
* improved test code coverage for BACnet objects and properties.
* secured AtomicReadFile and AtomicWriteFile service decoders and improved unit test code coverage.
* secured BACnet Error service decoder and improved unit test code coverage.
---------
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
Added BACnet CreateObject and DeleteObject services
* refactored codec for BACnetPropertyValue into bacapp module
* added unit tests for BACnetPropertyValue
* refactored COV and Events to use BACnetPropertyValue codec API
* added unit tests for COV
* added overrun safe decoders for tag numbers and boolean context
* added unit tests and codecs for CreateObject and DeleteObject services
* added APDU service handers and senders for CreateObject and DeleteObject services
* added command line apps bacco and bacdo for CreateObject and DeleteObject services
* added CreateObject and DeleteObject service handling in example server app and device object
* added new BACnetRejectReason, Error Class, and BACnetAbortReason enumerations and conversions
---------
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
the original solution caused that after encode_bacnet_address the apdu pointer was moved too far because apdu_len took into account the length of the opening_tag
* Implement parsing for proprietary events (complex-event-type)
* Fix unit test linking for event.c
---------
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* Update address in VMAC table for IPv6
* fix compile warnings in IPv6 handler
* cleanup BIP6 PRINTF
* enable unit test for BBMD6 hander
* keylist should only return FALSE when growing fails
---------
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* 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>
* 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>
* Add <zephyr/fff.h> from zephyr v3.1.0
Zephyr is deprecating the zmock library in favor of using
the FFF faking library for defining and controlling fake
implementations of depended-upon APIs called by the code-under-test.
Signed-off-by: Gregory Shue <gregory.shue@legrand.com>
* Fix bacerror_decode_service_request return value; add unit tests
bacerror_decode_service_request() return value now includes
the apdu bytes parsed for invoke_id and service.
Also added a unit test for functions in bacerror.c, using `fff`
for faking the depended-upon functions.
Verified by:
1. (Pass) cd $bacnet-stack/test && make test
2. (Pass) west build -p always -b unit_testing \
bacnet-stack/zephyr/tests/unit/bacnet/bacerror/ && \
./build/testbinary
3. (Pass) ./zephyr/scripts/twister -p unit_testing \
-T bacnet-stack/zephyr/tests/unit/bacnet/bacerror/
Signed-off-by: Gregory Shue <gregory.shue@legrand.com>
---------
Signed-off-by: Gregory Shue <gregory.shue@legrand.com>
Co-authored-by: Gregory Shue <gregory.shue@legrand.com>
* Enable dynamic BACnet POSIX files for example
* Add basic unit test for BACnet File object.
* Use example file pathname in demo app.
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* 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>
* Added IPv6 Foreign Device Registration for apps
* Fix debug message in BACnet/IPv6 Linux port
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
print out the Time stamp in ISO 8601 format for event-time-stamps
Signed-off-by: Patrick Grimm <patrick@lunatiki.de>
Signed-off-by: Patrick Grimm <patrick@lunatiki.de>