Перейти к содержимому
falang.ruEN

Собственные драйверы устройств

Драйвер учит приложение работать с датчиком, дисплеем или модулем: это пара файлов C++ и описание иконок, которые он добавляет. Кроме встроенных драйверов, можно написать свои — или поручить это агенту — не меняя приложение.

  • Встроенные — поставляются с приложением. Только для чтения.

  • Проект — папка falang/drivers/<id>/ внутри проекта. Она — часть проекта: попадает в историю версий и переезжает вместе с папкой проекта на другой компьютер.

  • Личная библиотека — папка drivers в папке данных приложения, общая для всех ваших проектов.

Если один и тот же id есть в нескольких местах, копия из проекта главнее библиотечной, а та — главнее встроенной. Когда схема или документ Devices используют драйвер из библиотеки или встроенный, приложение само копирует его в проект (библиотечный — при открытии проекта и перед каждой сборкой), так что проект продолжает собираться, даже если библиотека изменится. В скетч попадают только используемые драйверы.

Sketch → Drivers… показывает все драйверы с областью и статусом. Здесь можно:

  • Создать драйвер проекта из небольшого шаблона, загрузить файл .falang-driver.json (весь драйвер в одном файле) в проект или библиотеку и скачать любой драйвер в таком виде, чтобы поделиться.

  • Копировать драйвер между библиотекой и проектом или заменить копию в проекте версией из библиотеки.

  • Проверить — формат, отсутствие конфликтов имён C-функций с другими драйверами и функциями Arduino, типизацию шаблона каждого действия, совместимость уже существующих в проекте иконок, а также компиляцию небольшого тестового скетча через arduino-cli для платы проекта. Отсутствующее ядро или библиотека — только предупреждение, не ошибка.

  • Открыть папку — править файлы драйвера в своём редакторе; приложение подхватит изменения само. Драйвер, ставший некорректным, помечается, а сборка блокируется, пока проект использует некорректный драйвер, причина показывается.

  • Удалить — отклоняется со списком мест, пока проект ещё использует драйвер.

Драйвер — это папка с driver.config.json и файлами .h/.cpp, которые он перечисляет; то же самое в одном файле — пакет .falang-driver.json: { "formatVersion": 1, "config": …, "files": { "имя": "текст" } }. Конфиг — просто данные, ничего из него не исполняется:

  • id (kebab-case), label, notes (описание простым английским, его читают агенты), includes, sourceFiles и declarations (строки declare function …, которые сообщают редактору о ваших функциях C++ — у каждой функции должен быть префикс, уникальный для драйвера);

  • actions — по одному на каждую понятную пользователю операцию: id, label, notes, fields (pin, number, string, boolean, select, new-variable) и codeTemplate с подстановками ${поле}; у действия с полем new-variable задаётся ещё и resultType ( int, float, bool или string);

  • необязательный раздел device — поля и setupTemplate: драйвер можно добавить в документ Devices, и он будет вызван один раз в setup();

  • необязательный раздел locales — переводы названий драйвера, действий, полей и вариантов списков по языкам (например, “ru”); непереведённое остаётся на английском, а notes не переводятся.

Нужные драйверу библиотеки Arduino автоматически не устанавливаются — поставьте их через arduino-cli.

  • ИИ-агент в приложении умеет смотреть, создавать и править драйверы проекта, если попросить его добавить поддержку устройства; перед сохранением он проверяет драйвер. Если у драйвера есть раздел device, агент также добавляет его экземпляр в документ Devices (get_devices / set_devices).

  • Кодинг-агент, подключённый по MCP, получает в Arduino-проекте инструменты для драйверов: list_drivers, get_driver, validate_driver, set_driver , delete_driver и use_library_driver, а также get_devices и set_devices для добавления экземпляров драйверов и выводов в документ Devices. Новые иконки драйверов ему доступны сразу, а драйверы, созданные в приложении, появляются без перезапуска агента.