gitextract_bwja74tq/ ├── .clang-format ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── 01_build_install_bug.yml │ │ ├── 02_runtime_bug.yml │ │ ├── 03_feature_request.yml │ │ └── config.yml │ └── workflows/ │ └── build.yml ├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── README.md ├── README_ja.md ├── README_zh.md ├── docs/ │ ├── blufi.md │ ├── code_style.md │ ├── custom-board.md │ ├── mcp-protocol.md │ ├── mcp-usage.md │ ├── mqtt-udp.md │ └── websocket.md ├── main/ │ ├── CMakeLists.txt │ ├── Kconfig.projbuild │ ├── application.cc │ ├── application.h │ ├── assets/ │ │ ├── common/ │ │ │ ├── exclamation.ogg │ │ │ ├── low_battery.ogg │ │ │ ├── popup.ogg │ │ │ ├── success.ogg │ │ │ └── vibration.ogg │ │ └── locales/ │ │ ├── ar-SA/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── bg-BG/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── ca-ES/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── cs-CZ/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── da-DK/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── de-DE/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── el-GR/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── en-US/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── es-ES/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── fa-IR/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── fi-FI/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── fil-PH/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── fr-FR/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── he-IL/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── hi-IN/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── hr-HR/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── hu-HU/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── id-ID/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── it-IT/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── ja-JP/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── ko-KR/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── ms-MY/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── nb-NO/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── nl-NL/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── pl-PL/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── pt-PT/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── ro-RO/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── ru-RU/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── sk-SK/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── sl-SI/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── sr-RS/ │ │ │ └── language.json │ │ ├── sv-SE/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── th-TH/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── tr-TR/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── uk-UA/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── vi-VN/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ ├── zh-CN/ │ │ │ ├── 0.ogg │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ ├── 9.ogg │ │ │ ├── activation.ogg │ │ │ ├── err_pin.ogg │ │ │ ├── err_reg.ogg │ │ │ ├── language.json │ │ │ ├── upgrade.ogg │ │ │ ├── welcome.ogg │ │ │ └── wificonfig.ogg │ │ └── zh-TW/ │ │ ├── 0.ogg │ │ ├── 1.ogg │ │ ├── 2.ogg │ │ ├── 3.ogg │ │ ├── 4.ogg │ │ ├── 5.ogg │ │ ├── 6.ogg │ │ ├── 7.ogg │ │ ├── 8.ogg │ │ ├── 9.ogg │ │ ├── activation.ogg │ │ ├── err_pin.ogg │ │ ├── err_reg.ogg │ │ ├── language.json │ │ ├── upgrade.ogg │ │ ├── welcome.ogg │ │ └── wificonfig.ogg │ ├── assets.cc │ ├── assets.h │ ├── audio/ │ │ ├── README.md │ │ ├── audio_codec.cc │ │ ├── audio_codec.h │ │ ├── audio_processor.h │ │ ├── audio_service.cc │ │ ├── audio_service.h │ │ ├── codecs/ │ │ │ ├── box_audio_codec.cc │ │ │ ├── box_audio_codec.h │ │ │ ├── dummy_audio_codec.cc │ │ │ ├── dummy_audio_codec.h │ │ │ ├── es8311_audio_codec.cc │ │ │ ├── es8311_audio_codec.h │ │ │ ├── es8374_audio_codec.cc │ │ │ ├── es8374_audio_codec.h │ │ │ ├── es8388_audio_codec.cc │ │ │ ├── es8388_audio_codec.h │ │ │ ├── es8389_audio_codec.cc │ │ │ ├── es8389_audio_codec.h │ │ │ ├── no_audio_codec.cc │ │ │ └── no_audio_codec.h │ │ ├── demuxer/ │ │ │ ├── ogg_demuxer.cc │ │ │ └── ogg_demuxer.h │ │ ├── processors/ │ │ │ ├── afe_audio_processor.cc │ │ │ ├── afe_audio_processor.h │ │ │ ├── audio_debugger.cc │ │ │ ├── audio_debugger.h │ │ │ ├── no_audio_processor.cc │ │ │ └── no_audio_processor.h │ │ ├── wake_word.h │ │ └── wake_words/ │ │ ├── afe_wake_word.cc │ │ ├── afe_wake_word.h │ │ ├── custom_wake_word.cc │ │ ├── custom_wake_word.h │ │ ├── esp_wake_word.cc │ │ └── esp_wake_word.h │ ├── boards/ │ │ ├── aipi-lite/ │ │ │ ├── README.md │ │ │ ├── README_en.md │ │ │ ├── aipi-lite.cc │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── config_en.json │ │ │ └── power_manager.h │ │ ├── atk-dnesp32s3/ │ │ │ ├── atk_dnesp32s3.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── atk-dnesp32s3-box/ │ │ │ ├── atk_dnesp32s3_box.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── atk-dnesp32s3-box0/ │ │ │ ├── atk_dnesp32s3_box0.cc │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── power_manager.h │ │ ├── atk-dnesp32s3-box2-4g/ │ │ │ ├── atk_dnesp32s3_box2.cc │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── power_manager.h │ │ ├── atk-dnesp32s3-box2-wifi/ │ │ │ ├── atk_dnesp32s3_box2.cc │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── power_manager.h │ │ ├── atk-dnesp32s3m-4g/ │ │ │ ├── atk_dnesp32s3m.cc │ │ │ └── config.h │ │ ├── atk-dnesp32s3m-wifi/ │ │ │ ├── atk_dnesp32s3m.cc │ │ │ └── config.h │ │ ├── atom-echos3r/ │ │ │ ├── README.md │ │ │ ├── atom_echos3r.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── atommatrix-echo-base/ │ │ │ ├── README.md │ │ │ ├── atommatrix_echo_base.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── atoms3-echo-base/ │ │ │ ├── README.md │ │ │ ├── atoms3_echo_base.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── atoms3r-cam-m12-echo-base/ │ │ │ ├── README.md │ │ │ ├── atoms3r_cam_m12_echo_base.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── atoms3r-echo-base/ │ │ │ ├── README.md │ │ │ ├── atoms3r_echo_base.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── bread-compact-esp32/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp32_bread_board.cc │ │ ├── bread-compact-esp32-lcd/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp32_bread_board_lcd.cc │ │ ├── bread-compact-ml307/ │ │ │ ├── compact_ml307_board.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── bread-compact-nt26/ │ │ │ ├── compact_nt26_board.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── bread-compact-wifi/ │ │ │ ├── compact_wifi_board.cc │ │ │ ├── config.h │ │ │ └── config.json │ │ ├── bread-compact-wifi-lcd/ │ │ │ ├── compact_wifi_board_lcd.cc │ │ │ └── config.h │ │ ├── bread-compact-wifi-s3cam/ │ │ │ ├── README.md │ │ │ ├── compact_wifi_board_s3cam.cc │ │ │ └── config.h │ │ ├── common/ │ │ │ ├── adc_battery_monitor.cc │ │ │ ├── adc_battery_monitor.h │ │ │ ├── afsk_demod.cc │ │ │ ├── afsk_demod.h │ │ │ ├── axp2101.cc │ │ │ ├── axp2101.h │ │ │ ├── backlight.cc │ │ │ ├── backlight.h │ │ │ ├── blufi.cpp │ │ │ ├── blufi.h │ │ │ ├── board.cc │ │ │ ├── board.h │ │ │ ├── button.cc │ │ │ ├── button.h │ │ │ ├── camera.h │ │ │ ├── dual_network_board.cc │ │ │ ├── dual_network_board.h │ │ │ ├── esp32_camera.cc │ │ │ ├── esp32_camera.h │ │ │ ├── esp_video.cc │ │ │ ├── esp_video.h │ │ │ ├── i2c_device.cc │ │ │ ├── i2c_device.h │ │ │ ├── knob.cc │ │ │ ├── knob.h │ │ │ ├── lamp_controller.h │ │ │ ├── ml307_board.cc │ │ │ ├── ml307_board.h │ │ │ ├── nt26_board.cc │ │ │ ├── nt26_board.h │ │ │ ├── power_save_timer.cc │ │ │ ├── power_save_timer.h │ │ │ ├── press_to_talk_mcp_tool.cc │ │ │ ├── press_to_talk_mcp_tool.h │ │ │ ├── rndis_board.cc │ │ │ ├── rndis_board.h │ │ │ ├── sleep_timer.cc │ │ │ ├── sleep_timer.h │ │ │ ├── sy6970.cc │ │ │ ├── sy6970.h │ │ │ ├── system_reset.cc │ │ │ ├── system_reset.h │ │ │ ├── wifi_board.cc │ │ │ └── wifi_board.h │ │ ├── df-k10/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── df_k10_board.cc │ │ │ ├── k10_audio_codec.cc │ │ │ ├── k10_audio_codec.h │ │ │ ├── led_control.cc │ │ │ └── led_control.h │ │ ├── df-s3-ai-cam/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── df_s3_ai_cam.cc │ │ ├── doit-s3-aibox/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── doit_s3_aibox.cc │ │ ├── du-chatx/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── du-chatx-wifi.cc │ │ │ └── power_manager.h │ │ ├── electron-bot/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── electron_bot.cc │ │ │ ├── electron_bot_controller.cc │ │ │ ├── electron_emoji_display.cc │ │ │ ├── electron_emoji_display.h │ │ │ ├── movements.cc │ │ │ ├── movements.h │ │ │ ├── oscillator.cc │ │ │ ├── oscillator.h │ │ │ ├── otto_icon_font.c │ │ │ └── power_manager.h │ │ ├── esp-box/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp_box_board.cc │ │ ├── esp-box-3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp_box3_board.cc │ │ ├── esp-box-lite/ │ │ │ ├── box_audio_codec_lite.cc │ │ │ ├── box_audio_codec_lite.h │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp_box_lite_board.cc │ │ ├── esp-hi/ │ │ │ ├── README.md │ │ │ ├── adc_pdm_audio_codec.cc │ │ │ ├── adc_pdm_audio_codec.h │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── emoji_display.cc │ │ │ ├── emoji_display.h │ │ │ └── esp_hi.cc │ │ ├── esp-p4-function-ev-board/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp-p4-function-ev-board.cc │ │ ├── esp-s3-lcd-ev-board/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp-s3-lcd-ev-board.cc │ │ │ ├── esp_io_expander_tca9554.c │ │ │ ├── esp_io_expander_tca9554.h │ │ │ ├── esp_lcd_gc9503.c │ │ │ ├── esp_lcd_gc9503.h │ │ │ └── pin_config.h │ │ ├── esp-s3-lcd-ev-board-2/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp-s3-lcd-ev-board-2.cc │ │ │ ├── esp_lcd_gc9503.c │ │ │ ├── esp_lcd_gc9503.h │ │ │ └── pin_config.h │ │ ├── esp-sensairshuttle/ │ │ │ ├── README.md │ │ │ ├── adc_pdm_audio_codec.cc │ │ │ ├── adc_pdm_audio_codec.h │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp-sensairshuttle.cc │ │ ├── esp-sparkbot/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp_sparkbot_board.cc │ │ ├── esp-spot/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp_spot_board.cc │ │ ├── esp-vocat/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp_vocat.cc │ │ │ └── touch.h │ │ ├── esp32-cgc/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp32_cgc_board.cc │ │ ├── esp32-cgc-144/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp32_cgc_144_board.cc │ │ │ ├── power_manager.h │ │ │ └── power_manager_lite.h │ │ ├── esp32s3-korvo2-v3/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp32s3_korvo2_v3_board.cc │ │ │ └── power_manager.h │ │ ├── esp32s3-korvo2-v3-rndis/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp32s3_korvo2_v3_board.cc │ │ │ └── power_manager.h │ │ ├── genjutech-s3-1.54tft/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── genjutech-s3-1.54tft.cc │ │ │ └── power_manager.h │ │ ├── hu-087/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── hu_087_board.cc │ │ ├── jiuchuan-s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp_lcd_panel_gc9301.c │ │ │ ├── esp_lcd_panel_gc9301.h │ │ │ ├── gpio_manager.h │ │ │ ├── jiuchuan_dev_board.cc │ │ │ ├── power_controller.h │ │ │ └── power_manager.h │ │ ├── kevin-box-2/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── kevin_box_board.cc │ │ ├── kevin-c3/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── kevin_c3_board.cc │ │ │ ├── led_strip_control.cc │ │ │ └── led_strip_control.h │ │ ├── kevin-sp-v3-dev/ │ │ │ ├── config.h │ │ │ └── kevin-sp-v3_board.cc │ │ ├── kevin-sp-v4-dev/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── kevin-sp-v4_board.cc │ │ ├── kevin-yuying-313lcd/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp_lcd_gc9503.c │ │ │ ├── esp_lcd_gc9503.h │ │ │ ├── kevin_yuying_313lcd.cc │ │ │ └── pin_config.h │ │ ├── labplus-ledong-v2/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── labplus_ledong_v2.cc │ │ ├── labplus-mpython-v3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── mpython_pro.cc │ │ ├── lceda-course-examples/ │ │ │ ├── eda-robot-pro/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── eda_dog_controller.cc │ │ │ │ ├── eda_dog_movements.cc │ │ │ │ ├── eda_dog_movements.h │ │ │ │ ├── eda_robot_pro.cc │ │ │ │ ├── oscillator.cc │ │ │ │ └── oscillator.h │ │ │ ├── eda-super-bear/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── eda_super_bear.cc │ │ │ │ ├── eda_super_bear_controller.cc │ │ │ │ ├── eda_super_bear_movements.cc │ │ │ │ ├── eda_super_bear_movements.h │ │ │ │ ├── oscillator.cc │ │ │ │ └── oscillator.h │ │ │ └── eda-tv-pro/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── eda-tv-pro.cc │ │ ├── lichuang-c3-dev/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── lichuang_c3_dev_board.cc │ │ ├── lichuang-dev/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── lichuang_dev_board.cc │ │ ├── lilygo-t-cameraplus-s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── ir_filter_controller.h │ │ │ ├── lilygo-t-cameraplus-s3.cc │ │ │ ├── pin_config.h │ │ │ ├── tcamerapluss3_audio_codec.cc │ │ │ └── tcamerapluss3_audio_codec.h │ │ ├── lilygo-t-circle-s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp_lcd_gc9d01n.c │ │ │ ├── esp_lcd_gc9d01n.h │ │ │ ├── lilygo-t-circle-s3.cc │ │ │ ├── pin_config.h │ │ │ ├── tcircles3_audio_codec.cc │ │ │ └── tcircles3_audio_codec.h │ │ ├── lilygo-t-display-p4/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── hi8561_driver.cc │ │ │ ├── hi8561_driver.h │ │ │ ├── lilygo-t-display-p4.cc │ │ │ ├── rm69a10_driver.cc │ │ │ ├── rm69a10_driver.h │ │ │ └── t_display_p4_config.h │ │ ├── lilygo-t-display-s3-pro-mvsrlora/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── lilygo-t-display-s3-pro-mvsrlora.cc │ │ │ ├── pin_config.h │ │ │ ├── tdisplays3promvsrlora_audio_codec.cc │ │ │ └── tdisplays3promvsrlora_audio_codec.h │ │ ├── m5stack-cardputer-adv/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── m5stack_cardputer_adv.cc │ │ ├── m5stack-core-s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── cores3_audio_codec.cc │ │ │ ├── cores3_audio_codec.h │ │ │ └── m5stack_core_s3.cc │ │ ├── m5stack-tab5/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── esp_lcd_st7123.c │ │ │ ├── esp_lcd_st7123.h │ │ │ ├── m5stack_tab5.cc │ │ │ ├── sdkconfig.tab5 │ │ │ ├── tab5_audio_codec.cc │ │ │ └── tab5_audio_codec.h │ │ ├── magiclick-2p4/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── magiclick_2p4_board.cc │ │ ├── magiclick-2p5/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── magiclick_2p5_board.cc │ │ │ └── power_manager.h │ │ ├── magiclick-c3/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── magiclick_c3_board.cc │ │ ├── magiclick-c3-v2/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── magiclick_c3_v2_board.cc │ │ ├── minsi-k08-dual/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── minsi_k08_dual.cc │ │ │ └── power_manager.h │ │ ├── mixgo-nova/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── mixgo-nova.cc │ │ ├── movecall-cuican-esp32s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── movecall_cuican_esp32s3.cc │ │ ├── movecall-moji-esp32s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── movecall_moji_esp32s3.cc │ │ ├── movecall-moji2-esp32c5/ │ │ │ ├── README.md │ │ │ ├── README_zh.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── movecall_moji2_esp32s3.cc │ │ ├── otto-robot/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── oscillator.cc │ │ │ ├── oscillator.h │ │ │ ├── otto_controller.cc │ │ │ ├── otto_emoji_display.cc │ │ │ ├── otto_emoji_display.h │ │ │ ├── otto_icon_font.c │ │ │ ├── otto_movements.cc │ │ │ ├── otto_movements.h │ │ │ ├── otto_robot.cc │ │ │ ├── power_manager.h │ │ │ ├── websocket_control_server.cc │ │ │ └── websocket_control_server.h │ │ ├── sensecap-watcher/ │ │ │ ├── README.md │ │ │ ├── README_en.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── config_en.json │ │ │ ├── sensecap_audio_codec.cc │ │ │ ├── sensecap_audio_codec.h │ │ │ ├── sensecap_watcher.cc │ │ │ ├── sscma_camera.cc │ │ │ └── sscma_camera.h │ │ ├── sp-esp32-s3-1.28-box/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── power_manager.h │ │ │ └── sp-esp32-s3-1.28-box.cc │ │ ├── sp-esp32-s3-1.54-muma/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── power_manager.h │ │ │ └── sp-esp32-s3-1.54-muma.cc │ │ ├── surfer-c3-1.14tft/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── power_manager.h │ │ │ └── surfer-c3-1.14tft.cc │ │ ├── taiji-pi-s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── taiji_pi_s3.cc │ │ ├── tudouzi/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── kevin_box_board.cc │ │ ├── waveshare/ │ │ │ ├── esp32-c6-lcd-1.69/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── esp32-c6-lcd-1.69.cc │ │ │ │ └── power_manager.h │ │ │ ├── esp32-c6-touch-amoled-1.32/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-c6-touch-amoled-1.32.cc │ │ │ ├── esp32-c6-touch-amoled-1.43/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-c6-touch-amoled-1.43.cc │ │ │ ├── esp32-c6-touch-amoled-1.8/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-c6-touch-amoled-1.8.cc │ │ │ ├── esp32-c6-touch-amoled-2.06/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-c6-touch-amoled-2.06.cc │ │ │ ├── esp32-c6-touch-lcd-1.83/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-c6-touch-lcd-1.83.cc │ │ │ ├── esp32-p4-nano/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── esp32-p4-nano.cc │ │ │ │ └── lcd_init_cmds.h │ │ │ ├── esp32-p4-wifi6-touch-lcd/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── esp32-p4-wifi6-touch-lcd.cc │ │ │ │ └── lcd_init_cmds.h │ │ │ ├── esp32-s3-audio-board/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── esp32-s3-audio_board.cc │ │ │ │ ├── esp_lcd_jd9853.c │ │ │ │ └── esp_lcd_jd9853.h │ │ │ ├── esp32-s3-epaper-1.54/ │ │ │ │ ├── README.md │ │ │ │ ├── board_power_bsp.cc │ │ │ │ ├── board_power_bsp.h │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── custom_lcd_display.cc │ │ │ │ ├── custom_lcd_display.h │ │ │ │ └── waveshare-s3-epaper-1.54.cc │ │ │ ├── esp32-s3-epaper-3.97/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── custom_lcd_display.cc │ │ │ │ ├── custom_lcd_display.h │ │ │ │ └── waveshare-s3-epaper-3.97.cc │ │ │ ├── esp32-s3-rlcd-4.2/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── custom_lcd_display.cc │ │ │ │ ├── custom_lcd_display.h │ │ │ │ └── waveshare-s3-rlcd-4.2.cc │ │ │ ├── esp32-s3-touch-amoled-1.32/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-amoled-1.32.cc │ │ │ ├── esp32-s3-touch-amoled-1.75/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-amoled-1.75.cc │ │ │ ├── esp32-s3-touch-amoled-1.8/ │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-amoled-1.8.cc │ │ │ ├── esp32-s3-touch-amoled-2.06/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-amoled-2.06.cc │ │ │ ├── esp32-s3-touch-lcd-1.46/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-lcd-1.46.cc │ │ │ ├── esp32-s3-touch-lcd-1.83/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-lcd-1.83.cc │ │ │ ├── esp32-s3-touch-lcd-1.85/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-lcd-1.85.cc │ │ │ ├── esp32-s3-touch-lcd-1.85c/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-lcd-1.85c.cc │ │ │ ├── esp32-s3-touch-lcd-3.49/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── custom_lcd_display.cc │ │ │ │ ├── custom_lcd_display.h │ │ │ │ └── waveshare-s3-touch-lcd-3.49.cc │ │ │ ├── esp32-s3-touch-lcd-3.5/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-lcd-3.5.cc │ │ │ ├── esp32-s3-touch-lcd-3.5b/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── custom_lcd_display.cc │ │ │ │ ├── custom_lcd_display.h │ │ │ │ └── waveshare-s3-touch-lcd-3.5b.cc │ │ │ ├── esp32-s3-touch-lcd-4.3c/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ ├── esp32_s3_touch_lcd_4.3c.cc │ │ │ │ └── sdkconfig.4_3c │ │ │ ├── esp32-s3-touch-lcd-4b/ │ │ │ │ ├── README.md │ │ │ │ ├── config.h │ │ │ │ ├── config.json │ │ │ │ └── esp32-s3-touch-lcd-4b.cc │ │ │ └── esp32-touch-lcd-3.5/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── esp32-touch-lcd-3.5.cc │ │ ├── wireless-tag-wtp4c5mp07s/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── wireless-tag-wtp4c5mp07s.cc │ │ ├── xingzhi-abs-2.0/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── customlcddisplay.h │ │ │ ├── power_manager.h │ │ │ └── xingzhi-abs-2.0.cc │ │ ├── xingzhi-cube-0.85tft-ml307/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xingzhi-cube-0.85tft-ml307.cc │ │ ├── xingzhi-cube-0.85tft-wifi/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xingzhi-cube-0.85tft-wifi.cc │ │ ├── xingzhi-cube-0.96oled-ml307/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xingzhi-cube-0.96oled-ml307.cc │ │ ├── xingzhi-cube-0.96oled-wifi/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xingzhi-cube-0.96oled-wifi.cc │ │ ├── xingzhi-cube-1.54tft-ml307/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xingzhi-cube-1.54tft-ml307.cc │ │ ├── xingzhi-cube-1.54tft-wifi/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── power_manager.h │ │ │ └── xingzhi-cube-1.54tft-wifi.cc │ │ ├── xingzhi-metal-1.54-wifi/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── cst816x.cc │ │ │ ├── cst816x.h │ │ │ ├── power_manager.h │ │ │ └── xingzhi-metal-1.54-wifi.cc │ │ ├── xmini-c3/ │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xmini_c3_board.cc │ │ ├── xmini-c3-4g/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xmini_c3_4g_board.cc │ │ ├── xmini-c3-v3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── xmini_c3_board.cc │ │ ├── yunliao-s3/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── power_manager.cc │ │ │ ├── power_manager.h │ │ │ └── yunliao_s3.cc │ │ ├── zhengchen-1.54tft-ml307/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ └── zhengchen-1.54tft-ml307.cc │ │ ├── zhengchen-1.54tft-wifi/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── power_manager.h │ │ │ ├── zhengchen-1.54tft-wifi.cc │ │ │ └── zhengchen_lcd_display.h │ │ ├── zhengchen-cam/ │ │ │ ├── README.md │ │ │ ├── config.h │ │ │ ├── config.json │ │ │ ├── mcp_controller.cc │ │ │ ├── power_manager.h │ │ │ └── zhengchen_cam_board.cc │ │ └── zhengchen-cam-ml307/ │ │ ├── README.md │ │ ├── config.h │ │ ├── config.json │ │ ├── mcp_controller.cc │ │ ├── power_manager.h │ │ └── zhengchen_cam_board_ml307.cc │ ├── device_state.h │ ├── device_state_machine.cc │ ├── device_state_machine.h │ ├── display/ │ │ ├── display.cc │ │ ├── display.h │ │ ├── emote_display.cc │ │ ├── emote_display.h │ │ ├── lcd_display.cc │ │ ├── lcd_display.h │ │ ├── lvgl_display/ │ │ │ ├── emoji_collection.cc │ │ │ ├── emoji_collection.h │ │ │ ├── gif/ │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── README.md │ │ │ │ ├── gifdec.c │ │ │ │ ├── gifdec.h │ │ │ │ ├── gifdec_mve.h │ │ │ │ ├── lvgl_gif.cc │ │ │ │ └── lvgl_gif.h │ │ │ ├── jpg/ │ │ │ │ ├── image_to_jpeg.cpp │ │ │ │ ├── image_to_jpeg.h │ │ │ │ ├── jpeg_to_image.c │ │ │ │ └── jpeg_to_image.h │ │ │ ├── lvgl_display.cc │ │ │ ├── lvgl_display.h │ │ │ ├── lvgl_font.cc │ │ │ ├── lvgl_font.h │ │ │ ├── lvgl_image.cc │ │ │ ├── lvgl_image.h │ │ │ ├── lvgl_theme.cc │ │ │ └── lvgl_theme.h │ │ ├── oled_display.cc │ │ └── oled_display.h │ ├── idf_component.yml │ ├── led/ │ │ ├── circular_strip.cc │ │ ├── circular_strip.h │ │ ├── gpio_led.cc │ │ ├── gpio_led.h │ │ ├── led.h │ │ ├── single_led.cc │ │ └── single_led.h │ ├── main.cc │ ├── mcp_server.cc │ ├── mcp_server.h │ ├── ota.cc │ ├── ota.h │ ├── protocols/ │ │ ├── mqtt_protocol.cc │ │ ├── mqtt_protocol.h │ │ ├── protocol.cc │ │ ├── protocol.h │ │ ├── websocket_protocol.cc │ │ └── websocket_protocol.h │ ├── settings.cc │ ├── settings.h │ ├── system_info.cc │ └── system_info.h ├── partitions/ │ ├── v1/ │ │ ├── 16m.csv │ │ ├── 16m_custom_wakeword.csv │ │ ├── 16m_echoear.csv │ │ ├── 32m.csv │ │ ├── 4m.csv │ │ ├── 4m_esp-hi.csv │ │ └── 8m.csv │ └── v2/ │ ├── 16m.csv │ ├── 16m_c3.csv │ ├── 32m.csv │ ├── 4m.csv │ ├── 8m.csv │ └── README.md ├── scripts/ │ ├── Image_Converter/ │ │ ├── LVGLImage.py │ │ ├── README.md │ │ ├── lvgl_tools_gui.py │ │ └── requirements.txt │ ├── acoustic_check/ │ │ ├── demod.py │ │ ├── graphic.py │ │ ├── main.py │ │ ├── readme.md │ │ └── requirements.txt │ ├── audio_debug_server.py │ ├── build_default_assets.py │ ├── download_github_runs.py │ ├── gen_lang.py │ ├── mp3_to_ogg.sh │ ├── ogg_converter/ │ │ ├── README.md │ │ └── xiaozhi_ogg_converter.py │ ├── p3_tools/ │ │ ├── README.md │ │ ├── batch_convert_gui.py │ │ ├── convert_audio_to_p3.py │ │ ├── convert_p3_to_audio.py │ │ ├── p3_gui_player.py │ │ ├── play_p3.py │ │ └── requirements.txt │ ├── release.py │ ├── sonic_wifi_config.html │ ├── spiffs_assets/ │ │ ├── README.md │ │ ├── build.py │ │ ├── build_all.py │ │ ├── pack_model.py │ │ └── spiffs_assets_gen.py │ └── versions.py ├── sdkconfig.defaults ├── sdkconfig.defaults.esp32 ├── sdkconfig.defaults.esp32c3 ├── sdkconfig.defaults.esp32c5 ├── sdkconfig.defaults.esp32c6 ├── sdkconfig.defaults.esp32p4 └── sdkconfig.defaults.esp32s3