* ci: Fix compile warning as errors was not correct
We want to enable warning as errors both Windows and Linux. This is
easiest to do with cmake option as -Werror does not work with MSVC. Also
it is self explaining what it does so no comment needed.
* dlmstp_linux: Fix -Wdeclaration-after-statement compiler warnings
Make dlmstp_linux C89/C90 combatible
```
/bacnet-stack/ports/linux/dlmstp_linux.c: In function ‘Timer_Silence’:
/bacnet-stack/ports/linux/dlmstp_linux.c:56:5: warning:
ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
56 | int32_t res;
| ^~~~~~~
/bacnet-stack/ports/linux/dlmstp_linux.c: In function ‘dlmstp_init’:
/bacnet-stack/ports/linux/dlmstp_linux.c:795:5: warning:
ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
795 | struct termios newtio;
| ^~~~~~
```
* Fix warnings produces by MSVC
Now that we have enabled /Wall for MSVC we get some warnings with it
which can be easily fixed.
We get following warnings:
```
src\bacnet\bacstr.c(223,39): warning C4127: conditional expression is constant
apps\router-mstp\main.c(1123,1): warning C4702: unreachable code
apps\epics\main.c(885,53): warning C4459: declaration of 'myState' hides global declaration
```
* cmake: Use /Wall with MSVC
Make MSVC to build cleanly with Wall. This might matter for some Windows
developers. And you never know if MSVC will find more bugs.
* cmake: Improve router build
Router build gives some warnings as it is not C90 compatible. It is ok
that example is not following C90 rules. Also it is annoing to new user
to build this cmake as first error usually is that libconfig is not
found. Let's just give warning about this so first build will usually go
smoother.
---------
Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
* Add and remove compiler warning compile options
Add some new compiler warnings. Some of those does not build clean so
ignore them for now. This also helps if some user use those options so
we ignore those for them also.
Also remove following ignores as they do not produce any warnings:
- Wno-attributes
- Wno-long-long
- Wno-implicit-fallthrough
* Fix -Wmissing-declarations compiler warnings
Fix new -Wmissing-declarations compiler warnings. I tried to look which
should be in headers and which should be static. Might be that some
statics should be in header as it is not easy to choose if something
should be exported or not.
* Fix -Wmissing-field-initializers compiler warnings
If we use { { 0 } } compiler thinks we might have mean that we only
meant initialize first member of struct or have forgotton to add second
one. We could do { { 0 }, 0 } but we can just do { 0 } which tells
compiler that hey just intialize this whole thing to zero.
* tests: Fix couple -Wfloat-conversion warnings
Add f prefix to floating point numbers to get some double to float
warnings away.
* ci: Make warnings as errors with cmake main build
To keep repo more clean from warnings use Werror flag when building main
project.
Windows should need -DCMAKE_C_FLAGS="/WX" but we have not ignore errors
for that yet so let's not yet take it in use.
* ci: Build also tests in matrix build
Enable also tests to be builded in our main matrix build. This way tests
will be builded also with clang and in future also with MSVC. We also
keep build very clean now as all warnings as catched.
With this we can also take out -Werror from compile_options as we add
that in CI. It is not good practice to keep that option always on. It
makes development lot harder. See example this blog post [1].
[1]: https://embeddedartistry.com/blog/2017/05/22/werror-is-not-your-friend/
* getevent: Deprecate getevent_encode_apdu()
Steve suggested that we should deprecate getevent_encode_apdu() [1].
Suggested-by: Steve Karg
[1]: https://github.com/bacnet-stack/bacnet-stack/pull/718#discussion_r1715821735
---------
Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
* Change MIT license texts to SPDX-License-Identifier
SPDX-License-Identifier is much easier to understand and grep than
license text so use that instead.
* Change GPL exception license texts to SPDX-License-Identifier
SPDX-License-Identifier is much easier to understand and grep than
license text so use that instead.
* Change misc license texts to SPDX-License-Identifier
There are some external code in repo which are not licenses as most of
the stuff in this repo. We still want every file to have SPDX identifier
to easily grep licenses.
* Add currently used license files
Even though Bacnet-Stack is using SPDX identifiers we still need to give
those license files with source. For this reason add all license files
to license/ folder.
SPDX has also files which would make same thing but this is style which
example Linux kernel is using and it is quite clear so I choose that one
for now.
I choosed not yet bring CC-PDDC as that is not right license for those
files.
---------
Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
* 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 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>
* 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>
* moving folders and files and adjust server demo build
* Fix Makefile for apps/server on Linux
* fix unit test source file folders
* fix datetime convert UTC functions. Add Code::Blocks project for datetime testing
* added some ignore extensions
* disable parallel make option
* fix build for abort, dcc, and epics apps
* fix build for dcc, epics, error, and getevent apps.
* Fixed building of all apps
* fix the ipv4 to ipv6 router app build
* Change indent style from Google to Webkit
* make pretty to re-format style
* removed common Makefile since we already had one and two was too many
* remove scripts from root folder that are no longer maintained or used
* remove mercurial EOL and ignore files for git repo
* remove .vscodeconfig files from repo
* tweak clang-format style
* clang-format src and apps with tweaked style
* added clang-tidy to fix readability if braces in src
* result of make tidy for src and apps
* fix clang-tidy mangling
* Added code::blocks project for BACnet server simulation
* added code::blocks linux project for WhoIs app
* update text files for EOL
* fix EOL in some files
* fixed make win32 apps for older gcc
* Removed Borland C++ Makefile in apps. Unable to maintain support for Borland C++ compiler.
* created codeblocks project for apps/epics for Windows
* fixing ports/xplained to work with new data structure.
* fix ports/xplained example for Atmel Studio compile
* fix ports/stm32f10x example for gcc Makefile compile
* fix ports/stm32f10x example for IAR EWARM compile
* fix ports/xplained timer callback
* fix ports/bdk_atxx_mspt build with subdirs
* fix ports/bdk_atxx_mspt build with subdirs
* updated git ignore for IAR build artifacts
* updated gitignore for non-tracked files and folders
* fixed bdk-atxx4-mstp port for Rowley Crossworks project file
* fixed bdk-atxx4-mstp port for GCC AVR Makefile
* fixed atmega168 port for IAR AVR and GCC AVR Makefile
* fixed at91sam7s port for IAR ARM and GCC ARM Makefile
* removed unmaintainable DOS, RTOS32, and atmega8 ports. Updated rx62n (untested).
* changed arm7 to uip port