* Added basic structured view object and unit test. Added example structured view into server example.
* Removed creation of objects from basic device object into the server example
* Fixed example app router-ipv6 to build under ports/win32
* Fixed example app router-mstp to build under ports/win32 with MinGW
* Added win32 builds of router-ipv6 and router-mstp to the Github pipeline
* Added required linux Ethernet library for ethernet build
* Added .obj to gitignore
* Fixed BACnet port for APPLE to use BSD in CMake
* Changed format in CMake to enable cleaner SC merge
* Added create-object and delete-object recipes in GCC Makefile
* Added datalink timer to all example OS apps
* Changed most microcontroller ports to use BACAPP_MINIMAL to specify which datatypes can be written.
* Fixed zephyr OS for BACnet/IP warning
* Fixed zephyr OS log to not require log_strdup
* Added writefile API to file object example
* Added API to device-client to make it more robust.
* Added API in network-port object for getting the ASCII object-name
* Added debug print with a timestamp option
* Added debug print with hex dump print
* Added API to network port object for activate and discard
* Added default define for debug with timestamp
* Added prototype in header for disabled debug printf.
* Added fifo peek ahead function to peek at more than one byte.
* Added get-mac value for network port that uses buffer rather than octetstring
* 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.
* 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).
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* Added IPv6 Foreign Device Registration for apps
* Fix debug message in BACnet/IPv6 Linux port
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* BIP: add socket to listen to broadcast packets for Linux/Windows/BSD/Zephyr
* BIP: added BVLC broadcast handler to drop a packet when confirmed broadcast request is sent.
* https://sourceforge.net/p/bacnet/bugs/65/
* Add APDU as NULL to get BACnet type lengths.
* Fix bacapp copy test to succeed
* fix BACnet REAL and DOUBLE decode
* Add unit test for NULL APDU encoding for length
* Add unit tests for bacapp context
* refactor host-n-port to hostnport.c module
* fix BVLC decoder
* additional unit testing for bacapp
* include bacdevobjpropref module in builds
* simplify bacapp snprintf to be able to return length
* adjust compiler for variable-length arrays
* fix bug found by scan-build
Authored-by: Steve Karg <skarg@users.sourceforge.net>
Used Yaniv S posted solution for MS VS 2017 which took
the sln (solution) from version 0.9.1 and updated it to
compile as static lib for 1.x.x branch.
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* Move win32 specific checks to bacport.h module
* Create IPv6 snprintf function in bvlc6.c module
* Improve BIP6 debug for win32 port
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* Added zeroing rx buffer remain
* Added zeroing rx buffer remain
* Added safety margin for the rx-buffer in the different ports.
* Added safety margin for the receive buffer.
* Added DoxyGen comments.
* Fixed checking return value when calculating distance between opening and closing tag on multiple properties.
* Added pretty-apps and pretty-ports make targets
* pretty-fied apps folder C files
* Pretty-fied ports folder C and H files
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* refactor BACnet/IPv4 BVLC into encode-decode library with unit tests
Added Read-Broadcast-Distribution-Table encoding and unit test.
Added Read-Broadcast-Distribution-Table-Ack encoding and unit test.
Added Read-Foreign-Device-Table-Ack encoding and unit test.
Added some BDT/FDT diff copy functions with unit tests
Added some FDT add and delete entry functions with unit tests
Added some BDT set append and clear entry functions with unit tests
Added some BIPv4 address conversion functions with unit tests
Added non-BBMD handling unit test
Added basic unit test for BBMD handler
Added BBMD broadcast mask get set and unit tests
Added IPv6 maintenance timer.
Added ReadFDT app
Fixed ReadBDT app
Added Who-Is to Makefile for individual app build
Fixed debugging code blocks projects by swapping bip.c for h_bbmd.c module.
Ported BACnet/IPv4 to refactored BVLC for Linux, BSD, Windows
Fix datalink debug for DLENV module
Improve BIPv4 linux driver debug info
Added BDT mask functions
Reduce debug info clutter in Who-Is app by using environment option
Fix TTL seconds upper bounds addition
Fix CIDR prefix calculation on Linux BIPv4.
Convert BSD BIPv4 to BVLCv4
Fix CMake build for BIPv4 (Linux, BSD, Windows)
Added [U]nsigned to 0xBAC0 constants
Cleanup POSIX and Win32 API sockets
Remove unnecessary file scope variable initialization
Fix routed NPDU to depend on datalink; fix warning
Remove OS dependent network code from gateway
Enable BBMD client in library by default
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
Co-authored-by: Steve Karg <steve.karg@legrand.us>
* remove dependency on OS for time functions.
* add datetime epoch to and from seconds (yikes! 64-bit!). Add symmetric midnight seconds for unit test. Add unit tests.
* clean up BACnet date time warnings
* fix BACnet datetime warnings
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* fix BVLC6 Delete-Foreign-Device-Table-Entry
* Add unit test failure detection to Makefile report target
* Fix the IPv6 layers for sending PDU
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
* Add BAC_ROUTING compile definition
* Reorder cmake
* Fix OpenSSL support: support both 1.0 and 1.1t pus
* Explicitly export symbols, hidden by default
* Build shared libraries on travis using cmake
* Learn Makefile about static library
* Fix build using mingw with cmake
* Do not cleanup twice or after potential free