Skip to content

Latest commit

 

History

History
88 lines (68 loc) · 6.7 KB

File metadata and controls

88 lines (68 loc) · 6.7 KB

API генератора конфигураций для плат Марсоход

Ниже приведено описание внешних интерфейсов для программного и пользовательского взаимодействия с генератором конфигураций для плат Марсоход.

Для работы всех утилит требуется python >= 3.6. На версиях ниже указанной работоспособность не проверялась. Версиии 2.* не поддержаны намеренно как устаревшие.

API клиент

Все запросы делаются на адрес, где запущен сервис. На текущий момент поддержано только http соединение. Планируется поддержать HTTPS/TLS1.2.

Метод Тип Параметры Описание Ответ
/boards GET Список поддерживаемых плат. {"supported boards": ["...", ...]}
/board/<board> GET board - одна из поддерживаемых плат Список возможных пользовательских настроек для платы. {"board": <имя платы>, "params": {...}}
/mips GET Список поддерживаемых версий ядра SchoolMIPS. {"supported mips types": ["...", ...]}
/functions GET Список поддерживаемых дополнительных функций и их параметров. {"supported functions": ["...", ...], "configurations": {...}}
generate GET, POST * Генерация проекта для указанной платы. Архив с проектом (GET)/Сгенерированные файлы в виде объекта (POST)

Параметры generate:

  • board (обязательный) - тип платы, для которой будет сгенерирован проект. Поддерживаемые на данный момет типы плат можно получить через вызов метода /boards.
  • name - имя генерируемого проекта. При отсутствии, используется имя по умолчанию.
  • mips - версия процессорного ядра SchoolMIPS. Поддерживаемые на данный момет версии ядра можно получить через вызов метода /mips.
  • conf - список параметров платы, которые необходимо сконфигурировать для проекта. Не указанные параметры не будут доступны (отключены) в проекте.
  • func - список поддерживаемых функций, которые необходимо включить в проект.
  • params - объект конфигураций параметров для дополнительных функций в виде пар строка: число (имя параметра: значение).

Пример запроса:

curl http://<host>/generate?board=marsohod2&mips=simple

CLI клиент (консольный)

Клиент был создан для быстрого ручного тестирования работоспособности новых функций. Использование в личных целях возможно, но не рекомендуется. Предпочтительно использовать API клиент или WEB интерфейс.

Для получения актуальной справки по использованию утилиты используется флаг -h.

Использование:

cli_client.py [-h] [--name PROJECT NAME] [--archive] [--path PATH]
              [--mips SCHOOL MIPS VERSION] [--config CONFIG]
              BOARD NAME

Обязательные аргументы:

  • BOARD NAME - тип платы, для которой будет сгенерирован проект. Поддерживаемые на данный момет типы плат указаны в подсказке при просмотре помощи через аргумент -h.

Опциональные аргументы:

  • -h, --help - просмотр помощи по использованию команды.
  • --name PROJECT NAME, -n PROJECT NAME - имя генерируемого проекта. При отсутствии, используется имя по умолчанию.
  • --archive, -a - при использовании флага проект будет запакован и сохранен в архив.
  • --path PATH, -p PATH - место для сохранения сгенерированного проекта. Могут быть использованы как относительные так и абсолютные пути.
  • --mips SCHOOL MIPS VERSION, -m SCHOOL MIPS VERSION - версия процессорного ядра SchoolMIPS. Поддерживаемые на данный момет версии ядра указаны в подсказке при просмотре помощи через аргумент -h.
  • --config CONFIG, -c CONFIG - путь к конфигурационному файлу (json).

Формат конфигурационного файла - json объект с опциональными ключами:

  • func - список поддерживаемых функций, которые необходимо включить в проект.
  • conf - список параметров платы, которые необходимо сконфигурировать для проекта. Не указанные параметры не будут доступны (отключены) в проекте.
  • params - объект конфигураций параметров для дополнительных функций в виде пар строка: число (имя параметра: значение).

Пример конфигурационного файла:

{
    "func": [
        "Seven",
        "Uart8"
    ],
    "conf": [
        "clock",
        "key",
        "led"
    ],
    "params": {
        "delay": 100
    }
}

Внутренний API

Унифицированные внутренний API для взаимодействия с движком генератора на программном уровне на данный момент отсутствует.