main_ubi_sdk v 0.1.3
This is UBI4 documentation
Протоколы общения

Модель OSI

Все общение в UBI можно представить как видоизмененную модель OSI.

Представление уровней в UBI

Коротко о каждом уровне:

  • Hardware layer отвечает на вопрос, какой hw порт мы используем. Он должен быть реализован на аппаратном уровне. То есть это настройка портов микроконтроллера, настройка DMA, прерываний и т.д.
  • Port layer отвечает на вопрос, как мы используем hw интерфейс. Он работает hardware интерфейсом, управляет DMA, приемом и отправкой данных.
  • Protocol layer отвечает на вопрос, как обернуть данные в header и CRC. Он описывающий формат данных, их обработку и передачу. Он проверяет целостность данных, и относится ли этот пакет к этому устройству. При отправке пакета он добавляет заголовок и CRC.
  • Receiver layer отвечает на вопрос, что делать с полученными данными. Он обрабатывает принятые команды и запросы от уровня Protocol и вызывает соответствующие функции, забирает данные из User layer и отправляет их на уровень Protocol.
  • User layer отвечает на вопрос, какие данные отдать на запрос. Это уровень, который работает с данными, которые пришли от Receiver layer. Он содержит задекларированные данные для устройства, дата слоты, колбеки и т.д.


HW уровень реализуется в файлах аппаратной платформы (HAL библиотеки для STM32, например). Реализация этого уровня специфична для каждого устройства.
Port, Protocol, Receiver находятся внутри /main_ubi_sdk и требуют корректной инициализации в начале работы (об этом далее). Они описывают алгоритмы передачи данных, поэтому не изменяются от устройства к устройству.
User layer реализуется внутри /SDK и содержит данные, специфичные для работы устройства.

Ресивер

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

Список протоколов

В данный момент в UBI реализованы следующие протоколы.

  • Описание p2p протокола
    P2P протокол предназначен для работы с высокоуровневыми портами USB и BLE. В рамках UBI архитектуры это подключаемые сторонние устройства, вроде мобильного телефона или компьютера.
  • Описание внутрисистемного протокола
    Внутрисистемный протокол, который используется для общения между устройствами внутри системы. Может работать на любом порту, но с usb и ble не используется, потому что есть p2p.

Список портов

В данный момент в UBI реализованы следующие порты:

  • uart_port
  • spi_port
  • onewire_port
  • usb_port
  • ble_port

Список данных устройства

В данный момент в UBI реализованы следующие пользовательские данные:

  • data_slots
  • Parameters
  • parameter_widgets (да, это часть параметров, но описание отдельное)