Библиотека C стека протоколов BACnet с открытым исходным кодом для встраиваемых систем, Linux, MacOS, BSD и Windows http://bacnet.sourceforge.net/
Добро пожаловать в чудесный мир BACnet и настоящей совместимости устройств!
Эта библиотека использует автоматизированные службы непрерывной интеграции для помощи в автоматической компиляции, проверке, проверке безопасности, сканировании безопасности и модульном тестировании для создания надежного кода C и функций BACnet.
Рабочий процесс GitHub: сборка CMake библиотеки и демонстрационных приложений для Ubuntu, Windows и MacOS
Рабочий процесс GitHub: сборка библиотеки Ubuntu Makefile GCC, демонстрационные приложения BACnet/IP с BBMD и без него, BACnet/IPv6, BACnet Ethernet и демонстрационные приложения BACnet MSTP, шлюз, маршрутизатор, router-ipv6, router-mstp, порты ARM (STM, Atmel), порты AVR и демонстрационные приложения BACnet/IP, скомпилированные с помощью MinGW32.
Рабочий процесс GitHub: сканирование-сборка (инструменты LLVM Clang), cppcheck, codespell, модульные тесты и покрытие кода.
Анализ CodeQL рабочего процесса GitHub
Эта библиотека стека протоколов BACnet предоставляет коммуникационные услуги уровня приложений BACnet, сетевого уровня и уровня доступа к среде передачи (MAC). Это бесплатная библиотека с открытым исходным кодом для RTOS или встроенной системы «голого железа», а также полной ОС, такой как Windows, Linux, MacOS или BSD.
BACnet — протокол передачи данных для сетей автоматизации и управления зданиями — см. bacnet.org. BACnet — это стандартный протокол передачи данных для сетей автоматизации и управления зданиями. BACnet — это открытый протокол, что означает, что каждый может внести свой вклад в стандарт и любой может его использовать. Единственное предостережение заключается в том, что сам стандартный документ BACnet защищен авторским правом ASHRAE, и они продают этот документ, чтобы покрыть затраты на разработку и поддержку стандарта (аналогично IEEE, ANSI или ISO).
Для разработчиков программного обеспечения протокол BACnet является стандартным способом отправки и получения сообщений, содержащих данные, понятные другим устройствам, совместимым с BACnet. Стандарт BACnet определяет стандартный способ связи по различным проводам или радиоканалам, известный как канал передачи данных/физические уровни: Ethernet, EIA-485, EIA-232, ARCNET и LonTalk. Стандарт BACnet также определяет стандартный способ связи с использованием UDP, IP, HTTP (веб-службы) и веб-сокетов.
Эта реализация стека протоколов BACnet специально разработана для встроенного устройства BACnet с использованием лицензии GPL с исключением (например, eCos), что означает, что любые изменения в распространяемом базовом коде являются общими, но библиотека BACnet может быть связана с проприетарным кодом. без того, чтобы проприетарный код стал лицензией GPL. Текст исключения GPL, включенного в каждый исходный файл, следующий:
* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0
Обратите внимание, что некоторые исходные файлы разработаны как файлы скелета, примеров или шаблонов и не защищены авторским правом GPL. Текст лицензии на эти файлы обозначается в каждом исходном файле следующим образом:
* SPDX-License-Identifier: MIT
* SPDX-License-Identifier: Apache-2.0
Спецификацию программного обеспечения можно создать с помощью grep:
$ grep -nrw SPDX --include=*.[c,h]
Код написан на C для переносимости и включает модульные тесты (модульные тесты на базе ПК). Поскольку код спроектирован как переносимый, он компилируется с помощью GCC, а также других компиляторов, таких как Clang или IAR.
Протокол BACnet является стандартом ASHRAE/ANSI/ISO, поэтому данная библиотека соответствует этому стандарту. BACnet не требует лицензионных отчислений или лицензионных ограничений, а регистрация идентификатора поставщика BACnet бесплатна.
Обзор архитектуры этой библиотеки и способов ее использования см. на странице https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer.
Этот стек включает в себя модульные тесты, которые можно запустить с помощью Makefile в корневом каталоге проекта make test. Модульные тесты также можно запускать с использованием отдельных вызовов make. Модульные тесты выполняются на ПК и продолжают выполняться при каждой фиксации в среде непрерывной интеграции.
Стек BACnet был функционально протестирован с использованием различных инструментов, а также различных контроллеров и рабочих станций. Он был включен во многие продукты, успешно прошедшие тестирование BTL.
Используя Makefile в корневом каталоге проекта, создается дюжина примеров приложений, работающих под Windows или Linux. По умолчанию они используют уровень канала передачи данных BACnet/IPv4 для связи, но могут быть скомпилированы для использования BACnet IPv6, Ethernet, ARCNET или MS/TP.
Linux/Unix/Cygwin
$ make clean all
Windows MinGW Баш
$ make win32
Командная строка Windows
c:> build.bat
Стек BACnet может быть скомпилирован различными компиляторами. Самый распространенный бесплатный компилятор — GCC (или MinGW под Windows). По умолчанию make-файлы используют GCC.
Библиотека также предназначена для использования CMake, который может генерировать проект или файлы Makefile для различных IDE или компиляторов. Например, чтобы создать проект Code::Blocks:
$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"
c:> mkdir build
c:> cd build/
c:> cmake .. -G"CodeBlocks - MinGW Makefiles"
Модульные тесты также используют CMake и могут запускаться с помощью последовательности команд:
$ make test
Платформа модульного тестирования использует слегка модифицированный ztest, а тесты расположены в папке test/. Построитель модульных тестов использует CMake, а тестовое покрытие — LCOV. HTML-результаты покрытия модульного тестирования доступны начиная с файла test/build/lcoverage/index.html.
Все демонстрационные приложения представляют собой клиентские приложения, предоставляющие одну основную службу BACnet, за исключением одного серверного приложения и одного шлюзового приложения, пары приложений маршрутизатора и пары специальных приложений MS/TP. Каждое приложение принимает параметры командной строки и выводит выходные данные на стандартный вывод или стандартный поток ошибок. Клиентские приложения основаны на командной строке и могут использоваться в сценариях или для устранения неполадок. Демонстрационные приложения используют переменные среды для настройки параметров сети. См. каждую отдельную демонстрацию для вариантов.
В каталогеports/ также есть проекты для ARM7, AVR, RTOS-32, PIC и других. Каждый из этих проектов имеет демонстрационное приложение для конкретного оборудования. В случае ARM7 и AVR их make-файл работает с компиляторами GCC, а для ARM существуют файлы проектов для IAR Embedded Workbench и Rowley Crossworks.
Документация проекта находится в каталоге doc/. Аналогичные документы находятся на сайте проекта http://bacnet.sourceforge.net/.
Если вы хотите внести свой вклад в этот проект и обладаете некоторыми навыками программирования на C, присоединяйтесь к нам через https://github.com/bacnet-stack/bacnet-stack/ или через https://sourceforge.net/p/bacnet/src/. и создайте ответвление или ветку и, в конечном итоге, запрос на включение, чтобы ваш код был рассмотрен для включения.
Если вы обнаружите ошибку в этом проекте, сообщите нам об этом по адресу https://sourceforge.net/p/bacnet/bugs/ или https://github.com/bacnet-stack/bacnet-stack/issues.
Если у вас есть запрос в службу поддержки, вы можете опубликовать его по адресу https://sourceforge.net/p/bacnet/support-requests/.
Если у вас есть запрос на добавление функции, вы можете опубликовать его по адресу https://sourceforge.net/p/bacnet/feature-requests/.
Если у вас возникли проблемы с запуском этой библиотеки на вашем устройстве или у вас есть вопрос по BACnet, присоединитесь к списку рассылки разработчиков по адресу: http://lists.sourceforge.net/mailman/listinfo/bacnet-developers или отправьте вопрос на Открытые обсуждения, форумы разработчиков или справочные форумы по адресу https://sourceforge.net/p/bacnet/discussion/.
Я надеюсь, что ваше устройство BACnet заработает!
Стив Карг, Бирмингем, Алабама, США [email protected]
ASHRAE® и BACnet® являются зарегистрированными торговыми марками Американского общества инженеров по отоплению, охлаждению и кондиционированию воздуха, Inc. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092 US.