* fix mstp on macos NS_PER_S is 1s and 0ns
* fix compile on freebsd
* port bsd: add compile warnings and comments
* port bsd: limit pthred prio to OS defined min/max value
e.g. FreeBSD min=0 max=31
* port bsd: fix clangformat
* fix router compile warnings declaration-after-statement overlength-strings
* router disable PRINT(debug_level)
* ports rename dlmstp_[linux|bsd] to dlmstp_port
* copy ports/linux/dlmstp_port.c ports/bsd/dlmstp_port.c
* copy ports/linux/dlmstp_port.c ports/bsd/dlmstp_port.c
* fix typedef in bip_get_local_address_ioctl
* copy ports/linux/dlmstp_port.c ports/bsd/dlmstp_port.c
* add bsd support for router app
* fix clang __attribute__ optimize dont work
clang O2/O3/Os are also not working
* fix pre-commit
* fix bsd SO_BINDTODEVICE is not available
* add brew install libconfig for app router and bsd
* fix BACDL_MSTP test on macOS
* remove old comments
The usleep() function takes microseconds, not milliseconds. So,
T_turnaround needs to be calculated in microseconds. If we don't do
this, at a baud rate of 9600, we end up waiting 4 microseconds instead
of 4 milliseconds, which goes against the rule.
* Make most of the functions const correct
Used clang-tidy and sonarlint to help find places where const could
pretty easily applied. Also lot of hand work.
This commit does not yet touch handlers and typedefs of those.
* Fix Arduino uno handler_who_is() has extra parenthesis
For some reason there is extra parenthesis. Remove it this is more
likely buildable.
* Bugfix/bacapp: Fix uninitilized array_index
We have changed bacapp_snprintf_value() to be const correct. After that
we got
```
/home/runner/work/bacnet-stack/bacnet-stack/src/bacnet/bacapp.c:3183:27: warning: 4th function call argument is an uninitialized value [core.CallAndMessage]
ret_val = bacapp_snprintf_weeklyschedule(
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
```
So analyzer could now spot that we do not actually initilize array_index
at all. Fix this by setting array_index to zero. Note that I actually do
not know if zeroing is right thing to do here. I choose zero as if this
has worked before it is most likely that it will work with zero value.
* cmake: Add and ignore Wwrite-strings compiler option
Wwrite-strings helps find places where const correctness is broken.
Example it will warn about these
```C
void func1(char* str);
func("test") /* "test" is const so we should not pass it to func1().
char* func2()
{
return "test"; /* func2() should return const char*.
}
```
We still need to ignore it as not all are fixed but let's add it already
so we remember that it should be opened at some point.
---------
Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
* Fixed path of exports header in BSD ports.
* Fixed MacOS specific include in BSD ports.
* Fixed MacOS specific IOSSIOSPEED and IOSSDATALAT usage in BSD ports
* Updated the Makefile for mstpcap to accomodate macOS and to build the bacnet lib. Compiling working version of mstpcap on macOS 14, although compiling should work on many earlier versions. The --extcap-interfaces flag now works for macOS which allows one to use mstpcap as an extcap for Wireshark while listing the available serial ports and baud rates.
* note: Had to use uname to figure out if one is on Darwin/macOS vs vanilla BSD. From there, macOS specific supported features and location are used. For instance, the 76800 baud rate is natively supported.
* note: MacOS doesn't like placing the mstpcap executable in the global extcap plugin directory as it corrupts the Wireshark executable from an xattr and SIP (System Integrity Protection) perspective and macOS will refuse to run it calling it 'corrupt'. One could turn off xattr stuff, using xattr -cr, but could be risky long term. A safer, permissible workaround is to place the executable in the user .local extcap directory: '/Users/<your_user_name>/.local/lib/wireshark/extcap/'. If the directory doesn't exist just create it and copy the executable there.
* note: make the executable from the root or apps folder, as there are defines in the apps folder that are common to all the apps. The mstpcap executable is copied to bacnet-stack/bin/ folder.
---------
Co-authored-by: Michael O'Neill <em.pee.oh@gmail.com>