• О проекте
  • Создание проекта
  • Библиотека
  • Документация
  • Прошивка
  • Qt debugger
  • Python
  • C#
  • TANGO
  • Конвертер профилей
  • Создание проекта

    1. Задать название проекта

    Придумать и задать название проекта, версию и нажать Update

    2. Создать команды.

    2.1. Определить команду

    CID – это 4-буквенный идентификатор, который должен быть уникальным для каждой команды. CID не чувствителен к регистру, поэтому MYID и myId – это один и тот же идентификатор.

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

    2.2. Добавить описание команд

    После добавления команды нажать Edit и добавить описание команды на русском и английском языках в блоке Edit command properties в полях english и russian.

    2.3. Добавить аргументы запроса и ответа команды

    Name – имя аргумента. После генерации проекта к аргументам можно будет обращаться как к полям структуры по их именам. Рекомендуется писать имена аргументов в CamelCase, иначе могут возникнуть проблемы при сборке.

    Length – длина массива. Если оставить это поле пустым, то аргумент будет обычной переменой. Если в поле Length указать число, то данный аргумент будет представлять собой массив из Length элементов.

    Суммарная длина всех аргументов команды не должна превышать 250 байт.

    Обработка команд производится с учётом их размера в байтах. Поэтому для обеспечения обратной совместимости с последующими версиями протокола необходимо, чтобы размер команды оставался постоянным. Для этого рекомендуется обеспечить запас по размеру команды путём добавления массива reserved.
    Пример:

    
    typedef struct
    {
      uint8_t foo;
      uint8_t reserved[41];
    }
    my_command_v1;
    // sizeof(my_command_v1) = 1 + 41 = 42
    
    typedef struct
    {
      uint8_t foo;
      uint8_t bar[3];
      uint8_t reserved[38];
    }
    my_command_v1;
    // sizeof(my_command_v2) = 1 + 3 + 38 = 42 = sizeof(my_command_v1)
    

    2.4. Добавить описания аргументов на русском и английском

    Для этого нужно нажать на кнопку Edit рядом с соответствующим аргументом в списке.

    2.5 Добавить константы

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

    Константы могут быть определены только для скалярных типов аргументов.

    Имена констант рекомендуется писать в SCREAMING_SNAKE_CASE, иначе могут возникнуть проблемы при сборке.

    3. Добавить аксессоры

    Чтобы добавить аксессоры, нужно перейти на главную страницу проекта. Это можно сделать, кликнув по ссылке Home слева вверху.

    3.1. Определить аксессор

    AID – это 3-буквенный идентификатор, который должен быть уникальным для каждого аксессора.
    AID также не должен пересекаться с идентификаторами команд в формате G<AID> и S<AID>. То есть нельзя создавать аксессор с идентификатором MID, если уже определена команда с идентификатором GMID или SMID.
    AID не чувствителен к регистру, поэтому MID и mId – это один и тот же идентификатор.

    Name – это имя аксессора (такое же имя будет у функции вызова этого аксессора, а также будет включено в имена типов данных, связанных с этим аксессором). Рекомендуется писать имя команды в snake_case, иначе могут возникнуть проблемы при сборке.

    Если аксессор создаётся только для того, чтобы обеспечить существование хотя бы одного аксессора в проекте, в поле Name рекомендуется задать имя dummy.

    3.2. Добавить описание аксессоров

    После добавления аксессора нажать Edit и добавить описание аксессора на русском и английском языках в блоке Edit accessor properties в полях english и russian.

    3.3. Добавить аргументы аксессора

    Важно! для корректной работы аксессор должен содержать хотя бы один аргумент

    Процесс добавления аргументов аксессоров аналогичен добавлению аргументов команд.

    3.4. Добавить константы

    Константы аргументов аксессоров аналогичны константам аргументов команд.

    4. Добавить дополнительные опции

    Все сущности: команды, аксессоры, проект, - поддерживают дополнительные опции в формате ключ=значение. Задаются такие пары через запятую: ключ1=значение1, ключ2=значение2, ... Эти дополнительные опции влияют на последующую генерацию прошивок, веб-страницы, библиотеки и так далее. Если генератор знает как использовать переданный ключ и значение, то он его использует. Неизвестные ключи он игнорирует. Таким образом, можно добавлять свои ключи и дописывать их поддержку в нужных генераторах, чтобы кастомизировать uRPC.

    На данный момент поддерживаются следующие ключи:

    4.1. Тэги команд и аксессоров для web-страницы

    Edit field for extra options

    Тэги это способ визульно пометить определённые команды и аксессоры маленькой картинкой. Это используется и для читающего список команд инженера, и для избирательного учёта тэгов в генераторах. Приведём примеры. Тэг Secret можно создать, чтобы помечать команды протокола, которые не должны попадать в генераторы документации, но должны попадать в прошивку. Это могут быть отладочные команды, которые при неумелом использовании могут сломать устройство. Тэг Important можно использовать, чтобы в интерфейсе отладчика выделять кнопки и числовые поля цветом. Также можно использовать его в генераторе документации и выделять цветом нужные поля там.

    Filled options with two tags

    Two tags view in protocol web page

    Чтобы создать тэг нужно придумать его название "some_name" и в опции команды или аксессора добавить some_name=True, а затем создать в папке tags изображение в формате png с именем совпадающем с some_name. Например сейчас создан тэг, is_service_command=True, а в папке tags лежит файл is_service_command.png. Также создан файл is_test.png, поэтому команду или аксессор можно пометить дополнительной опцией is_test=True. Чтобы поставить оба тэга нужно записать в опции is_test=True, is_service_command=True

    5. Сгенерировать исходный код проекта

    Чтобы сгенерировать исходный код, нужно перейти на главную страницу проекта. Это можно сделать, кликнув по ссылке Home слева вверху.

    5.1. Сгенерировать исходный код прошивки для МК

    На панели справа в разделе Firmware из выпадающего списка выбрать микроконтроллер и нажать Generate.
    Сохранить архив с кодом.

    5.2 Сгенерировать код библиотеки

    На панели справа в разделе Library нажать Generate.
    Сохранить архив с кодом.

    5.3 Сохранить параметры проекта

    На панели справа в разделе Project нажать Save.
    Сохранить JSON-файл.