BlackBox- генератор исходного кода (JAVA, C#, C) обработки бинарного протокола Вашего распределенного приложения

geek.png

В продолжение темы , где читатели сконцентрировавшись исключительно на теме интерфейса (хулиганы кнопок и энкодеров лишают), совершенно упустили, что предложение вынести интерфейс с микроконтроллера на мобильник или компьютер всего лишь один, из многочисленных вариантов применения кодогенератора BlackBox.
Прошло некоторое время, проект развивается и самое время написать исключительно о самом кодогенераторе.

Напомню, что кодогенератор BlackBox генерирует исходный код (JAVA, C#, C) обработки протокола обмена, согласно описанию пользователя, в предопределенном формате. Это обычный JAVA файл для, редактирования которого к JAVA проекту нужно подключить набор аннотаций описания данных и следовать небольшому набору правил.
Описав протокол обмена, пакеты, каналы, хосты, коммуникационные интерфейсы, топологию сети и указав языки (JAVA, C#, C) на которых вам нужен исходный код, проверяем, что ошибок нет и файл успешно компилируется.

После чего отправляем исходник в виде аттачмента письма, на почтовый адрес OneBlackBoxPlease@outlook.com.
Сервер периодически забирает присланные спецификации, проверяет их корректность.
Генерирует заказанный в спецификации исходный код, на требуемых языках программирования.
После чего, создает несколько тестов и исходники прогоняются через них.
Если все тесты прошли успешно, то сгенерированный код, последний прошедший тест, а также пример использования заказанного API упаковывается в архив и высылается адресату.
В случае обнаружения ошибки, отправитель уведомляется о возможной задержке, а служба поддержки BlackBox разбирается с возникшим затруднением.

Содержимое высылаемого архива может, например, выглядеть так.


И вот недавно, для подтверждения зрелости и в качестве демонстрации возможностей BlackBox, был создан проект конвертации информации о пакетах широко известного протокола управления беспилотными устройствами MAVLink в формат BlackBox.
В MAVLink описание протокола происходит в XML формате. В формате BlackBox этот файл выглядит так.
Конечно BlackBox имеет существенно большее, по сравнению с MAVLink, разнообразие типов данных, поэтому проект демонстрирует только часть возможностей BlackBox. Подробнее о проекте конвертации можно прочитать тут.

Результат проекта подтвердил — BlackBox легко может заменить MAVLink. Все тесты пройдены успешно, все прекрасно работает. Но, для того чтобы, в контексте MAVLink, воспользоваться всеми возможностями BlackBox, придется пересматривать описание протокола.


Итоги:
Если Вы в процессе написания своего распределенного приложения, задумались о протоколе обмена, Вас не устраивает производительность уже используемого протокола или надоело выискивать ошибки и страдать при расширении протокола — попробуйте BlackBox.

Помимо очевидного применения в распределенных приложениях, с BlackBox Вы легко сможете например: написать свой протокол к SQLite, на любом из языков JAVA, C#, C,
создать свой оптимальный формат выгрузки информации в файл, с последующим чтением.
И конечно же… перенести интерфейс управления микропроцессором на сторону оператора.

© Geektimes