Точки расширения: типы сетей, слова пробуждения, MCP и настройка ресурсов

Точки расширения: типы сетей, слова пробуждения, MCP и настройка ресурсов

Когда базовая адаптация платы и диалог заработали, прошивка предлагает несколько типов точек расширения. Эта страница — только навигация: она показывает, где в исходном коде находится каждая возможность, и ведёт к подробной документации. Схемы реализации без опоры на upstream здесь не придумываются.

1. Типы сетей

В main/boards/common/ для разных сетей есть базовые классы, конкретная плата наследует один из них:

Базовый классНазначение
WifiBoardПодключение по Wi-Fi; настройку сети см. в Первом запуске и Настройке сети
Ml307BoardСеть 4G Cat.1 через модуль ML307
DualNetworkBoardПереключение между Wi-Fi и ML307; тип сети хранится в Settings, значение по умолчанию задаётся параметром конструктора платы
EthernetBoard, RndisBoard, Nt26BoardБазовые классы для других типов сети; об использовании смотрите в каталогах плат, которые их применяют

Платы вроде bread-compact-ml307 — эталонная реализация 4G на ML307. Подключение см. в части про 4G-модуль в руководстве по сборке оборудования.

2. Слова пробуждения и обработка аудио

  • Тип слова пробуждения выбирается опцией Kconfig WAKE_WORD_TYPE: слово пробуждения AFE, WakeNet без AFE, пользовательское слово MultiNet или отключено. Варианты для каждого чипа см. в разделе Поддержка чипов и спецификации хранилища.
  • У пользовательских слов пробуждения два пути: параметры компиляции (CUSTOM_WAKE_WORD и др.) или упаковка в assets.bin, подробности в руководстве по пользовательским Assets.
  • При включённом SEND_WAKE_WORD_DATA после пробуждения последние примерно две секунды звука отправляются на сервер как первое сообщение диалога (кольцевой буфер в PSRAM, см. main/audio/README.md).

3. Инструменты MCP

Устройство регистрирует инструменты в main/mcp_server.*, чтобы большая языковая модель могла им управлять; есть и инструменты, доступные только пользователю (например, self.assets.set_download_url). Способ регистрации и список встроенных инструментов см. в разделе Использование MCP для управления IoT, а последовательность протокола — в разделе Протокол MCP. Плата может добавлять инструменты в собственном коде инициализации, например bread-compact-esp32 использует LampController как пример управления лампой.

4. Уведомления, дополнение шрифтов и эмодзи

5. Настройка сети и обновление

6. Управление питанием

Board определяет три уровня энергосбережения: LOW_POWER, BALANCED и PERFORMANCE, их реализует SetPowerSaveLevel() платы; в boards/common/ есть также вспомогательные классы power_save_timer, sleep_timer и мониторинга батареи. Входить ли в сон, решает Application::CanEnterSleepMode(). Конкретное поведение зависит от платы, поэтому читайте исходный код своей платы.

Связанные материалы

Источники: main/boards/common/, main/Kconfig.projbuild, main/mcp_server.cc и main/audio/README.md в 78/xiaozhi-esp32 v2.5.2.