Собственные драйверы устройств
Драйвер учит приложение работать с датчиком, дисплеем или модулем: это пара файлов C++ и описание иконок, которые он добавляет. Кроме встроенных драйверов, можно написать свои — или поручить это агенту — не меняя приложение.
Где живут драйверы
Заголовок раздела «Где живут драйверы»Встроенные — поставляются с приложением. Только для чтения.
Проект — папка
falang/drivers/<id>/внутри проекта. Она — часть проекта: попадает в историю версий и переезжает вместе с папкой проекта на другой компьютер.Личная библиотека — папка
driversв папке данных приложения, общая для всех ваших проектов.
Если один и тот же id есть в нескольких местах, копия из проекта главнее библиотечной, а та — главнее
встроенной. Когда схема или документ Devices используют драйвер из библиотеки или встроенный, приложение
само копирует его в проект (библиотечный — при открытии проекта и перед каждой сборкой), так что проект
продолжает собираться, даже если библиотека изменится. В скетч попадают только используемые драйверы.
Окно Drivers…
Заголовок раздела «Окно Drivers…»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. Новые иконки драйверов ему доступны сразу, а драйверы, созданные в приложении, появляются без перезапуска агента.
