Документация Engee

Программное управление РИТМ

Чтобы работать с функциями программного управления КПМ «РИТМ» в Engee, установите подсистему Engee.Интеграции:

engee.package.install("Engee-Device-Manager")

На этой странице представлены все доступные функции программного управления КПМ «РИТМ» в Engee.

Методы RITM

RITM_API.Ritm(url::String)

Установление адреса машины РИТМ.

Аргументы

  • url::String: Адрес машины РИТМ, например, "http://192.168.56.3:8000/".

Примеры

# Создадим объект РИТМ:

ritm = RITM_API.Ritm("http://192.168.56.3:8000/")
buildModel(ritm, model, is_interactive_mode::Bool=false)::Nothing

Собирает и подготавливает модель для запуска на РИТМе.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • model::Any: структура модели.

  • is_interactive_mode::Bool: флаг, указывающий режим выполнения модели: true — модель выполняется в интерактивном режиме; false (по умолчанию) — модель выполняется в независимом режиме.

Примеры

# Собираем и запускаем на РИТМе открытую на холсте standalone-модель:

model = engee.gcm()
RITM_API.buildModel(ritm, model, false)
RITM_API.runModel(ritm, model, false)
RITM_API.disableAutostart(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

Удаление модели из автозапуска.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

Примеры

RITM_API.disableAutostart(ritm)
RITM_API.getAutostart(ritm)::Union{Dict{String, Union{String, Int64, Bool, Nothing}}, Nothing}

Получение модели, находящейся в автозапуске.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

Примеры

RITM_API.getAutostart(ritm)
RITM_API.getData(ritm::Any, model_name::String, file_path::String, in_file::Bool = false)

Возвращает результат профилирования модели на РИТМе. В зависимости от значения in_file, результат может быть возвращен как строка либо сохранен в файл по указанному пути.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • model_name::String: имя модели, для которой запрашиваются данные профилирования.

  • file_path::String: путь, по которому сохранить результат (если in_file = true). Если in_file = false, значение игнорируется.

  • in_file::Bool = false: указывает, как вернуть результат. Если true, данные сохраняются в файл по file_path. Если false, возвращается строка с результатом.

Примеры

# Получает данные профилирования как строку
result = RITM_API.getData(ritm, "newmodel_1", "", false)

# Сохраняет данные в файл на РИТМе
RITM_API.getData(ritm, "newmodel_1", "/user/profile.txt", true)
getDiagnostic(ritm)::Nothing

Загружает диагностический архив ritm_diagnostic.zip в текущую директорию Engee.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

Примеры

RITM_API.getDiagnostic(ritm)
RITM_API.getFile(ritm::Any, file_name::String; from=/mydir::String, to=::String)

Получает указанный файл file_name из директории /mydir.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • file_name::String: имя интересующего файла.

  • from=/mydir::String: путь до интересующей директории (по умолчанию /home/ritm/).

  • to=::String: путь до директории в Engee для сохранения файла (по умолчанию в текущей).

Примеры

# Получаем файл install_manifest.txt из директории /home/ritm/build/newmodel_1/build в текущую директорию Engee:

RITM_API.getFile(ritm, "install_manifest.txt"; from="/home/ritm/build/newmodel_1/build/", to="")
RITM_API.getLog(ritm::Any, num::Int64)

Возвращает указанное число строк логов выполнения модели на РИТМе.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • num::Int64: число выводимых строк из логов.

Примеры

RITM_API.getLog(ritm, 10)
getPtpSettings(ritm) -> Vector{String}

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

Примеры

getPtpSettings(ritm)
getPtpState(ritm) -> Vector{String}

Получает состояние PTP — вектор строк, обычно с интерфейсом, ролью и состоянием. Возвращает текущее состояние PTP: запущен или остановлен, а также интерфейс и роль, если PTP запущен.

Примеры

getPtpState(ritm)
RITM_API.getScreenshot(ritm::Any, filename::String = "screenshot.png")

Создает скриншот на целевой платформе РИТМ, и возвращает путь к сохраненному изображению. Снимок экрана сохраняется во временной директории на машине РИТМ. Имя выходного файла можно указать явно; по умолчанию используется "screenshot.png".

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • filename::String = "screenshot.png": имя файла, в который будет сохранен скриншот (на стороне РИТМа).

Примеры

# Создает скриншот и получает путь к нему
path = RITM_API.getScreenshot(ritm, "example.png")
RITM_API.isConnected(ritm::Any)

Проверяет доступность РИТМа.

Аргументы

ritm::Any: объект целевой платформы РИТМ.

Примеры

RITM_API.isConnected(ritm)
RITM_API.isRunning(ritm::Any, model_name::String)

Проверяет, выполняется ли указанная модель на целевой платформе РИТМ. Возвращает true, если модель с заданным именем в данный момент в процессе выполнения на машине РИТМ, и false если не выполняется.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • model_name::String: имя модели, состояние которой необходимо проверить.

Примеры

# Проверяет, запущена ли модель "newmodel_1"
is_active = RITM_API.isRunning(ritm, "newmodel_1")
RITM_API.listFiles(ritm::Any, path::String)

Выводит список файлов в указанной директории.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • path::String: путь до интересующей директории.

Примеры

RITM_API.listFiles(ritm, "/home/ritm/")
RITM_API.memInfo(ritm::Any, model::String)

Выводит информацию о потребляемой моделью памяти.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • model::String: имя модели. Если оставить пустым "", то вернет результат профилирования системы в виде [total, used, free]. Если указать имя модели, то вернет количество байт памяти, потребляемой моделью.

Примеры

RITM_API.memInfo(ritm, "newmodel_1")
RITM_API.poweroff(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

Выключает машину.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

Примеры

RITM_API.poweroff(ritm)
RITM_API.readFile(ritm::Any, file_name::String; path=/mydir::String)

Выводит содержимое указанного файла file_name из директории /home/ritm/build/model_name/build/, где model_name — имя модели в Engee.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • file_name::String: имя интересующего файла.

  • path=/mydir::String: путь до директории с интересующим файлом (по умолчанию /home/ritm/build/model_name/build/).

Примеры

# Выводим содержимое файла install_manifest.txt из директории /home/ritm/build/newmodel_1/build:

RITM_API.readFile(ritm, "install_manifest.txt"; path="/home/ritm/build/newmodel_1/build/")
RITM_API.reboot(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

Перезагружает машину.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

Примеры

RITM_API.reboot(ritm)
RITM_API.removeFile(ritm::Any, path::String)::String

Удаляет файл по указанному пути на целевой платформе РИТМ. Возвращает статус удаления файла с РИТМа.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • path::String: путь к удаляемому с РИТМа файлу.

Примеры

# Удалить файл newmodel_1 на РИТМ:
RITM_API.removeFile(ritm, "/home/ritm/newmodel_1.engee")
resetPtpSettings(ritm) -> Dict{String, Union{String, Int64, Bool, Nothing}}

Сбрасывает сохраненные настройки PTP на РИТМе. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

После сброса перед запуском PTP нужно заново настроить нужный интерфейс через setupEthPtp.

RITM_API.runModel(
    ritm,
    model,
    is_interactive_mode::Bool=false;
    simulation_uuid=string(uuid4()),
    status_callback=(args...) -> nothing,
    termination_callback=(args...) -> nothing,
) -> Union{Channel{TargetSimulationStatus}, Nothing}

Запустить на РИТМе ранее собранную модель.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • model::Any: структура модели.

  • is_interactive_mode::Bool: флаг, указывающий режим выполнения модели: true — модель выполняется в интерактивном режиме; false (по умолчанию) — модель выполняется в независимом режиме.

  • simulation_uuid::String: идентификатор запуска для интерактивного режима.

  • status_callback: функция вызывается для каждого полученного статуса выполнения.

  • termination_callback: функция вызывается по завершении интерактивного выполнения.

Значение nothing используется для автономного выполнения или для канала состояния интерактивного выполнения.

Примеры

RITM_API.runModel(ritm, model)
RITM_API.setAutostart(ritm, model_name::String)::Dict{String, Union{String, Int64, Bool, Nothing}}

Помещение модели в автозапуск.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • model_name::String: имя модели.

Примеры

RITM_API.setAutostart(ritm)

setupEthPtp(
    ritm,
    eth_number,
    role="Master";
    delay_mech="E2E",
    network_tr="UDPv4",
    priority1=128,
    priority2=128,
    clock_class=248,
    clock_accuracy=254,
) -> Dict{String, String}

Настраивает PTP на выбранном Ethernet-интерфейсе РИТМа. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

Аргументы

  • eth_number: номер Ethernet-интерфейса РИТМа, например 1 для Ethernet 1.

  • role: задает роль локальных часов PTP: "Master" или "Slave".

  • delay_mech: режим работы PTP. Возможные значения "E2E", "P2P" или "Auto". Значение по умолчанию "E2E".

  • network_tr: сетевой протокол. Возможные значения "UDPv4", "UDPv6" and "L2". Значение по умолчанию "UDPv4".

  • priority1: атрибут локальных часов "Приоритет 1". Возможный диапазон 0 до 255. Значение по умолчанию 128.

  • priority2: атрибут локальных часов "Приоритет 2". Возможный диапазон 0 до 255. Значение по умолчанию 128.

  • clock_class: атрибут локальных часов "Класс". Возможный диапазон 0 до 255. Значение по умолчанию 248.

  • clock_accuracy: атрибут локальных часов "Точность". Возможный диапазон 0 до 255. Значение по умолчанию 254.

RITM_API.setupEthernet(ritm, interface_id::Int64, ip::String, mask::Int64)::Dict{String, Union{String, Int64, Bool, Nothing}}

Настройка Ethernet-интерфейса машины.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • interface_id::Int64: идентификатор Ethernet-интерфейса.

  • ip::String: IP-адрес интерфейса.

  • mask::Int64: маска сети.

Примеры

RITM_API.setupEthernet(ritm, 0, "192.168.0.10", 24)
startPtp(ritm, eth_number) -> Dict{String, Union{String, Int64, Bool, Nothing}}

Запускает PTP на выбранном Ethernet-интерфейсе РИТМа. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

Перед запуском PTP необходимо настроить интерфейс через setupEthPtp.

Аргументы

  • eth_number: номер Ethernet интерфейса. Возможные значения "HostTarget" или "1" — "max ethernet number".

Примеры

startPtp(ritm, 1)
RITM_API.stopModel(ritm)::Nothing

Останавливает модель на РИТМе.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

Примеры

RITM_API.stopModel(ritm)
stopPtp(ritm, eth_number) -> Dict{String, Union{String, Int64, Bool, Nothing}}

Останавливает PTP на выбранном Ethernet-интерфейсе РИТМа. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

Аргументы

  • eth_number: номер Ethernet интерфейса. Возможные значения "HostTarget" или "1" — "max ethernet number".

Примеры

stopPtp(ritm, 1)

RITM_API.updateFirmware(
    ritm,
    firmware_path::String="",
    checksum_path::String="";
    reboot::Bool=true,
    show_progress=false,
)::Nothing

Обновляет прошивку РИТМ.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • firmware_path::String: локальный путь к файлу прошивки.

  • checksum_path::String: локальный путь к файлу контрольной суммы.

  • reboot::Bool: перезагрузка машины РИТМ после успешного обновления. Значение по умолчанию — true.

  • show_progress::Bool: вывести в лог информацию о ходе обновления.

Примеры

RITM_API.updateFirmware(ritm; show_progress=true)
RITM_API.updateFirmware(ritm, "/user/firmware.raucb", "/user/firmware.raucb.checksum")
RITM_API.updateSupportPackage(ritm, support_package_path::String=""; show_progress=false)::Nothing

Обновляет пакет поддержки РИТМ.

Если аргумент support_package_path не указан, устанавливается пакет, соответствующий текущей версии Engee. Если аргумент support_package_path задан, устанавливается пакет из указанного локального файла.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • support_package_path::String: локальный путь к пакету поддержки.

  • show_progress::Bool: выводить в лог информацию о ходе выполнения обновления.

Примеры

RITM_API.updateSupportPackage(ritm)
RITM_API.updateSupportPackage(ritm, "/user/ritm_support_package.tar.gz"; show_progress=true)
RITM_API.uploadFile(ritm::Any, filename::AbstractString; from::AbstractString=pwd(), to::AbstractString="/home/ritm")::String

Загружает файл из Engee на целевую платформу РИТМ.

Аргументы

  • ritm::Any: объект целевой платформы РИТМ.

  • filename::AbstractString: имя загружаемого на РИТМ файла.

  • from::AbstractString = pwd(): путь в Engee к директории, где расположен загружаемый файл (по умолчанию — текущая директория).

  • to::AbstractString = "/home/ritm": путь на РИТМе, куда будет загружен файл (по умолчанию — /home/ritm).

Примеры

using Main.EngeeDeviceManager.Targets
using Main.EngeeDeviceManager.Targets.RITM.RITM_API

# Создает объект РИТМ и задает адрес
ritm = Targets.RITM_API.Ritm("http://192.168.56.3:8000/")

# Загружает файл test.bin из текущей директории Engee (pwd()) в /home/ritm на РИТМе
res = RITM_API.uploadFile(ritm, "test.bin")

# Загружает файл из указанной директории Engee (/user/...) в указанную директорию на РИТМе
res = RITM_API.uploadFile(ritm, "install_manifest.txt"; from="/user/project/", to="/home/ritm/data/")