diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index baf86b2a8..5ff3e165d 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -1,3 +1,37 @@ +# Define default assets files (Absolute url starting with http or https is supported) +set(ASSETS_PUHUI_COMMON_14_1 "none-font_puhui_common_14_1-none.bin") +set(ASSETS_XIAOZHI_WAKENET_ONLY "wn9_nihaoxiaozhi_tts-none-none.bin") +set(ASSETS_XIAOZHI_PUHUI_COMMON_14_1 "wn9_nihaoxiaozhi_tts-font_puhui_common_14_1-none.bin") +set(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32 "wn9_nihaoxiaozhi_tts-font_puhui_common_16_4-emojis_32.bin") +set(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64 "wn9_nihaoxiaozhi_tts-font_puhui_common_16_4-emojis_64.bin") +set(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64 "wn9_nihaoxiaozhi_tts-font_puhui_common_20_4-emojis_64.bin") +set(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64 "wn9_nihaoxiaozhi_tts-font_puhui_common_30_4-emojis_64.bin") +set(ASSETS_XIAOZHI_S_WAKENET_ONLY "wn9s_nihaoxiaozhi-none-none.bin") +set(ASSETS_XIAOZHI_S_PUHUI_COMMON_14_1 "wn9s_nihaoxiaozhi-font_puhui_common_14_1-none.bin") +set(ASSETS_XIAOZHI_S_PUHUI_COMMON_16_4_EMOJI_32 "wn9s_nihaoxiaozhi-font_puhui_common_16_4-emojis_32.bin") +set(ASSETS_XIAOZHI_S_PUHUI_COMMON_20_4_EMOJI_32 "wn9s_nihaoxiaozhi-font_puhui_common_20_4-emojis_32.bin") +set(ASSETS_XIAOZHI_S_PUHUI_COMMON_20_4_EMOJI_64 "wn9s_nihaoxiaozhi-font_puhui_common_20_4-emojis_64.bin") +set(ASSETS_XIAOZHI_S_PUHUI_COMMON_30_4_EMOJI_64 "wn9s_nihaoxiaozhi-font_puhui_common_30_4-emojis_64.bin") + +# Embedded font files defined in `xiaozhi-fonts` component +# Basic fonts include ASCII and about 600 characters used in assets/locales +set(FONT_PUHUI_BASIC_14_1 font_puhui_basic_14_1) +set(FONT_PUHUI_BASIC_16_4 font_puhui_basic_16_4) +set(FONT_PUHUI_BASIC_20_4 font_puhui_basic_20_4) +set(FONT_PUHUI_BASIC_30_4 font_puhui_basic_30_4) +# Common fonts include about 7000 common characters generated with DeepSeek R1 tokenizer +set(FONT_PUHUI_COMMON_14_1 font_puhui_14_1) +set(FONT_PUHUI_COMMON_16_4 font_puhui_16_4) +set(FONT_PUHUI_COMMON_20_4 font_puhui_20_4) +set(FONT_PUHUI_COMMON_30_4 font_puhui_30_4) +set(FONT_AWESOME_14_1 font_awesome_14_1) +set(FONT_AWESOME_30_1 font_awesome_30_1) +set(FONT_AWESOME_16_4 font_awesome_16_4) +set(FONT_AWESOME_20_4 font_awesome_20_4) +set(FONT_AWESOME_30_4 font_awesome_30_4) + + +# Define source files set(SOURCES "audio/audio_codec.cc" "audio/audio_service.cc" "audio/codecs/no_audio_codec.cc" @@ -30,207 +64,459 @@ set(SOURCES "audio/audio_codec.cc" set(INCLUDE_DIRS "." "display" "audio" "protocols") -# 添加板级公共文件 +# Add board common files file(GLOB BOARD_COMMON_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/boards/common/*.cc) list(APPEND SOURCES ${BOARD_COMMON_SOURCES}) list(APPEND INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/boards/common) -# 根据 BOARD_TYPE 配置添加对应的板级文件 +# Set default LVGL_TEXT_FONT and LVGL_ICON_FONT +set(LVGL_TEXT_FONT ${FONT_PUHUI_COMMON_14_1}) +set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + +# Add board files according to BOARD_TYPE +# Set default assets if the board uses partition table V2 if(CONFIG_BOARD_TYPE_BREAD_COMPACT_WIFI) set(BOARD_TYPE "bread-compact-wifi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_ML307) set(BOARD_TYPE "bread-compact-ml307") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_ESP32) set(BOARD_TYPE "bread-compact-esp32") elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_ESP32_LCD) set(BOARD_TYPE "bread-compact-esp32-lcd") + set(LVGL_TEXT_FONT ${FONT_PUHUI_COMMON_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) elseif(CONFIG_BOARD_TYPE_DF_K10) set(BOARD_TYPE "df-k10") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_DF_S3_AI_CAM) set(BOARD_TYPE "df-s3-ai-cam") + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_WAKENET_ONLY}) elseif(CONFIG_BOARD_TYPE_ESP_BOX_3) set(BOARD_TYPE "esp-box-3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP_BOX) set(BOARD_TYPE "esp-box") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP_BOX_LITE) set(BOARD_TYPE "esp-box-lite") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_KEVIN_BOX_1) set(BOARD_TYPE "kevin-box-1") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_KEVIN_BOX_2) set(BOARD_TYPE "kevin-box-2") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_KEVIN_C3) set(BOARD_TYPE "kevin-c3") + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_WAKENET_ONLY}) elseif(CONFIG_BOARD_TYPE_KEVIN_SP_V3_DEV) set(BOARD_TYPE "kevin-sp-v3-dev") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_KEVIN_SP_V4_DEV) set(BOARD_TYPE "kevin-sp-v4-dev") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_KEVIN_YUYING_313LCD) set(BOARD_TYPE "kevin-yuying-313lcd") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_LICHUANG_DEV) set(BOARD_TYPE "lichuang-dev") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_LICHUANG_C3_DEV) set(BOARD_TYPE "lichuang-c3-dev") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_20_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_MAGICLICK_2P4) set(BOARD_TYPE "magiclick-2p4") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_MAGICLICK_2P5) set(BOARD_TYPE "magiclick-2p5") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_MAGICLICK_C3) set(BOARD_TYPE "magiclick-c3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_MAGICLICK_C3_V2) set(BOARD_TYPE "magiclick-c3-v2") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_M5STACK_CORE_S3) set(BOARD_TYPE "m5stack-core-s3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_M5STACK_CORE_TAB5) set(BOARD_TYPE "m5stack-tab5") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ATOMS3_ECHO_BASE) set(BOARD_TYPE "atoms3-echo-base") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_ATOMS3R_ECHO_BASE) set(BOARD_TYPE "atoms3r-echo-base") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_ATOMS3R_CAM_M12_ECHO_BASE) set(BOARD_TYPE "atoms3r-cam-m12-echo-base") + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_WAKENET_ONLY}) elseif(CONFIG_BOARD_TYPE_ATOM_ECHOS3R) set(BOARD_TYPE "atom-echos3r") + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_WAKENET_ONLY}) elseif(CONFIG_BOARD_TYPE_ATOMMATRIX_ECHO_BASE) set(BOARD_TYPE "atommatrix-echo-base") elseif(CONFIG_BOARD_TYPE_XMINI_C3_V3) set(BOARD_TYPE "xmini-c3-v3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_XMINI_C3_4G) set(BOARD_TYPE "xmini-c3-4g") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_XMINI_C3) set(BOARD_TYPE "xmini-c3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_ESP32S3_KORVO2_V3) set(BOARD_TYPE "esp32s3-korvo2-v3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP_SPARKBOT) set(BOARD_TYPE "esp-sparkbot") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP_SPOT_S3) set(BOARD_TYPE "esp-spot-s3") + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_WAKENET_ONLY}) elseif(CONFIG_BOARD_TYPE_ESP_HI) set(BOARD_TYPE "esp-hi") elseif(CONFIG_BOARD_TYPE_ECHOEAR) set(BOARD_TYPE "echoear") + set(LVGL_TEXT_FONT ${FONT_PUHUI_COMMON_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) elseif(CONFIG_BOARD_TYPE_ESP32S3_AUDIO_BOARD) set(BOARD_TYPE "waveshare-s3-audio-board") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_AMOLED_1_8) set(BOARD_TYPE "esp32-s3-touch-amoled-1.8") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_AMOLED_2_06) set(BOARD_TYPE "waveshare-s3-touch-amoled-2.06") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_AMOLED_1_75) set(BOARD_TYPE "waveshare-s3-touch-amoled-1.75") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_LCD_1_85C) set(BOARD_TYPE "esp32-s3-touch-lcd-1.85c") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_LCD_1_85) set(BOARD_TYPE "esp32-s3-touch-lcd-1.85") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_LCD_1_46) set(BOARD_TYPE "esp32-s3-touch-lcd-1.46") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_LCD_3_5) set(BOARD_TYPE "esp32-s3-touch-lcd-3.5") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Touch_LCD_3_5B) set(BOARD_TYPE "waveshare-s3-touch-lcd-3.5b") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_ESP32C6_LCD_1_69) set(BOARD_TYPE "waveshare-c6-lcd-1.69") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32C6_Touch_AMOLED_1_43) set(BOARD_TYPE "waveshare-c6-touch-amoled-1.43") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32P4_NANO) set(BOARD_TYPE "waveshare-p4-nano") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32P4_WIFI6_Touch_LCD_4B) set(BOARD_TYPE "waveshare-p4-wifi6-touch-lcd-4b") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32P4_WIFI6_Touch_LCD_XC) set(BOARD_TYPE "waveshare-p4-wifi6-touch-lcd-xc") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_WIFI_LCD) set(BOARD_TYPE "bread-compact-wifi-lcd") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_TUDOUZI) set(BOARD_TYPE "tudouzi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_LILYGO_T_CIRCLE_S3) set(BOARD_TYPE "lilygo-t-circle-s3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_0_V1_1) set(BOARD_TYPE "lilygo-t-cameraplus-s3") -elseif(CONFIG_BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_2) - set(BOARD_TYPE "lilygo-t-cameraplus-s3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA) set(BOARD_TYPE "lilygo-t-display-s3-pro-mvsrlora") -elseif(CONFIG_BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA_NO_BATTERY) - set(BOARD_TYPE "lilygo-t-display-s3-pro-mvsrlora") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_MOVECALL_MOJI_ESP32S3) set(BOARD_TYPE "movecall-moji-esp32s3") - elseif(CONFIG_BOARD_TYPE_MOVECALL_CUICAN_ESP32S3) + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) +elseif(CONFIG_BOARD_TYPE_MOVECALL_CUICAN_ESP32S3) set(BOARD_TYPE "movecall-cuican-esp32s3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3) set(BOARD_TYPE "atk-dnesp32s3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX) set(BOARD_TYPE "atk-dnesp32s3-box") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX0) set(BOARD_TYPE "atk-dnesp32s3-box0") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX2_WIFI) set(BOARD_TYPE "atk-dnesp32s3-box2-wifi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX2_4G) - set(BOARD_TYPE "atk-dnesp32s3-box2-4g") + set(BOARD_TYPE "atk-dnesp32s3-box2-4g") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3M_WIFI) set(BOARD_TYPE "atk-dnesp32s3m-wifi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3M_4G) set(BOARD_TYPE "atk-dnesp32s3m-4g") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_DU_CHATX) set(BOARD_TYPE "du-chatx") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_ESP32S3_Taiji_Pi) set(BOARD_TYPE "taiji-pi-s3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_XINGZHI_Cube_0_85TFT_WIFI) set(BOARD_TYPE "xingzhi-cube-0.85tft-wifi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_XINGZHI_Cube_0_85TFT_ML307) set(BOARD_TYPE "xingzhi-cube-0.85tft-ml307") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_XINGZHI_Cube_0_96OLED_WIFI) set(BOARD_TYPE "xingzhi-cube-0.96oled-wifi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_XINGZHI_Cube_0_96OLED_ML307) set(BOARD_TYPE "xingzhi-cube-0.96oled-ml307") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_14_1}) elseif(CONFIG_BOARD_TYPE_XINGZHI_Cube_1_54TFT_WIFI) set(BOARD_TYPE "xingzhi-cube-1.54tft-wifi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_XINGZHI_Cube_1_54TFT_ML307) set(BOARD_TYPE "xingzhi-cube-1.54tft-ml307") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_SENSECAP_WATCHER) set(BOARD_TYPE "sensecap-watcher") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_DOIT_S3_AIBOX) set(BOARD_TYPE "doit-s3-aibox") + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_WAKENET_ONLY}) elseif(CONFIG_BOARD_TYPE_MIXGO_NOVA) set(BOARD_TYPE "mixgo-nova") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_GENJUTECH_S3_1_54TFT) set(BOARD_TYPE "genjutech-s3-1.54tft") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32_CGC) set(BOARD_TYPE "esp32-cgc") + set(LVGL_TEXT_FONT ${FONT_PUHUI_COMMON_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) elseif(CONFIG_BOARD_TYPE_ESP32_CGC_144) - set(BOARD_TYPE "esp32-cgc-144") + set(BOARD_TYPE "esp32-cgc-144") + set(LVGL_TEXT_FONT ${FONT_PUHUI_COMMON_14_1}) + set(LVGL_ICON_FONT ${FONT_AWESOME_14_1}) elseif(CONFIG_BOARD_TYPE_ESP_S3_LCD_EV_Board) set(BOARD_TYPE "esp-s3-lcd-ev-board") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP_S3_LCD_EV_Board_2) set(BOARD_TYPE "esp-s3-lcd-ev-board-2") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_30_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_30_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ZHENGCHEN_1_54TFT_WIFI) set(BOARD_TYPE "zhengchen-1.54tft-wifi") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_MINSI_K08_DUAL) set(BOARD_TYPE "minsi-k08-dual") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ZHENGCHEN_1_54TFT_ML307) set(BOARD_TYPE "zhengchen-1.54tft-ml307") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_ESP32_S3_1_54_MUMA) set(BOARD_TYPE "sp-esp32-s3-1.54-muma") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32}) elseif(CONFIG_BOARD_TYPE_ESP32_S3_1_28_BOX) set(BOARD_TYPE "sp-esp32-s3-1.28-box") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_OTTO_ROBOT) set(BOARD_TYPE "otto-robot") + set(LVGL_TEXT_FONT ${FONT_PUHUI_COMMON_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) elseif(CONFIG_BOARD_TYPE_ELECTRON_BOT) set(BOARD_TYPE "electron-bot") + set(LVGL_TEXT_FONT ${FONT_PUHUI_COMMON_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_WIFI_CAM) set(BOARD_TYPE "bread-compact-wifi-s3cam") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_16_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_16_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_JIUCHUAN) set(BOARD_TYPE "jiuchuan-s3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_LABPLUS_MPYTHON_V3) - set(BOARD_TYPE "labplus-mpython-v3") + set(BOARD_TYPE "labplus-mpython-v3") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_LABPLUS_LEDONG_V2) - set(BOARD_TYPE "labplus-ledong-v2") + set(BOARD_TYPE "labplus-ledong-v2") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64}) elseif(CONFIG_BOARD_TYPE_SURFER_C3_1_14TFT) set(BOARD_TYPE "surfer-c3-1.14tft") + set(LVGL_TEXT_FONT ${FONT_PUHUI_BASIC_20_4}) + set(LVGL_ICON_FONT ${FONT_AWESOME_20_4}) + set(DEFAULT_ASSETS ${ASSETS_XIAOZHI_S_PUHUI_COMMON_20_4_EMOJI_32}) endif() + file(GLOB BOARD_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD_TYPE}/*.cc ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD_TYPE}/*.c ) list(APPEND SOURCES ${BOARD_SOURCES}) +# Select audio processor according to Kconfig if(CONFIG_USE_AUDIO_PROCESSOR) list(APPEND SOURCES "audio/processors/afe_audio_processor.cc") else() @@ -244,7 +530,7 @@ elseif(CONFIG_USE_CUSTOM_WAKE_WORD) list(APPEND SOURCES "audio/wake_words/custom_wake_word.cc") endif() -# 根据Kconfig选择语言目录 +# Select language directory according to Kconfig if(CONFIG_LANGUAGE_ZH_CN) set(LANG_DIR "zh-CN") elseif(CONFIG_LANGUAGE_ZH_TW) @@ -291,13 +577,13 @@ elseif(CONFIG_LANGUAGE_RO_RO) set(LANG_DIR "ro-RO") endif() -# 定义生成路径 +# Define generation path set(LANG_JSON "${CMAKE_CURRENT_SOURCE_DIR}/assets/locales/${LANG_DIR}/language.json") set(LANG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/assets/lang_config.h") file(GLOB LANG_SOUNDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/locales/${LANG_DIR}/*.ogg) file(GLOB COMMON_SOUNDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/common/*.ogg) -# 如果目标芯片是 ESP32,则排除特定文件 +# If target chip is ESP32, exclude specific files to avoid build errors if(CONFIG_IDF_TARGET_ESP32) list(REMOVE_ITEM SOURCES "audio/codecs/box_audio_codec.cc" "audio/codecs/es8388_audio_codec.cc" @@ -312,16 +598,17 @@ idf_component_register(SRCS ${SOURCES} WHOLE_ARCHIVE ) -# 使用 target_compile_definitions 来定义 BOARD_TYPE, BOARD_NAME -# 如果 BOARD_NAME 为空,则使用 BOARD_TYPE +# Use target_compile_definitions to define BOARD_TYPE, BOARD_NAME +# If BOARD_NAME is empty, use BOARD_TYPE if(NOT BOARD_NAME) set(BOARD_NAME ${BOARD_TYPE}) endif() target_compile_definitions(${COMPONENT_LIB} PRIVATE BOARD_TYPE=\"${BOARD_TYPE}\" BOARD_NAME=\"${BOARD_NAME}\" + PRIVATE DEFAULT_ASSETS=\"${DEFAULT_ASSETS}\" LVGL_TEXT_FONT=${LVGL_TEXT_FONT} LVGL_ICON_FONT=${LVGL_ICON_FONT} ) -# 添加生成规则 +# Add generation rules add_custom_command( OUTPUT ${LANG_HEADER} COMMAND python ${PROJECT_DIR}/scripts/gen_lang.py @@ -333,7 +620,7 @@ add_custom_command( COMMENT "Generating ${LANG_DIR} language config" ) -# 强制建立生成依赖 +# Force build generation dependencies add_custom_target(lang_header ALL DEPENDS ${LANG_HEADER} ) @@ -359,7 +646,7 @@ foreach(FILENAME IN LISTS FILES_TO_DOWNLOAD) set(REMOTE_FILE "${URL}/${FILENAME}") set(LOCAL_FILE "${SPIFFS_DIR}/${FILENAME}") - # 检查本地文件是否存在 + # Check if local file exists if(EXISTS ${LOCAL_FILE}) message(STATUS "File ${FILENAME} already exists, skipping download") else() @@ -401,3 +688,98 @@ spiffs_create_partition_assets( IMPORT_INC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD_TYPE} ) endif() + +# Font configuration validation function +function(validate_font_config board_name text_font default_assets) + if(text_font) + # Check if DEFAULT_ASSETS contains font + if(default_assets AND default_assets MATCHES "font_") + # Rule 1: If DEFAULT_ASSETS uses font, LVGL_TEXT_FONT must be BASIC + if(NOT text_font MATCHES "basic") + message(FATAL_ERROR "Font config error for ${board_name}: DEFAULT_ASSETS contains COMMON font but LVGL_TEXT_FONT is not BASIC (${text_font})") + endif() + else() + # Rule 2: If no DEFAULT_ASSETS or DEFAULT_ASSETS doesn't contain font_, LVGL_TEXT_FONT must not be BASIC + if(text_font MATCHES "basic") + message(FATAL_ERROR "Font config error for ${board_name}: No DEFAULT_ASSETS with COMMON font but LVGL_TEXT_FONT is not COMMON (${text_font})") + endif() + endif() + # Pass validation + message(STATUS "Font config validation passed for ${board_name}: LVGL_TEXT_FONT=${text_font}, DEFAULT_ASSETS=${default_assets}") + endif() +endfunction() + +# DEFAULT_ASSETS prefix validation function +function(validate_default_assets_prefix board_name default_assets) + if(default_assets) + # Check for ESP32S3/P4 target - DEFAULT_ASSETS cannot start with "wn9s_" + if(CONFIG_IDF_TARGET_ESP32S3 OR CONFIG_IDF_TARGET_ESP32P4) + if(default_assets MATCHES "^wn9s_") + message(FATAL_ERROR "Assets config error for ${board_name}: DEFAULT_ASSETS cannot start with 'wn9s_' for ESP32S3 target (${default_assets})") + endif() + endif() + + # Check for ESP32C3/C6 target - DEFAULT_ASSETS cannot start with "wn9_" + if(CONFIG_IDF_TARGET_ESP32C3 OR CONFIG_IDF_TARGET_ESP32C6) + if(default_assets MATCHES "^wn9_") + message(FATAL_ERROR "Assets config error for ${board_name}: DEFAULT_ASSETS cannot start with 'wn9_' for ESP32C3/C6 target (${default_assets})") + endif() + endif() + + # Pass validation + message(STATUS "Assets prefix validation passed for ${board_name}: DEFAULT_ASSETS=${default_assets}") + endif() +endfunction() + +# Global font configuration validation +# This will validate the current board's font configuration +if(LVGL_TEXT_FONT) + validate_font_config("${BOARD_TYPE}" "${LVGL_TEXT_FONT}" "${DEFAULT_ASSETS}") +endif() + +# Global DEFAULT_ASSETS prefix validation +# This will validate the current board's DEFAULT_ASSETS prefix configuration +if(DEFAULT_ASSETS) + validate_default_assets_prefix("${BOARD_TYPE}" "${DEFAULT_ASSETS}") +endif() + +# Download and flash DEFAULT_ASSETS if defined and enabled +if(DEFAULT_ASSETS AND CONFIG_FLASH_DEFAULT_ASSETS) + # Construct the full URL + set(ASSETS_URL "${CONFIG_DEFAULT_ASSETS_URL_PREFIX}${DEFAULT_ASSETS}") + set(ASSETS_LOCAL_FILE "${CMAKE_BINARY_DIR}/${DEFAULT_ASSETS}") + set(ASSETS_TEMP_FILE "${CMAKE_BINARY_DIR}/${DEFAULT_ASSETS}.tmp") + + # Check if local file exists + if(EXISTS ${ASSETS_LOCAL_FILE}) + message(STATUS "Assets file ${DEFAULT_ASSETS} already exists, skipping download") + else() + message(STATUS "Downloading ${DEFAULT_ASSETS}") + + # Clean up any existing temp file + if(EXISTS ${ASSETS_TEMP_FILE}) + file(REMOVE ${ASSETS_TEMP_FILE}) + endif() + + # Download to temporary file first + file(DOWNLOAD ${ASSETS_URL} ${ASSETS_TEMP_FILE} + STATUS DOWNLOAD_STATUS) + list(GET DOWNLOAD_STATUS 0 STATUS_CODE) + if(NOT STATUS_CODE EQUAL 0) + # Clean up temp file on failure + if(EXISTS ${ASSETS_TEMP_FILE}) + file(REMOVE ${ASSETS_TEMP_FILE}) + endif() + message(FATAL_ERROR "Failed to download ${DEFAULT_ASSETS} from ${ASSETS_URL}") + endif() + + # Move temp file to final location (atomic operation) + file(RENAME ${ASSETS_TEMP_FILE} ${ASSETS_LOCAL_FILE}) + message(STATUS "Successfully downloaded ${DEFAULT_ASSETS}") + endif() + + # Flash assets to partition using esptool_py_flash_to_partition + esptool_py_flash_to_partition(flash "assets" "${ASSETS_LOCAL_FILE}") + + message(STATUS "Assets download and flash configured: ${ASSETS_URL} -> assets partition") +endif() diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index a55b728b8..d63b4c9e4 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -12,6 +12,13 @@ config DEFAULT_ASSETS_URL_PREFIX help The assets will be downloaded from this URL. +config FLASH_DEFAULT_ASSETS + bool "Flash Default Assets" + default y + help + Download and flash default assets to the assets partition during build. + If disabled, the assets partition will not be automatically populated. + choice prompt "Default Language" default LANGUAGE_ZH_CN diff --git a/main/boards/README.md b/main/boards/README.md index 800d5d047..f5ba9bee2 100644 --- a/main/boards/README.md +++ b/main/boards/README.md @@ -131,10 +131,6 @@ mkdir main/boards/my-custom-board #define TAG "MyCustomBoard" -// 声明字体 -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class MyCustomBoard : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -212,8 +208,7 @@ private: display_ = new SpiLcdDisplay(panel_io, panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } // MCP Tools 初始化 @@ -232,12 +227,6 @@ public: GetBacklight()->SetBrightness(100); } - // 动态加载资源文件(包括字体、唤醒词、表情包) - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - // 获取音频编解码器 virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( diff --git a/main/boards/atk-dnesp32s3-box/atk_dnesp32s3_box.cc b/main/boards/atk-dnesp32s3-box/atk_dnesp32s3_box.cc index 94a82c369..13759495d 100644 --- a/main/boards/atk-dnesp32s3-box/atk_dnesp32s3_box.cc +++ b/main/boards/atk-dnesp32s3-box/atk_dnesp32s3_box.cc @@ -20,10 +20,6 @@ #define TAG "atk_dnesp32s3_box" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class ATK_NoAudioCodecDuplex : public NoAudioCodec { public: ATK_NoAudioCodecDuplex(int input_sample_rate, int output_sample_rate, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din) { @@ -84,7 +80,6 @@ class ATK_NoAudioCodecDuplex : public NoAudioCodec { } }; - class XL9555_IN : public I2cDevice { public: XL9555_IN(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : I2cDevice(i2c_bus, addr) { @@ -243,8 +238,7 @@ class atk_dnesp32s3_box : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -266,11 +260,6 @@ class atk_dnesp32s3_box : public WifiBoard { InitializeButtons(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { /* 根据探测结果初始化编解码器 */ if (es8311_detected_) { diff --git a/main/boards/atk-dnesp32s3-box0/atk_dnesp32s3_box0.cc b/main/boards/atk-dnesp32s3-box0/atk_dnesp32s3_box0.cc index c3b45a0ae..ce0bc43a1 100644 --- a/main/boards/atk-dnesp32s3-box0/atk_dnesp32s3_box0.cc +++ b/main/boards/atk-dnesp32s3-box0/atk_dnesp32s3_box0.cc @@ -20,9 +20,6 @@ #define TAG "atk_dnesp32s3_box0" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class atk_dnesp32s3_box0 : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -294,7 +291,6 @@ class atk_dnesp32s3_box0 : public WifiBoard { GetDisplay()->ShowNotification(Lang::Strings::MAX_VOLUME); }); - } void InitializeSt7789Display() { @@ -325,8 +321,7 @@ class atk_dnesp32s3_box0 : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -344,11 +339,6 @@ class atk_dnesp32s3_box0 : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/atk-dnesp32s3-box2-4g/atk_dnesp32s3_box2.cc b/main/boards/atk-dnesp32s3-box2-4g/atk_dnesp32s3_box2.cc index cb46b3e67..4a906db7a 100644 --- a/main/boards/atk-dnesp32s3-box2-4g/atk_dnesp32s3_box2.cc +++ b/main/boards/atk-dnesp32s3-box2-4g/atk_dnesp32s3_box2.cc @@ -21,9 +21,6 @@ #define TAG "atk_dnesp32s3_box2_4g" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class atk_dnesp32s3_box2_4g : public DualNetworkBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -412,8 +409,7 @@ class atk_dnesp32s3_box2_4g : public DualNetworkBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -429,11 +425,6 @@ class atk_dnesp32s3_box2_4g : public DualNetworkBoard { InitializeBoardPowerManager(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8389AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/atk-dnesp32s3-box2-wifi/atk_dnesp32s3_box2.cc b/main/boards/atk-dnesp32s3-box2-wifi/atk_dnesp32s3_box2.cc index 8276684dc..acc2e2169 100644 --- a/main/boards/atk-dnesp32s3-box2-wifi/atk_dnesp32s3_box2.cc +++ b/main/boards/atk-dnesp32s3-box2-wifi/atk_dnesp32s3_box2.cc @@ -21,9 +21,6 @@ #define TAG "atk_dnesp32s3_box2_wifi" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class atk_dnesp32s3_box2_wifi : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -392,8 +389,7 @@ class atk_dnesp32s3_box2_wifi : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -408,11 +404,6 @@ class atk_dnesp32s3_box2_wifi : public WifiBoard { InitializeBoardPowerManager(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8389AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/atk-dnesp32s3/atk_dnesp32s3.cc b/main/boards/atk-dnesp32s3/atk_dnesp32s3.cc index 7d7bc278b..0dd9125e6 100644 --- a/main/boards/atk-dnesp32s3/atk_dnesp32s3.cc +++ b/main/boards/atk-dnesp32s3/atk_dnesp32s3.cc @@ -16,9 +16,6 @@ #define TAG "atk_dnesp32s3" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class XL9555 : public I2cDevice { public: XL9555(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : I2cDevice(i2c_bus, addr) { @@ -47,7 +44,6 @@ class XL9555 : public I2cDevice { } }; - class atk_dnesp32s3 : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -131,8 +127,7 @@ class atk_dnesp32s3 : public WifiBoard { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } // 初始化摄像头:ov2640; @@ -201,11 +196,6 @@ class atk_dnesp32s3 : public WifiBoard { InitializeCamera(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/atk-dnesp32s3m-4g/atk_dnesp32s3m.cc b/main/boards/atk-dnesp32s3m-4g/atk_dnesp32s3m.cc index ba2879508..9f2f7014f 100644 --- a/main/boards/atk-dnesp32s3m-4g/atk_dnesp32s3m.cc +++ b/main/boards/atk-dnesp32s3m-4g/atk_dnesp32s3m.cc @@ -20,9 +20,6 @@ #define TAG "atk_dnesp32s3m_4g" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class atk_dnesp32s3m_4g : public Ml307Board { private: i2c_master_bus_handle_t i2c_bus_; @@ -167,8 +164,7 @@ class atk_dnesp32s3m_4g : public Ml307Board { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -186,11 +182,6 @@ class atk_dnesp32s3m_4g : public Ml307Board { } } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/atk-dnesp32s3m-wifi/atk_dnesp32s3m.cc b/main/boards/atk-dnesp32s3m-wifi/atk_dnesp32s3m.cc index 2146e00e2..1ae96a1e8 100644 --- a/main/boards/atk-dnesp32s3m-wifi/atk_dnesp32s3m.cc +++ b/main/boards/atk-dnesp32s3m-wifi/atk_dnesp32s3m.cc @@ -19,9 +19,6 @@ #define TAG "atk_dnesp32s3m_wifi" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class atk_dnesp32s3m_wifi : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -177,8 +174,7 @@ class atk_dnesp32s3m_wifi : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -196,11 +192,6 @@ class atk_dnesp32s3m_wifi : public WifiBoard { } } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/atom-echos3r/atom_echos3r.cc b/main/boards/atom-echos3r/atom_echos3r.cc index 22103d983..bb9c8e4f4 100644 --- a/main/boards/atom-echos3r/atom_echos3r.cc +++ b/main/boards/atom-echos3r/atom_echos3r.cc @@ -12,7 +12,6 @@ #define TAG "AtomEchoS3R" - class AtomEchoS3rBaseBoard : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -71,11 +70,6 @@ class AtomEchoS3rBaseBoard : public WifiBoard { InitializeButtons(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_WAKENET); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/atommatrix-echo-base/atommatrix_echo_base.cc b/main/boards/atommatrix-echo-base/atommatrix_echo_base.cc index 0b5f5b608..5bfd3ccf5 100644 --- a/main/boards/atommatrix-echo-base/atommatrix_echo_base.cc +++ b/main/boards/atommatrix-echo-base/atommatrix_echo_base.cc @@ -33,7 +33,6 @@ class Pi4ioe : public I2cDevice { } }; - class AtomMatrixEchoBaseBoard : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -87,7 +86,6 @@ class AtomMatrixEchoBaseBoard : public WifiBoard { pi4ioe_->SetSpeakerMute(false); } - void InitializeButtons() { face_button_.OnClick([this]() { diff --git a/main/boards/atoms3-echo-base/atoms3_echo_base.cc b/main/boards/atoms3-echo-base/atoms3_echo_base.cc index f288b9dd6..64e592e65 100644 --- a/main/boards/atoms3-echo-base/atoms3_echo_base.cc +++ b/main/boards/atoms3-echo-base/atoms3_echo_base.cc @@ -16,9 +16,6 @@ #define TAG "AtomS3+EchoBase" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { // {cmd, { data }, data_size, delay_ms} {0xfe, (uint8_t[]){0x00}, 0, 0}, @@ -176,10 +173,8 @@ class AtomS3EchoBaseBoard : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_init(panel_handle)); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true)); - display_ = new SpiLcdDisplay(io_handle, panel_handle, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -203,11 +198,6 @@ class AtomS3EchoBaseBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/atoms3r-cam-m12-echo-base/atoms3r_cam_m12_echo_base.cc b/main/boards/atoms3r-cam-m12-echo-base/atoms3r_cam_m12_echo_base.cc index 5e55782ec..f7acca00e 100644 --- a/main/boards/atoms3r-cam-m12-echo-base/atoms3r_cam_m12_echo_base.cc +++ b/main/boards/atoms3r-cam-m12-echo-base/atoms3r_cam_m12_echo_base.cc @@ -169,11 +169,6 @@ class AtomS3rCamM12EchoBaseBoard : public WifiBoard { InitializePi4ioe(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_WAKENET); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc b/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc index e105ce128..3407828c9 100644 --- a/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc +++ b/main/boards/atoms3r-echo-base/atoms3r_echo_base.cc @@ -23,9 +23,6 @@ #define PI4IOE_REG_IO_OUT 0x05 #define PI4IOE_REG_IO_PULLUP 0x0D -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class Pi4ioe : public I2cDevice { public: Pi4ioe(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : I2cDevice(i2c_bus, addr) { @@ -255,8 +252,7 @@ class AtomS3rEchoBaseBoard : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true)); display_ = new SpiLcdDisplay(io_handle, panel_handle, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -282,11 +278,6 @@ class AtomS3rEchoBaseBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc b/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc index a1ecd8c72..f1c53e3a6 100644 --- a/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc +++ b/main/boards/bread-compact-esp32-lcd/esp32_bread_board_lcd.cc @@ -58,9 +58,6 @@ static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { #define TAG "ESP32-LCD-MarsbearSupport" -LV_FONT_DECLARE(font_puhui_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - class CompactWifiBoardLCD : public WifiBoard { private: Button boot_button_; @@ -114,7 +111,6 @@ class CompactWifiBoardLCD : public WifiBoard { #endif esp_lcd_panel_reset(panel); - esp_lcd_panel_init(panel); esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); @@ -124,12 +120,9 @@ class CompactWifiBoardLCD : public WifiBoard { panel_config.vendor_config = &gc9107_vendor_config; #endif display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_14_1, &font_awesome_14_1, new Twemoji32()}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } - - void InitializeButtons() { // 配置 GPIO diff --git a/main/boards/bread-compact-esp32/esp32_bread_board.cc b/main/boards/bread-compact-esp32/esp32_bread_board.cc index e86f714f7..7c32ce4bd 100644 --- a/main/boards/bread-compact-esp32/esp32_bread_board.cc +++ b/main/boards/bread-compact-esp32/esp32_bread_board.cc @@ -17,10 +17,6 @@ #define TAG "ESP32-MarsbearSupport" -LV_FONT_DECLARE(font_puhui_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - - class CompactWifiBoard : public WifiBoard { private: Button boot_button_; @@ -92,8 +88,7 @@ class CompactWifiBoard : public WifiBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { diff --git a/main/boards/bread-compact-ml307/compact_ml307_board.cc b/main/boards/bread-compact-ml307/compact_ml307_board.cc index 78cf063f7..e004b550d 100644 --- a/main/boards/bread-compact-ml307/compact_ml307_board.cc +++ b/main/boards/bread-compact-ml307/compact_ml307_board.cc @@ -18,9 +18,6 @@ #define TAG "CompactMl307Board" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - class CompactMl307Board : public DualNetworkBoard { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -92,8 +89,7 @@ class CompactMl307Board : public DualNetworkBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { @@ -171,11 +167,6 @@ class CompactMl307Board : public DualNetworkBoard { InitializeTools(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc b/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc index df4d272f0..5e0263e4a 100644 --- a/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc +++ b/main/boards/bread-compact-wifi-lcd/compact_wifi_board_lcd.cc @@ -1,195 +1,183 @@ -#include "wifi_board.h" -#include "codecs/no_audio_codec.h" -#include "display/lcd_display.h" -#include "system_reset.h" -#include "application.h" -#include "button.h" -#include "config.h" -#include "mcp_server.h" -#include "lamp_controller.h" -#include "led/single_led.h" - -#include -#include -#include -#include -#include -#include -#include - -#if defined(LCD_TYPE_ILI9341_SERIAL) -#include "esp_lcd_ili9341.h" -#endif - -#if defined(LCD_TYPE_GC9A01_SERIAL) -#include "esp_lcd_gc9a01.h" -static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { - // {cmd, { data }, data_size, delay_ms} - {0xfe, (uint8_t[]){0x00}, 0, 0}, - {0xef, (uint8_t[]){0x00}, 0, 0}, - {0xb0, (uint8_t[]){0xc0}, 1, 0}, - {0xb1, (uint8_t[]){0x80}, 1, 0}, - {0xb2, (uint8_t[]){0x27}, 1, 0}, - {0xb3, (uint8_t[]){0x13}, 1, 0}, - {0xb6, (uint8_t[]){0x19}, 1, 0}, - {0xb7, (uint8_t[]){0x05}, 1, 0}, - {0xac, (uint8_t[]){0xc8}, 1, 0}, - {0xab, (uint8_t[]){0x0f}, 1, 0}, - {0x3a, (uint8_t[]){0x05}, 1, 0}, - {0xb4, (uint8_t[]){0x04}, 1, 0}, - {0xa8, (uint8_t[]){0x08}, 1, 0}, - {0xb8, (uint8_t[]){0x08}, 1, 0}, - {0xea, (uint8_t[]){0x02}, 1, 0}, - {0xe8, (uint8_t[]){0x2A}, 1, 0}, - {0xe9, (uint8_t[]){0x47}, 1, 0}, - {0xe7, (uint8_t[]){0x5f}, 1, 0}, - {0xc6, (uint8_t[]){0x21}, 1, 0}, - {0xc7, (uint8_t[]){0x15}, 1, 0}, - {0xf0, - (uint8_t[]){0x1D, 0x38, 0x09, 0x4D, 0x92, 0x2F, 0x35, 0x52, 0x1E, 0x0C, - 0x04, 0x12, 0x14, 0x1f}, - 14, 0}, - {0xf1, - (uint8_t[]){0x16, 0x40, 0x1C, 0x54, 0xA9, 0x2D, 0x2E, 0x56, 0x10, 0x0D, - 0x0C, 0x1A, 0x14, 0x1E}, - 14, 0}, - {0xf4, (uint8_t[]){0x00, 0x00, 0xFF}, 3, 0}, - {0xba, (uint8_t[]){0xFF, 0xFF}, 2, 0}, -}; -#endif - -#define TAG "CompactWifiBoardLCD" - -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - -class CompactWifiBoardLCD : public WifiBoard { -private: - - Button boot_button_; - LcdDisplay* display_; - - void InitializeSpi() { - spi_bus_config_t buscfg = {}; - buscfg.mosi_io_num = DISPLAY_MOSI_PIN; - buscfg.miso_io_num = GPIO_NUM_NC; - buscfg.sclk_io_num = DISPLAY_CLK_PIN; - buscfg.quadwp_io_num = GPIO_NUM_NC; - buscfg.quadhd_io_num = GPIO_NUM_NC; - buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t); - ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); - } - - void InitializeLcdDisplay() { - esp_lcd_panel_io_handle_t panel_io = nullptr; - esp_lcd_panel_handle_t panel = nullptr; - // 液晶屏控制IO初始化 - ESP_LOGD(TAG, "Install panel IO"); - esp_lcd_panel_io_spi_config_t io_config = {}; - io_config.cs_gpio_num = DISPLAY_CS_PIN; - io_config.dc_gpio_num = DISPLAY_DC_PIN; - io_config.spi_mode = DISPLAY_SPI_MODE; - io_config.pclk_hz = 40 * 1000 * 1000; - io_config.trans_queue_depth = 10; - io_config.lcd_cmd_bits = 8; - io_config.lcd_param_bits = 8; - ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io)); - - // 初始化液晶屏驱动芯片 - ESP_LOGD(TAG, "Install LCD driver"); - esp_lcd_panel_dev_config_t panel_config = {}; - panel_config.reset_gpio_num = DISPLAY_RST_PIN; - panel_config.rgb_ele_order = DISPLAY_RGB_ORDER; - panel_config.bits_per_pixel = 16; -#if defined(LCD_TYPE_ILI9341_SERIAL) - ESP_ERROR_CHECK(esp_lcd_new_panel_ili9341(panel_io, &panel_config, &panel)); -#elif defined(LCD_TYPE_GC9A01_SERIAL) - ESP_ERROR_CHECK(esp_lcd_new_panel_gc9a01(panel_io, &panel_config, &panel)); - gc9a01_vendor_config_t gc9107_vendor_config = { - .init_cmds = gc9107_lcd_init_cmds, - .init_cmds_size = sizeof(gc9107_lcd_init_cmds) / sizeof(gc9a01_lcd_init_cmd_t), - }; -#else - ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel)); -#endif - - esp_lcd_panel_reset(panel); - - - esp_lcd_panel_init(panel); - esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); - esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); - esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); -#ifdef LCD_TYPE_GC9A01_SERIAL - panel_config.vendor_config = &gc9107_vendor_config; -#endif - display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); - } - - - - void InitializeButtons() { - boot_button_.OnClick([this]() { - auto& app = Application::GetInstance(); - if (app.GetDeviceState() == kDeviceStateStarting && !WifiStation::GetInstance().IsConnected()) { - ResetWifiConfiguration(); - } - app.ToggleChatState(); - }); - } - - // 物联网初始化,添加对 AI 可见设备 - void InitializeTools() { - static LampController lamp(LAMP_GPIO); - } - -public: - CompactWifiBoardLCD() : - boot_button_(BOOT_BUTTON_GPIO) { - InitializeSpi(); - InitializeLcdDisplay(); - InitializeButtons(); - InitializeTools(); - if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - GetBacklight()->RestoreBrightness(); - } - - } - - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - - virtual Led* GetLed() override { - static SingleLed led(BUILTIN_LED_GPIO); - return &led; - } - - virtual AudioCodec* GetAudioCodec() override { -#ifdef AUDIO_I2S_METHOD_SIMPLEX - static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, - AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); -#else - static NoAudioCodecDuplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, - AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN); -#endif - return &audio_codec; - } - - virtual Display* GetDisplay() override { - return display_; - } - - virtual Backlight* GetBacklight() override { - if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - static PwmBacklight backlight(DISPLAY_BACKLIGHT_PIN, DISPLAY_BACKLIGHT_OUTPUT_INVERT); - return &backlight; - } - return nullptr; - } -}; - -DECLARE_BOARD(CompactWifiBoardLCD); +#include "wifi_board.h" +#include "codecs/no_audio_codec.h" +#include "display/lcd_display.h" +#include "system_reset.h" +#include "application.h" +#include "button.h" +#include "config.h" +#include "mcp_server.h" +#include "lamp_controller.h" +#include "led/single_led.h" + +#include +#include +#include +#include +#include +#include +#include + +#if defined(LCD_TYPE_ILI9341_SERIAL) +#include "esp_lcd_ili9341.h" +#endif + +#if defined(LCD_TYPE_GC9A01_SERIAL) +#include "esp_lcd_gc9a01.h" +static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { + // {cmd, { data }, data_size, delay_ms} + {0xfe, (uint8_t[]){0x00}, 0, 0}, + {0xef, (uint8_t[]){0x00}, 0, 0}, + {0xb0, (uint8_t[]){0xc0}, 1, 0}, + {0xb1, (uint8_t[]){0x80}, 1, 0}, + {0xb2, (uint8_t[]){0x27}, 1, 0}, + {0xb3, (uint8_t[]){0x13}, 1, 0}, + {0xb6, (uint8_t[]){0x19}, 1, 0}, + {0xb7, (uint8_t[]){0x05}, 1, 0}, + {0xac, (uint8_t[]){0xc8}, 1, 0}, + {0xab, (uint8_t[]){0x0f}, 1, 0}, + {0x3a, (uint8_t[]){0x05}, 1, 0}, + {0xb4, (uint8_t[]){0x04}, 1, 0}, + {0xa8, (uint8_t[]){0x08}, 1, 0}, + {0xb8, (uint8_t[]){0x08}, 1, 0}, + {0xea, (uint8_t[]){0x02}, 1, 0}, + {0xe8, (uint8_t[]){0x2A}, 1, 0}, + {0xe9, (uint8_t[]){0x47}, 1, 0}, + {0xe7, (uint8_t[]){0x5f}, 1, 0}, + {0xc6, (uint8_t[]){0x21}, 1, 0}, + {0xc7, (uint8_t[]){0x15}, 1, 0}, + {0xf0, + (uint8_t[]){0x1D, 0x38, 0x09, 0x4D, 0x92, 0x2F, 0x35, 0x52, 0x1E, 0x0C, + 0x04, 0x12, 0x14, 0x1f}, + 14, 0}, + {0xf1, + (uint8_t[]){0x16, 0x40, 0x1C, 0x54, 0xA9, 0x2D, 0x2E, 0x56, 0x10, 0x0D, + 0x0C, 0x1A, 0x14, 0x1E}, + 14, 0}, + {0xf4, (uint8_t[]){0x00, 0x00, 0xFF}, 3, 0}, + {0xba, (uint8_t[]){0xFF, 0xFF}, 2, 0}, +}; +#endif + +#define TAG "CompactWifiBoardLCD" + +class CompactWifiBoardLCD : public WifiBoard { +private: + + Button boot_button_; + LcdDisplay* display_; + + void InitializeSpi() { + spi_bus_config_t buscfg = {}; + buscfg.mosi_io_num = DISPLAY_MOSI_PIN; + buscfg.miso_io_num = GPIO_NUM_NC; + buscfg.sclk_io_num = DISPLAY_CLK_PIN; + buscfg.quadwp_io_num = GPIO_NUM_NC; + buscfg.quadhd_io_num = GPIO_NUM_NC; + buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t); + ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); + } + + void InitializeLcdDisplay() { + esp_lcd_panel_io_handle_t panel_io = nullptr; + esp_lcd_panel_handle_t panel = nullptr; + // 液晶屏控制IO初始化 + ESP_LOGD(TAG, "Install panel IO"); + esp_lcd_panel_io_spi_config_t io_config = {}; + io_config.cs_gpio_num = DISPLAY_CS_PIN; + io_config.dc_gpio_num = DISPLAY_DC_PIN; + io_config.spi_mode = DISPLAY_SPI_MODE; + io_config.pclk_hz = 40 * 1000 * 1000; + io_config.trans_queue_depth = 10; + io_config.lcd_cmd_bits = 8; + io_config.lcd_param_bits = 8; + ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io)); + + // 初始化液晶屏驱动芯片 + ESP_LOGD(TAG, "Install LCD driver"); + esp_lcd_panel_dev_config_t panel_config = {}; + panel_config.reset_gpio_num = DISPLAY_RST_PIN; + panel_config.rgb_ele_order = DISPLAY_RGB_ORDER; + panel_config.bits_per_pixel = 16; +#if defined(LCD_TYPE_ILI9341_SERIAL) + ESP_ERROR_CHECK(esp_lcd_new_panel_ili9341(panel_io, &panel_config, &panel)); +#elif defined(LCD_TYPE_GC9A01_SERIAL) + ESP_ERROR_CHECK(esp_lcd_new_panel_gc9a01(panel_io, &panel_config, &panel)); + gc9a01_vendor_config_t gc9107_vendor_config = { + .init_cmds = gc9107_lcd_init_cmds, + .init_cmds_size = sizeof(gc9107_lcd_init_cmds) / sizeof(gc9a01_lcd_init_cmd_t), + }; +#else + ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel)); +#endif + + esp_lcd_panel_reset(panel); + + esp_lcd_panel_init(panel); + esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); + esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); + esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); +#ifdef LCD_TYPE_GC9A01_SERIAL + panel_config.vendor_config = &gc9107_vendor_config; +#endif + display_ = new SpiLcdDisplay(panel_io, panel, + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); + } + + void InitializeButtons() { + boot_button_.OnClick([this]() { + auto& app = Application::GetInstance(); + if (app.GetDeviceState() == kDeviceStateStarting && !WifiStation::GetInstance().IsConnected()) { + ResetWifiConfiguration(); + } + app.ToggleChatState(); + }); + } + + // 物联网初始化,添加对 AI 可见设备 + void InitializeTools() { + static LampController lamp(LAMP_GPIO); + } + +public: + CompactWifiBoardLCD() : + boot_button_(BOOT_BUTTON_GPIO) { + InitializeSpi(); + InitializeLcdDisplay(); + InitializeButtons(); + InitializeTools(); + if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { + GetBacklight()->RestoreBrightness(); + } + + } + + virtual Led* GetLed() override { + static SingleLed led(BUILTIN_LED_GPIO); + return &led; + } + + virtual AudioCodec* GetAudioCodec() override { +#ifdef AUDIO_I2S_METHOD_SIMPLEX + static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, + AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); +#else + static NoAudioCodecDuplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, + AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN); +#endif + return &audio_codec; + } + + virtual Display* GetDisplay() override { + return display_; + } + + virtual Backlight* GetBacklight() override { + if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { + static PwmBacklight backlight(DISPLAY_BACKLIGHT_PIN, DISPLAY_BACKLIGHT_OUTPUT_INVERT); + return &backlight; + } + return nullptr; + } +}; + +DECLARE_BOARD(CompactWifiBoardLCD); diff --git a/main/boards/bread-compact-wifi-s3cam/compact_wifi_board_s3cam.cc b/main/boards/bread-compact-wifi-s3cam/compact_wifi_board_s3cam.cc index e0be492ab..af4b6b93c 100644 --- a/main/boards/bread-compact-wifi-s3cam/compact_wifi_board_s3cam.cc +++ b/main/boards/bread-compact-wifi-s3cam/compact_wifi_board_s3cam.cc @@ -1,224 +1,214 @@ -#include "wifi_board.h" -#include "codecs/no_audio_codec.h" -#include "display/lcd_display.h" -#include "system_reset.h" -#include "application.h" -#include "button.h" -#include "config.h" -#include "mcp_server.h" -#include "lamp_controller.h" -#include "led/single_led.h" -#include "esp32_camera.h" - -#include -#include -#include -#include -#include -#include -#include - -#if defined(LCD_TYPE_ILI9341_SERIAL) -#include "esp_lcd_ili9341.h" -#endif - -#if defined(LCD_TYPE_GC9A01_SERIAL) -#include "esp_lcd_gc9a01.h" -static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { - // {cmd, { data }, data_size, delay_ms} - {0xfe, (uint8_t[]){0x00}, 0, 0}, - {0xef, (uint8_t[]){0x00}, 0, 0}, - {0xb0, (uint8_t[]){0xc0}, 1, 0}, - {0xb1, (uint8_t[]){0x80}, 1, 0}, - {0xb2, (uint8_t[]){0x27}, 1, 0}, - {0xb3, (uint8_t[]){0x13}, 1, 0}, - {0xb6, (uint8_t[]){0x19}, 1, 0}, - {0xb7, (uint8_t[]){0x05}, 1, 0}, - {0xac, (uint8_t[]){0xc8}, 1, 0}, - {0xab, (uint8_t[]){0x0f}, 1, 0}, - {0x3a, (uint8_t[]){0x05}, 1, 0}, - {0xb4, (uint8_t[]){0x04}, 1, 0}, - {0xa8, (uint8_t[]){0x08}, 1, 0}, - {0xb8, (uint8_t[]){0x08}, 1, 0}, - {0xea, (uint8_t[]){0x02}, 1, 0}, - {0xe8, (uint8_t[]){0x2A}, 1, 0}, - {0xe9, (uint8_t[]){0x47}, 1, 0}, - {0xe7, (uint8_t[]){0x5f}, 1, 0}, - {0xc6, (uint8_t[]){0x21}, 1, 0}, - {0xc7, (uint8_t[]){0x15}, 1, 0}, - {0xf0, - (uint8_t[]){0x1D, 0x38, 0x09, 0x4D, 0x92, 0x2F, 0x35, 0x52, 0x1E, 0x0C, - 0x04, 0x12, 0x14, 0x1f}, - 14, 0}, - {0xf1, - (uint8_t[]){0x16, 0x40, 0x1C, 0x54, 0xA9, 0x2D, 0x2E, 0x56, 0x10, 0x0D, - 0x0C, 0x1A, 0x14, 0x1E}, - 14, 0}, - {0xf4, (uint8_t[]){0x00, 0x00, 0xFF}, 3, 0}, - {0xba, (uint8_t[]){0xFF, 0xFF}, 2, 0}, -}; -#endif - -#define TAG "CompactWifiBoardS3Cam" - -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - -class CompactWifiBoardS3Cam : public WifiBoard { -private: - - Button boot_button_; - LcdDisplay* display_; - Esp32Camera* camera_; - - void InitializeSpi() { - spi_bus_config_t buscfg = {}; - buscfg.mosi_io_num = DISPLAY_MOSI_PIN; - buscfg.miso_io_num = GPIO_NUM_NC; - buscfg.sclk_io_num = DISPLAY_CLK_PIN; - buscfg.quadwp_io_num = GPIO_NUM_NC; - buscfg.quadhd_io_num = GPIO_NUM_NC; - buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t); - ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); - } - - void InitializeLcdDisplay() { - esp_lcd_panel_io_handle_t panel_io = nullptr; - esp_lcd_panel_handle_t panel = nullptr; - // 液晶屏控制IO初始化 - ESP_LOGD(TAG, "Install panel IO"); - esp_lcd_panel_io_spi_config_t io_config = {}; - io_config.cs_gpio_num = DISPLAY_CS_PIN; - io_config.dc_gpio_num = DISPLAY_DC_PIN; - io_config.spi_mode = DISPLAY_SPI_MODE; - io_config.pclk_hz = 40 * 1000 * 1000; - io_config.trans_queue_depth = 10; - io_config.lcd_cmd_bits = 8; - io_config.lcd_param_bits = 8; - ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io)); - - // 初始化液晶屏驱动芯片 - ESP_LOGD(TAG, "Install LCD driver"); - esp_lcd_panel_dev_config_t panel_config = {}; - panel_config.reset_gpio_num = DISPLAY_RST_PIN; - panel_config.rgb_ele_order = DISPLAY_RGB_ORDER; - panel_config.bits_per_pixel = 16; -#if defined(LCD_TYPE_ILI9341_SERIAL) - ESP_ERROR_CHECK(esp_lcd_new_panel_ili9341(panel_io, &panel_config, &panel)); -#elif defined(LCD_TYPE_GC9A01_SERIAL) - ESP_ERROR_CHECK(esp_lcd_new_panel_gc9a01(panel_io, &panel_config, &panel)); - gc9a01_vendor_config_t gc9107_vendor_config = { - .init_cmds = gc9107_lcd_init_cmds, - .init_cmds_size = sizeof(gc9107_lcd_init_cmds) / sizeof(gc9a01_lcd_init_cmd_t), - }; -#else - ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel)); -#endif - - esp_lcd_panel_reset(panel); - - - esp_lcd_panel_init(panel); - esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); - esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); - esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); -#ifdef LCD_TYPE_GC9A01_SERIAL - panel_config.vendor_config = &gc9107_vendor_config; -#endif - display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); - } - - void InitializeCamera() { - camera_config_t config = {}; - config.pin_d0 = CAMERA_PIN_D0; - config.pin_d1 = CAMERA_PIN_D1; - config.pin_d2 = CAMERA_PIN_D2; - config.pin_d3 = CAMERA_PIN_D3; - config.pin_d4 = CAMERA_PIN_D4; - config.pin_d5 = CAMERA_PIN_D5; - config.pin_d6 = CAMERA_PIN_D6; - config.pin_d7 = CAMERA_PIN_D7; - config.pin_xclk = CAMERA_PIN_XCLK; - config.pin_pclk = CAMERA_PIN_PCLK; - config.pin_vsync = CAMERA_PIN_VSYNC; - config.pin_href = CAMERA_PIN_HREF; - config.pin_sccb_sda = CAMERA_PIN_SIOD; - config.pin_sccb_scl = CAMERA_PIN_SIOC; - config.sccb_i2c_port = 0; - config.pin_pwdn = CAMERA_PIN_PWDN; - config.pin_reset = CAMERA_PIN_RESET; - config.xclk_freq_hz = XCLK_FREQ_HZ; - config.pixel_format = PIXFORMAT_RGB565; - config.frame_size = FRAMESIZE_QVGA; - config.jpeg_quality = 12; - config.fb_count = 1; - config.fb_location = CAMERA_FB_IN_PSRAM; - config.grab_mode = CAMERA_GRAB_WHEN_EMPTY; - camera_ = new Esp32Camera(config); - camera_->SetHMirror(false); - } - - void InitializeButtons() { - boot_button_.OnClick([this]() { - auto& app = Application::GetInstance(); - if (app.GetDeviceState() == kDeviceStateStarting && !WifiStation::GetInstance().IsConnected()) { - ResetWifiConfiguration(); - } - app.ToggleChatState(); - }); - } - -public: - CompactWifiBoardS3Cam() : - boot_button_(BOOT_BUTTON_GPIO) { - InitializeSpi(); - InitializeLcdDisplay(); - InitializeButtons(); - InitializeCamera(); - if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - GetBacklight()->RestoreBrightness(); - } - - } - - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64); - return &assets; - } - - virtual Led* GetLed() override { - static SingleLed led(BUILTIN_LED_GPIO); - return &led; - } - - virtual AudioCodec* GetAudioCodec() override { -#ifdef AUDIO_I2S_METHOD_SIMPLEX - static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, - AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); -#else - static NoAudioCodecDuplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, - AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN); -#endif - return &audio_codec; - } - - virtual Display* GetDisplay() override { - return display_; - } - - virtual Backlight* GetBacklight() override { - if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - static PwmBacklight backlight(DISPLAY_BACKLIGHT_PIN, DISPLAY_BACKLIGHT_OUTPUT_INVERT); - return &backlight; - } - return nullptr; - } - - virtual Camera* GetCamera() override { - return camera_; - } -}; - -DECLARE_BOARD(CompactWifiBoardS3Cam); +#include "wifi_board.h" +#include "codecs/no_audio_codec.h" +#include "display/lcd_display.h" +#include "system_reset.h" +#include "application.h" +#include "button.h" +#include "config.h" +#include "mcp_server.h" +#include "lamp_controller.h" +#include "led/single_led.h" +#include "esp32_camera.h" + +#include +#include +#include +#include +#include +#include +#include + +#if defined(LCD_TYPE_ILI9341_SERIAL) +#include "esp_lcd_ili9341.h" +#endif + +#if defined(LCD_TYPE_GC9A01_SERIAL) +#include "esp_lcd_gc9a01.h" +static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { + // {cmd, { data }, data_size, delay_ms} + {0xfe, (uint8_t[]){0x00}, 0, 0}, + {0xef, (uint8_t[]){0x00}, 0, 0}, + {0xb0, (uint8_t[]){0xc0}, 1, 0}, + {0xb1, (uint8_t[]){0x80}, 1, 0}, + {0xb2, (uint8_t[]){0x27}, 1, 0}, + {0xb3, (uint8_t[]){0x13}, 1, 0}, + {0xb6, (uint8_t[]){0x19}, 1, 0}, + {0xb7, (uint8_t[]){0x05}, 1, 0}, + {0xac, (uint8_t[]){0xc8}, 1, 0}, + {0xab, (uint8_t[]){0x0f}, 1, 0}, + {0x3a, (uint8_t[]){0x05}, 1, 0}, + {0xb4, (uint8_t[]){0x04}, 1, 0}, + {0xa8, (uint8_t[]){0x08}, 1, 0}, + {0xb8, (uint8_t[]){0x08}, 1, 0}, + {0xea, (uint8_t[]){0x02}, 1, 0}, + {0xe8, (uint8_t[]){0x2A}, 1, 0}, + {0xe9, (uint8_t[]){0x47}, 1, 0}, + {0xe7, (uint8_t[]){0x5f}, 1, 0}, + {0xc6, (uint8_t[]){0x21}, 1, 0}, + {0xc7, (uint8_t[]){0x15}, 1, 0}, + {0xf0, + (uint8_t[]){0x1D, 0x38, 0x09, 0x4D, 0x92, 0x2F, 0x35, 0x52, 0x1E, 0x0C, + 0x04, 0x12, 0x14, 0x1f}, + 14, 0}, + {0xf1, + (uint8_t[]){0x16, 0x40, 0x1C, 0x54, 0xA9, 0x2D, 0x2E, 0x56, 0x10, 0x0D, + 0x0C, 0x1A, 0x14, 0x1E}, + 14, 0}, + {0xf4, (uint8_t[]){0x00, 0x00, 0xFF}, 3, 0}, + {0xba, (uint8_t[]){0xFF, 0xFF}, 2, 0}, +}; +#endif + +#define TAG "CompactWifiBoardS3Cam" + +class CompactWifiBoardS3Cam : public WifiBoard { +private: + + Button boot_button_; + LcdDisplay* display_; + Esp32Camera* camera_; + + void InitializeSpi() { + spi_bus_config_t buscfg = {}; + buscfg.mosi_io_num = DISPLAY_MOSI_PIN; + buscfg.miso_io_num = GPIO_NUM_NC; + buscfg.sclk_io_num = DISPLAY_CLK_PIN; + buscfg.quadwp_io_num = GPIO_NUM_NC; + buscfg.quadhd_io_num = GPIO_NUM_NC; + buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t); + ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); + } + + void InitializeLcdDisplay() { + esp_lcd_panel_io_handle_t panel_io = nullptr; + esp_lcd_panel_handle_t panel = nullptr; + // 液晶屏控制IO初始化 + ESP_LOGD(TAG, "Install panel IO"); + esp_lcd_panel_io_spi_config_t io_config = {}; + io_config.cs_gpio_num = DISPLAY_CS_PIN; + io_config.dc_gpio_num = DISPLAY_DC_PIN; + io_config.spi_mode = DISPLAY_SPI_MODE; + io_config.pclk_hz = 40 * 1000 * 1000; + io_config.trans_queue_depth = 10; + io_config.lcd_cmd_bits = 8; + io_config.lcd_param_bits = 8; + ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io)); + + // 初始化液晶屏驱动芯片 + ESP_LOGD(TAG, "Install LCD driver"); + esp_lcd_panel_dev_config_t panel_config = {}; + panel_config.reset_gpio_num = DISPLAY_RST_PIN; + panel_config.rgb_ele_order = DISPLAY_RGB_ORDER; + panel_config.bits_per_pixel = 16; +#if defined(LCD_TYPE_ILI9341_SERIAL) + ESP_ERROR_CHECK(esp_lcd_new_panel_ili9341(panel_io, &panel_config, &panel)); +#elif defined(LCD_TYPE_GC9A01_SERIAL) + ESP_ERROR_CHECK(esp_lcd_new_panel_gc9a01(panel_io, &panel_config, &panel)); + gc9a01_vendor_config_t gc9107_vendor_config = { + .init_cmds = gc9107_lcd_init_cmds, + .init_cmds_size = sizeof(gc9107_lcd_init_cmds) / sizeof(gc9a01_lcd_init_cmd_t), + }; +#else + ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel)); +#endif + + esp_lcd_panel_reset(panel); + + esp_lcd_panel_init(panel); + esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); + esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); + esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); +#ifdef LCD_TYPE_GC9A01_SERIAL + panel_config.vendor_config = &gc9107_vendor_config; +#endif + display_ = new SpiLcdDisplay(panel_io, panel, + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); + } + + void InitializeCamera() { + camera_config_t config = {}; + config.pin_d0 = CAMERA_PIN_D0; + config.pin_d1 = CAMERA_PIN_D1; + config.pin_d2 = CAMERA_PIN_D2; + config.pin_d3 = CAMERA_PIN_D3; + config.pin_d4 = CAMERA_PIN_D4; + config.pin_d5 = CAMERA_PIN_D5; + config.pin_d6 = CAMERA_PIN_D6; + config.pin_d7 = CAMERA_PIN_D7; + config.pin_xclk = CAMERA_PIN_XCLK; + config.pin_pclk = CAMERA_PIN_PCLK; + config.pin_vsync = CAMERA_PIN_VSYNC; + config.pin_href = CAMERA_PIN_HREF; + config.pin_sccb_sda = CAMERA_PIN_SIOD; + config.pin_sccb_scl = CAMERA_PIN_SIOC; + config.sccb_i2c_port = 0; + config.pin_pwdn = CAMERA_PIN_PWDN; + config.pin_reset = CAMERA_PIN_RESET; + config.xclk_freq_hz = XCLK_FREQ_HZ; + config.pixel_format = PIXFORMAT_RGB565; + config.frame_size = FRAMESIZE_QVGA; + config.jpeg_quality = 12; + config.fb_count = 1; + config.fb_location = CAMERA_FB_IN_PSRAM; + config.grab_mode = CAMERA_GRAB_WHEN_EMPTY; + camera_ = new Esp32Camera(config); + camera_->SetHMirror(false); + } + + void InitializeButtons() { + boot_button_.OnClick([this]() { + auto& app = Application::GetInstance(); + if (app.GetDeviceState() == kDeviceStateStarting && !WifiStation::GetInstance().IsConnected()) { + ResetWifiConfiguration(); + } + app.ToggleChatState(); + }); + } + +public: + CompactWifiBoardS3Cam() : + boot_button_(BOOT_BUTTON_GPIO) { + InitializeSpi(); + InitializeLcdDisplay(); + InitializeButtons(); + InitializeCamera(); + if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { + GetBacklight()->RestoreBrightness(); + } + + } + + virtual Led* GetLed() override { + static SingleLed led(BUILTIN_LED_GPIO); + return &led; + } + + virtual AudioCodec* GetAudioCodec() override { +#ifdef AUDIO_I2S_METHOD_SIMPLEX + static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, + AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); +#else + static NoAudioCodecDuplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, + AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN); +#endif + return &audio_codec; + } + + virtual Display* GetDisplay() override { + return display_; + } + + virtual Backlight* GetBacklight() override { + if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { + static PwmBacklight backlight(DISPLAY_BACKLIGHT_PIN, DISPLAY_BACKLIGHT_OUTPUT_INVERT); + return &backlight; + } + return nullptr; + } + + virtual Camera* GetCamera() override { + return camera_; + } +}; + +DECLARE_BOARD(CompactWifiBoardS3Cam); diff --git a/main/boards/bread-compact-wifi/compact_wifi_board.cc b/main/boards/bread-compact-wifi/compact_wifi_board.cc index 018784030..fca4d1ca3 100644 --- a/main/boards/bread-compact-wifi/compact_wifi_board.cc +++ b/main/boards/bread-compact-wifi/compact_wifi_board.cc @@ -22,9 +22,6 @@ #define TAG "CompactWifiBoard" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - class CompactWifiBoard : public WifiBoard { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -101,8 +98,7 @@ class CompactWifiBoard : public WifiBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { @@ -168,11 +164,6 @@ class CompactWifiBoard : public WifiBoard { InitializeTools(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/common/board.cc b/main/boards/common/board.cc index 2443bf2e3..e027a238d 100644 --- a/main/boards/common/board.cc +++ b/main/boards/common/board.cc @@ -162,5 +162,10 @@ std::string Board::GetSystemInfoJson() { } Assets* Board::GetAssets() { +#ifdef DEFAULT_ASSETS + static Assets assets(DEFAULT_ASSETS); + return &assets; +#else return nullptr; +#endif } \ No newline at end of file diff --git a/main/boards/df-k10/df_k10_board.cc b/main/boards/df-k10/df_k10_board.cc index ca17c66e6..614be1118 100644 --- a/main/boards/df-k10/df_k10_board.cc +++ b/main/boards/df-k10/df_k10_board.cc @@ -21,9 +21,6 @@ #define TAG "DF-K10" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class Df_K10Board : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -234,8 +231,7 @@ class Df_K10Board : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } // 物联网初始化,添加对 AI 可见设备 @@ -255,11 +251,6 @@ class Df_K10Board : public WifiBoard { InitializeCamera(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { return led_strip_; } diff --git a/main/boards/df-k10/k10_audio_codec.cc b/main/boards/df-k10/k10_audio_codec.cc index fce2b7fb4..5a3094816 100644 --- a/main/boards/df-k10/k10_audio_codec.cc +++ b/main/boards/df-k10/k10_audio_codec.cc @@ -41,7 +41,6 @@ K10AudioCodec::K10AudioCodec(void* i2c_master_handle, int input_sample_rate, int const audio_codec_if_t *in_codec_if_ = es7243e_codec_new(&es7243e_cfg); assert(in_codec_if_ != NULL); - esp_codec_dev_cfg_t codec_es7243e_dev_cfg = { .dev_type = ESP_CODEC_DEV_TYPE_IN, .codec_if = in_codec_if_, diff --git a/main/boards/df-s3-ai-cam/df_s3_ai_cam.cc b/main/boards/df-s3-ai-cam/df_s3_ai_cam.cc index 7b6942c28..d85dc53dd 100644 --- a/main/boards/df-s3-ai-cam/df_s3_ai_cam.cc +++ b/main/boards/df-s3-ai-cam/df_s3_ai_cam.cc @@ -70,10 +70,6 @@ class DfrobotEsp32S3AiCam : public WifiBoard { } // Wakenet model only - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_WAKENET); - return &assets; - } virtual Led* GetLed() override { static GpioLed led(BUILTIN_LED_GPIO, 0); diff --git a/main/boards/doit-s3-aibox/doit_s3_aibox.cc b/main/boards/doit-s3-aibox/doit_s3_aibox.cc index 81efaf7e4..54fd9dfe9 100644 --- a/main/boards/doit-s3-aibox/doit_s3_aibox.cc +++ b/main/boards/doit-s3-aibox/doit_s3_aibox.cc @@ -99,7 +99,6 @@ class DoitS3AiBox : public WifiBoard { }); } - void InitializeGpio(gpio_num_t gpio_num_) { gpio_config_t config = { .pin_bit_mask = (1ULL << gpio_num_), @@ -123,11 +122,6 @@ class DoitS3AiBox : public WifiBoard { InitializeButtons(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_WAKENET); - return &assets; - } - virtual Led* GetLed() override { static GpioLed led(BUILTIN_LED_GPIO, 1); return &led; diff --git a/main/boards/du-chatx/du-chatx-wifi.cc b/main/boards/du-chatx/du-chatx-wifi.cc index 40e269517..d9eea6702 100644 --- a/main/boards/du-chatx/du-chatx-wifi.cc +++ b/main/boards/du-chatx/du-chatx-wifi.cc @@ -19,9 +19,6 @@ #define TAG "DuChatX" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class DuChatX : public WifiBoard { private: Button boot_button_; @@ -101,8 +98,7 @@ class DuChatX : public WifiBoard { esp_lcd_panel_invert_color(panel_, DISPLAY_INVERT_COLOR); esp_lcd_panel_swap_xy(panel_, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel_, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); - display_ = new SpiLcdDisplay(panel_io, panel_,DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y,DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + display_ = new SpiLcdDisplay(panel_io, panel_,DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y,DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -126,11 +122,6 @@ class DuChatX : public WifiBoard { InitializePowerManager(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led *GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/echoear/EchoEar.cc b/main/boards/echoear/EchoEar.cc index 5e13627eb..fdc588bdb 100644 --- a/main/boards/echoear/EchoEar.cc +++ b/main/boards/echoear/EchoEar.cc @@ -28,8 +28,6 @@ #define USE_LVGL_DEFAULT 0 -LV_FONT_DECLARE(font_puhui_20_4); -LV_FONT_DECLARE(font_awesome_20_4); temperature_sensor_handle_t temp_sensor = NULL; static const st77916_lcd_init_cmd_t vendor_specific_init_yysj[] = { {0xF0, (uint8_t []){0x28}, 1, 0}, @@ -562,8 +560,7 @@ class EspS3Cat : public WifiBoard { #if USE_LVGL_DEFAULT display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_20_4, &font_awesome_20_4, new Twemoji64()}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); #else display_ = new anim::EmoteDisplay(panel, panel_io); #endif diff --git a/main/boards/electron-bot/electron_bot.cc b/main/boards/electron-bot/electron_bot.cc index 81ff7b270..8b733fc11 100644 --- a/main/boards/electron-bot/electron_bot.cc +++ b/main/boards/electron-bot/electron_bot.cc @@ -24,9 +24,6 @@ // 控制器初始化函数声明 void InitializeElectronBotController(); -LV_FONT_DECLARE(font_puhui_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class ElectronBot : public WifiBoard { private: Display* display_; @@ -73,8 +70,7 @@ class ElectronBot : public WifiBoard { display_ = new ElectronEmojiDisplay(io_handle, panel_handle, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, - DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_20_4, &font_awesome_20_4, new Twemoji64()}); + DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { diff --git a/main/boards/electron-bot/electron_emoji_display.cc b/main/boards/electron-bot/electron_emoji_display.cc index 7a8d438d7..7e9f2fa76 100644 --- a/main/boards/electron-bot/electron_emoji_display.cc +++ b/main/boards/electron-bot/electron_emoji_display.cc @@ -7,7 +7,6 @@ #include #include - #define TAG "ElectronEmojiDisplay" // 表情映射表 - 将多种表情映射到现有6个GIF @@ -51,9 +50,8 @@ const ElectronEmojiDisplay::EmotionMap ElectronEmojiDisplay::emotion_maps_[] = { ElectronEmojiDisplay::ElectronEmojiDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, - bool swap_xy, DisplayStyle style) - : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - style), + bool swap_xy) + : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy), emotion_gif_(nullptr) { SetupGifContainer(); } diff --git a/main/boards/electron-bot/electron_emoji_display.h b/main/boards/electron-bot/electron_emoji_display.h index 0e2932146..cdbb75881 100644 --- a/main/boards/electron-bot/electron_emoji_display.h +++ b/main/boards/electron-bot/electron_emoji_display.h @@ -23,7 +23,7 @@ class ElectronEmojiDisplay : public SpiLcdDisplay { */ ElectronEmojiDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, - bool mirror_y, bool swap_xy, DisplayStyle style); + bool mirror_y, bool swap_xy); virtual ~ElectronEmojiDisplay() = default; diff --git a/main/boards/esp-box-3/esp_box3_board.cc b/main/boards/esp-box-3/esp_box3_board.cc index 18f35a730..47f964f23 100644 --- a/main/boards/esp-box-3/esp_box3_board.cc +++ b/main/boards/esp-box-3/esp_box3_board.cc @@ -14,9 +14,6 @@ #define TAG "EspBox3Board" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - // Init ili9341 by custom cmd static const ili9341_lcd_init_cmd_t vendor_specific_init[] = { {0xC8, (uint8_t []){0xFF, 0x93, 0x42}, 3, 0}, @@ -129,8 +126,7 @@ class EspBox3Board : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); esp_lcd_panel_disp_on_off(panel, true); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -142,11 +138,6 @@ class EspBox3Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/esp-box-lite/esp_box_lite_board.cc b/main/boards/esp-box-lite/esp_box_lite_board.cc index 1cebe86d4..ca7dd6a99 100644 --- a/main/boards/esp-box-lite/esp_box_lite_board.cc +++ b/main/boards/esp-box-lite/esp_box_lite_board.cc @@ -16,9 +16,6 @@ #define TAG "EspBoxBoardLite" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - /* ADC Buttons */ typedef enum { BSP_ADC_BUTTON_PREV, @@ -191,8 +188,7 @@ class EspBoxBoardLite : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); esp_lcd_panel_disp_on_off(panel, true); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -213,11 +209,6 @@ class EspBoxBoardLite : public WifiBoard { } } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodecLite audio_codec( i2c_bus_, diff --git a/main/boards/esp-box/esp_box_board.cc b/main/boards/esp-box/esp_box_board.cc index 34d29e915..4dcbca8e1 100644 --- a/main/boards/esp-box/esp_box_board.cc +++ b/main/boards/esp-box/esp_box_board.cc @@ -14,9 +14,6 @@ #define TAG "EspBoxBoard" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - // Init ili9341 by custom cmd static const ili9341_lcd_init_cmd_t vendor_specific_init[] = { {0xC8, (uint8_t []){0xFF, 0x93, 0x42}, 3, 0}, @@ -129,8 +126,7 @@ class EspBox3Board : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); esp_lcd_panel_disp_on_off(panel, true); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -142,11 +138,6 @@ class EspBox3Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/esp-s3-lcd-ev-board-2/esp-s3-lcd-ev-board-2.cc b/main/boards/esp-s3-lcd-ev-board-2/esp-s3-lcd-ev-board-2.cc index 4f436856a..8dc658508 100644 --- a/main/boards/esp-s3-lcd-ev-board-2/esp-s3-lcd-ev-board-2.cc +++ b/main/boards/esp-s3-lcd-ev-board-2/esp-s3-lcd-ev-board-2.cc @@ -22,9 +22,6 @@ #define TAG "ESP_S3_LCD_EV_Board_2" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class ESP_S3_LCD_EV_Board_2 : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -63,7 +60,6 @@ class ESP_S3_LCD_EV_Board_2 : public WifiBoard { int espok = esp_lcd_new_panel_io_3wire_spi(&io_config, &panel_io); ESP_LOGI(TAG, "Install 3-wire SPI panel IO:%d",espok); - ESP_LOGI(TAG, "Install RGB LCD panel driver"); esp_lcd_panel_handle_t panel_handle = NULL; esp_lcd_rgb_panel_config_t rgb_config = { @@ -126,8 +122,7 @@ class ESP_S3_LCD_EV_Board_2 : public WifiBoard { display_ = new RgbLcdDisplay(panel_io, panel_handle, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, - DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_30_4, &font_awesome_30_4}); + DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCodecI2c() { @@ -208,11 +203,6 @@ class ESP_S3_LCD_EV_Board_2 : public WifiBoard { InitializeTouch(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( i2c_bus_, @@ -240,7 +230,6 @@ class ESP_S3_LCD_EV_Board_2 : public WifiBoard { return &led; } - }; DECLARE_BOARD(ESP_S3_LCD_EV_Board_2); diff --git a/main/boards/esp-s3-lcd-ev-board/esp-s3-lcd-ev-board.cc b/main/boards/esp-s3-lcd-ev-board/esp-s3-lcd-ev-board.cc index dc5adb4ba..990a3e3be 100644 --- a/main/boards/esp-s3-lcd-ev-board/esp-s3-lcd-ev-board.cc +++ b/main/boards/esp-s3-lcd-ev-board/esp-s3-lcd-ev-board.cc @@ -20,9 +20,6 @@ #define TAG "ESP_S3_LCD_EV_Board" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class ESP_S3_LCD_EV_Board : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -62,7 +59,6 @@ class ESP_S3_LCD_EV_Board : public WifiBoard { int espok = esp_lcd_new_panel_io_3wire_spi(&io_config, &panel_io); ESP_LOGI(TAG, "Install 3-wire SPI panel IO:%d",espok); - ESP_LOGI(TAG, "Install RGB LCD panel driver"); esp_lcd_panel_handle_t panel_handle = NULL; esp_lcd_rgb_panel_config_t rgb_config = { @@ -126,8 +122,7 @@ class ESP_S3_LCD_EV_Board : public WifiBoard { display_ = new RgbLcdDisplay(panel_io, panel_handle, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, - DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_30_4, &font_awesome_30_4}); + DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCodecI2c() { @@ -177,11 +172,6 @@ class ESP_S3_LCD_EV_Board : public WifiBoard { InitializeRGB_GC9503V_Display(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( codec_i2c_bus_, @@ -209,7 +199,6 @@ class ESP_S3_LCD_EV_Board : public WifiBoard { return &led; } - }; DECLARE_BOARD(ESP_S3_LCD_EV_Board); diff --git a/main/boards/esp-sparkbot/esp_sparkbot_board.cc b/main/boards/esp-sparkbot/esp_sparkbot_board.cc index cee974cfa..2c76036a1 100644 --- a/main/boards/esp-sparkbot/esp_sparkbot_board.cc +++ b/main/boards/esp-sparkbot/esp_sparkbot_board.cc @@ -19,9 +19,6 @@ #define TAG "esp_sparkbot" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class SparkBotEs8311AudioCodec : public Es8311AudioCodec { private: @@ -120,8 +117,7 @@ class EspSparkBot : public WifiBoard { esp_lcd_panel_invert_color(panel, true); esp_lcd_panel_disp_on_off(panel, true); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCamera() { @@ -275,11 +271,6 @@ class EspSparkBot : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static SparkBotEs8311AudioCodec audio_codec(i2c_bus_, I2C_NUM_0, AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_GPIO_MCLK, AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN, diff --git a/main/boards/esp-spot-s3/esp_spot_s3_board.cc b/main/boards/esp-spot-s3/esp_spot_s3_board.cc index 178227a0c..0ff61397b 100644 --- a/main/boards/esp-spot-s3/esp_spot_s3_board.cc +++ b/main/boards/esp-spot-s3/esp_spot_s3_board.cc @@ -195,11 +195,6 @@ class EspSpotS3Bot : public WifiBoard { InitializeButtons(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_WAKENET); - return &assets; - } - virtual Led* GetLed() override { static CircularStrip led(LED_PIN, 1); return &led; diff --git a/main/boards/esp32-cgc-144/esp32_cgc_144_board.cc b/main/boards/esp32-cgc-144/esp32_cgc_144_board.cc index 5f59f3258..25963c0a3 100644 --- a/main/boards/esp32-cgc-144/esp32_cgc_144_board.cc +++ b/main/boards/esp32-cgc-144/esp32_cgc_144_board.cc @@ -26,12 +26,8 @@ #include "power_manager.h" #endif - #define TAG "ESP32_CGC_144" -LV_FONT_DECLARE(font_puhui_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - class ESP32_CGC_144 : public WifiBoard { private: Button boot_button_; @@ -80,7 +76,6 @@ void InitializePowerManager() { power_save_timer_->SetEnabled(true); } - void InitializeSpi() { spi_bus_config_t buscfg = {}; buscfg.mosi_io_num = DISPLAY_MOSI_PIN; @@ -122,8 +117,7 @@ void InitializePowerManager() { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_14_1, &font_awesome_14_1, new Twemoji32()}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { diff --git a/main/boards/esp32-cgc/esp32_cgc_board.cc b/main/boards/esp32-cgc/esp32_cgc_board.cc index 77360d523..6b82b0132 100644 --- a/main/boards/esp32-cgc/esp32_cgc_board.cc +++ b/main/boards/esp32-cgc/esp32_cgc_board.cc @@ -60,9 +60,6 @@ static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = { #define TAG "ESP32_CGC" -LV_FONT_DECLARE(font_puhui_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - class ESP32_CGC : public WifiBoard { private: Button boot_button_; @@ -114,7 +111,6 @@ class ESP32_CGC : public WifiBoard { #endif esp_lcd_panel_reset(panel); - esp_lcd_panel_init(panel); esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); @@ -124,12 +120,9 @@ class ESP32_CGC : public WifiBoard { panel_config.vendor_config = &gc9107_vendor_config; #endif display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_14_1, &font_awesome_14_1, new Twemoji32()}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } - - void InitializeButtons() { boot_button_.OnClick([this]() { diff --git a/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc b/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc index ed943cade..111f61fd4 100644 --- a/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc +++ b/main/boards/esp32-s3-touch-amoled-1.8/esp32-s3-touch-amoled-1.8.cc @@ -26,9 +26,6 @@ #define TAG "WaveshareEsp32s3TouchAMOLED1inch8" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class Pmic : public Axp2101 { public: Pmic(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : Axp2101(i2c_bus, addr) { @@ -86,8 +83,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_y, bool swap_xy) : SpiLcdDisplay(io_handle, panel_handle, - width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_30_4, &font_awesome_30_4}) { + width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); lv_obj_set_style_pad_left(status_bar_, LV_HOR_RES * 0.1, 0); lv_obj_set_style_pad_right(status_bar_, LV_HOR_RES * 0.1, 0); @@ -300,11 +296,6 @@ class WaveshareEsp32s3TouchAMOLED1inch8 : public WifiBoard { InitializeTools(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec(codec_i2c_bus_, I2C_NUM_0, AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_GPIO_MCLK, AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN, diff --git a/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc b/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc index bc6b2bb18..90843e620 100644 --- a/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc +++ b/main/boards/esp32-s3-touch-lcd-1.46/esp32-s3-touch-lcd-1.46.cc @@ -21,10 +21,6 @@ #define TAG "waveshare_lcd_1_46" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - - // 在waveshare_lcd_1_46类之前添加新的显示类 class CustomLcdDisplay : public SpiLcdDisplay { public: @@ -47,8 +43,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_y, bool swap_xy) : SpiLcdDisplay(io_handle, panel_handle, - width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_16_4, &font_awesome_16_4}) { + width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); lv_display_add_event_cb(display_, rounder_event_cb, LV_EVENT_INVALIDATE_AREA, NULL); } @@ -64,7 +59,6 @@ class CustomBoard : public WifiBoard { button_driver_t* pwr_btn_driver_ = nullptr; static CustomBoard* instance_; - void InitializeI2c() { // Initialize I2C peripheral i2c_master_bus_config_t i2c_bus_cfg = { @@ -221,11 +215,6 @@ class CustomBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, I2S_STD_SLOT_LEFT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN, I2S_STD_SLOT_RIGHT); // I2S_STD_SLOT_LEFT / I2S_STD_SLOT_RIGHT / I2S_STD_SLOT_BOTH diff --git a/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc b/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc index 4fa9c8278..ecdc7a3fb 100644 --- a/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc +++ b/main/boards/esp32-s3-touch-lcd-1.85/esp32-s3-touch-lcd-1.85.cc @@ -23,9 +23,6 @@ #define LCD_OPCODE_READ_CMD (0x0BULL) #define LCD_OPCODE_WRITE_COLOR (0x32ULL) -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - static const st77916_lcd_init_cmd_t vendor_specific_init_new[] = { {0xF0, (uint8_t []){0x28}, 1, 0}, {0xF2, (uint8_t []){0x28}, 1, 0}, @@ -223,7 +220,6 @@ class CustomBoard : public WifiBoard { button_driver_t* pwr_btn_driver_ = nullptr; static CustomBoard* instance_; - void InitializeI2c() { // Initialize I2C peripheral i2c_master_bus_config_t i2c_bus_cfg = { @@ -358,8 +354,7 @@ class CustomBoard : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtonsCustom() { @@ -430,11 +425,6 @@ class CustomBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, I2S_STD_SLOT_BOTH, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN, I2S_STD_SLOT_RIGHT); // I2S_STD_SLOT_LEFT / I2S_STD_SLOT_RIGHT / I2S_STD_SLOT_BOTH diff --git a/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc b/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc index 405ca4d7a..cf5c17272 100644 --- a/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc +++ b/main/boards/esp32-s3-touch-lcd-1.85c/esp32-s3-touch-lcd-1.85c.cc @@ -23,9 +23,6 @@ #define LCD_OPCODE_READ_CMD (0x0BULL) #define LCD_OPCODE_WRITE_COLOR (0x32ULL) -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - static const st77916_lcd_init_cmd_t vendor_specific_init_new[] = { {0xF0, (uint8_t []){0x28}, 1, 0}, {0xF2, (uint8_t []){0x28}, 1, 0}, @@ -355,8 +352,7 @@ class CustomBoard : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -380,11 +376,6 @@ class CustomBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, I2S_STD_SLOT_LEFT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN, I2S_STD_SLOT_RIGHT); // I2S_STD_SLOT_LEFT / I2S_STD_SLOT_RIGHT / I2S_STD_SLOT_BOTH diff --git a/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc b/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc index 13a223759..c898e467e 100644 --- a/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc +++ b/main/boards/esp32-s3-touch-lcd-3.5/esp32-s3-touch-lcd-3.5.cc @@ -29,11 +29,6 @@ #define TAG "waveshare_lcd_3_5" - -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class Pmic : public Axp2101 { public: Pmic(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : Axp2101(i2c_bus, addr) { @@ -66,7 +61,6 @@ class Pmic : public Axp2101 { } }; - typedef struct { int cmd; /*RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec(i2c_bus_, I2C_NUM_0, AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_GPIO_MCLK, AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN, diff --git a/main/boards/esp32s3-korvo2-v3/esp32s3_korvo2_v3_board.cc b/main/boards/esp32s3-korvo2-v3/esp32s3_korvo2_v3_board.cc index 739488f64..b24dbb34f 100644 --- a/main/boards/esp32s3-korvo2-v3/esp32s3_korvo2_v3_board.cc +++ b/main/boards/esp32s3-korvo2-v3/esp32s3_korvo2_v3_board.cc @@ -17,9 +17,6 @@ #define TAG "esp32s3_korvo2_v3" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - // Init ili9341 by custom cmd static const ili9341_lcd_init_cmd_t vendor_specific_init[] = { {0xC8, (uint8_t []){0xFF, 0x93, 0x42}, 3, 0}, @@ -41,7 +38,6 @@ static const ili9341_lcd_init_cmd_t vendor_specific_init[] = { {0, (uint8_t []){0}, 0xff, 0}, }; - class Esp32S3Korvo2V3Board : public WifiBoard { private: Button boot_button_; @@ -189,8 +185,7 @@ class Esp32S3Korvo2V3Board : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, false)); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeSt7789Display() { @@ -223,8 +218,7 @@ class Esp32S3Korvo2V3Board : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCamera() { @@ -277,11 +271,6 @@ class Esp32S3Korvo2V3Board : public WifiBoard { #endif } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/genjutech-s3-1.54tft/genjutech-s3-1.54tft.cc b/main/boards/genjutech-s3-1.54tft/genjutech-s3-1.54tft.cc index 87bbd8695..99794fb0b 100644 --- a/main/boards/genjutech-s3-1.54tft/genjutech-s3-1.54tft.cc +++ b/main/boards/genjutech-s3-1.54tft/genjutech-s3-1.54tft.cc @@ -21,9 +21,6 @@ #define TAG "GenJuTech_s3_1_54TFT" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class SparkBotEs8311AudioCodec : public Es8311AudioCodec { private: @@ -200,8 +197,7 @@ class GenJuTech_s3_1_54TFT : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -218,11 +214,6 @@ class GenJuTech_s3_1_54TFT : public WifiBoard { InitializeSt7789Display(); GetBacklight()->RestoreBrightness(); } - - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); diff --git a/main/boards/jiuchuan-s3/jiuchuan_dev_board.cc b/main/boards/jiuchuan-s3/jiuchuan_dev_board.cc index ebe4f4b92..f60700f99 100644 --- a/main/boards/jiuchuan-s3/jiuchuan_dev_board.cc +++ b/main/boards/jiuchuan-s3/jiuchuan_dev_board.cc @@ -25,9 +25,6 @@ #define BOARD_TAG "JiuchuanDevBoard" #define __USER_GPIO_PWRDOWN__ -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - // 自定义LCD显示器类,用于圆形屏幕适配 class CustomLcdDisplay : public SpiLcdDisplay { @@ -40,9 +37,8 @@ class CustomLcdDisplay : public SpiLcdDisplay int offset_y, bool mirror_x, bool mirror_y, - bool swap_xy, - DisplayStyle style) - : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, style) + bool swap_xy) + : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); @@ -142,7 +138,6 @@ class JiuchuanDevBoard : public WifiBoard { power_save_timer_->SetEnabled(true); } - void InitializeI2c() { // Initialize I2C peripheral i2c_master_bus_config_t i2c_bus_cfg = { @@ -315,8 +310,7 @@ class JiuchuanDevBoard : public WifiBoard { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new CustomLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -335,11 +329,6 @@ class JiuchuanDevBoard : public WifiBoard { } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/kevin-box-1/kevin_box_board.cc b/main/boards/kevin-box-1/kevin_box_board.cc index 24f2ff456..bb2e9125a 100644 --- a/main/boards/kevin-box-1/kevin_box_board.cc +++ b/main/boards/kevin-box-1/kevin_box_board.cc @@ -16,9 +16,6 @@ #define TAG "KevinBoxBoard" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - class KevinBoxBoard : public Ml307Board { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -115,8 +112,7 @@ class KevinBoxBoard : public Ml307Board { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeCodecI2c() { @@ -189,11 +185,6 @@ class KevinBoxBoard : public Ml307Board { InitializeButtons(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/kevin-box-2/kevin_box_board.cc b/main/boards/kevin-box-2/kevin_box_board.cc index fa011f13a..94e7e1764 100644 --- a/main/boards/kevin-box-2/kevin_box_board.cc +++ b/main/boards/kevin-box-2/kevin_box_board.cc @@ -18,10 +18,6 @@ #define TAG "KevinBoxBoard" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - - class Pmic : public Axp2101 { public: Pmic(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : Axp2101(i2c_bus, addr) { @@ -50,7 +46,6 @@ class Pmic : public Axp2101 { } }; - class KevinBoxBoard : public DualNetworkBoard { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -145,8 +140,7 @@ class KevinBoxBoard : public DualNetworkBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeCodecI2c() { @@ -244,11 +238,6 @@ class KevinBoxBoard : public DualNetworkBoard { InitializePowerSaveTimer(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/kevin-c3/kevin_c3_board.cc b/main/boards/kevin-c3/kevin_c3_board.cc index c7dac4f1c..df7e82c20 100644 --- a/main/boards/kevin-c3/kevin_c3_board.cc +++ b/main/boards/kevin-c3/kevin_c3_board.cc @@ -75,11 +75,6 @@ class KevinBoxBoard : public WifiBoard { esp_efuse_write_field_bit(ESP_EFUSE_VDD_SPI_AS_GPIO); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_WAKENET_SMALL); - return &assets; - } - virtual Led* GetLed() override { return led_strip_; } diff --git a/main/boards/kevin-c3/led_strip_control.cc b/main/boards/kevin-c3/led_strip_control.cc index e0d527867..68dc4aeb3 100644 --- a/main/boards/kevin-c3/led_strip_control.cc +++ b/main/boards/kevin-c3/led_strip_control.cc @@ -5,7 +5,6 @@ #define TAG "LedStripControl" - int LedStripControl::LevelToBrightness(int level) const { if (level < 0) level = 0; if (level > 8) level = 8; diff --git a/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc b/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc index 54ddfc42a..5191b5a1e 100644 --- a/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc +++ b/main/boards/kevin-sp-v3-dev/kevin-sp-v3_board.cc @@ -17,10 +17,6 @@ #define TAG "kevin-sp-v3" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - // class KEVIN_SP_V3Board : public Ml307Board { class KEVIN_SP_V3Board : public WifiBoard { private: @@ -84,8 +80,7 @@ class KEVIN_SP_V3Board : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCamera() { @@ -132,11 +127,6 @@ class KEVIN_SP_V3Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc b/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc index ae9cfbe1e..56ed90530 100644 --- a/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc +++ b/main/boards/kevin-sp-v4-dev/kevin-sp-v4_board.cc @@ -15,9 +15,6 @@ #define TAG "kevin-sp-v4" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class KEVIN_SP_V4Board : public WifiBoard { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -98,8 +95,7 @@ class KEVIN_SP_V4Board : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCamera() { @@ -147,11 +143,6 @@ class KEVIN_SP_V4Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc b/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc index 97586f635..19f2f06c6 100644 --- a/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc +++ b/main/boards/kevin-yuying-313lcd/kevin_yuying_313lcd.cc @@ -17,9 +17,6 @@ #define TAG "Yuying_313lcd" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class Yuying_313lcd : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -103,8 +100,7 @@ class Yuying_313lcd : public WifiBoard { display_ = new RgbLcdDisplay(panel_io, panel_handle, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, - DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_30_4, &font_awesome_30_4}); + DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCodecI2c() { @@ -147,11 +143,6 @@ class Yuying_313lcd : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec(codec_i2c_bus_, I2C_NUM_0, AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_GPIO_MCLK, AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN, diff --git a/main/boards/labplus-ledong-v2/labplus_ledong_v2.cc b/main/boards/labplus-ledong-v2/labplus_ledong_v2.cc index 327ed5340..e1f7d884b 100644 --- a/main/boards/labplus-ledong-v2/labplus_ledong_v2.cc +++ b/main/boards/labplus-ledong-v2/labplus_ledong_v2.cc @@ -18,9 +18,6 @@ #define BOARD_STM8_ADDR 17 #define BOARD_STM8_CMD 4 -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class labplus_ledong_v2 : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -119,8 +116,7 @@ class labplus_ledong_v2 : public WifiBoard { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -132,11 +128,6 @@ class labplus_ledong_v2 : public WifiBoard { GetBacklight()->SetBrightness(100); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/labplus-mpython-v3/mpython_pro.cc b/main/boards/labplus-mpython-v3/mpython_pro.cc index d3422faf7..3b9d1499c 100644 --- a/main/boards/labplus-mpython-v3/mpython_pro.cc +++ b/main/boards/labplus-mpython-v3/mpython_pro.cc @@ -15,9 +15,6 @@ #define TAG "mpython_v3" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class mpython_v3 : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -99,8 +96,7 @@ class mpython_v3 : public WifiBoard { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -112,11 +108,6 @@ class mpython_v3 : public WifiBoard { GetBacklight()->SetBrightness(100); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc b/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc index 7a7e13c5a..988246d9f 100644 --- a/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc +++ b/main/boards/lichuang-c3-dev/lichuang_c3_dev_board.cc @@ -14,9 +14,6 @@ #define TAG "LichuangC3DevBoard" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class LichuangC3DevBoard : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -91,8 +88,7 @@ class LichuangC3DevBoard : public WifiBoard { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -104,11 +100,6 @@ class LichuangC3DevBoard : public WifiBoard { GetBacklight()->SetBrightness(100); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_S_PUHUI_COMMON_20_4_EMOJI_32); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( codec_i2c_bus_, diff --git a/main/boards/lichuang-dev/lichuang_dev_board.cc b/main/boards/lichuang-dev/lichuang_dev_board.cc index 0c40d73db..adfb41725 100644 --- a/main/boards/lichuang-dev/lichuang_dev_board.cc +++ b/main/boards/lichuang-dev/lichuang_dev_board.cc @@ -16,12 +16,8 @@ #include #include - #define TAG "LichuangDevBoard" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class Pca9557 : public I2cDevice { public: Pca9557(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : I2cDevice(i2c_bus, addr) { @@ -157,8 +153,7 @@ class LichuangDevBoard : public WifiBoard { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeTouch() @@ -243,11 +238,6 @@ class LichuangDevBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static CustomAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc b/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc index 7e9824827..d590d5a39 100644 --- a/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc +++ b/main/boards/lilygo-t-cameraplus-s3/lilygo-t-cameraplus-s3.cc @@ -18,9 +18,6 @@ #define TAG "LilygoTCameraPlusS3Board" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class Cst816x : public I2cDevice { public: struct TouchPoint_t { @@ -207,8 +204,7 @@ class LilygoTCameraPlusS3Board : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -286,11 +282,6 @@ class LilygoTCameraPlusS3Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec *GetAudioCodec() override { static Tcamerapluss3AudioCodec audio_codec( AUDIO_INPUT_SAMPLE_RATE, diff --git a/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc b/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc index 9ed29cabc..e40878ffe 100644 --- a/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc +++ b/main/boards/lilygo-t-circle-s3/lilygo-t-circle-s3.cc @@ -16,9 +16,6 @@ #define TAG "LilygoTCircleS3Board" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class Cst816x : public I2cDevice { public: struct TouchPoint_t { @@ -185,8 +182,7 @@ class LilygoTCircleS3Board : public WifiBoard { display_ = new SpiLcdDisplay(panel_io, panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, - DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); gpio_config_t config; config.pin_bit_mask = BIT64(DISPLAY_BL); @@ -224,11 +220,6 @@ class LilygoTCircleS3Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual AudioCodec *GetAudioCodec() override { static Tcircles3AudioCodec audio_codec( AUDIO_INPUT_SAMPLE_RATE, diff --git a/main/boards/lilygo-t-display-s3-pro-mvsrlora/lilygo-t-display-s3-pro-mvsrlora.cc b/main/boards/lilygo-t-display-s3-pro-mvsrlora/lilygo-t-display-s3-pro-mvsrlora.cc index ef2b96f22..f0a4aeda9 100644 --- a/main/boards/lilygo-t-display-s3-pro-mvsrlora/lilygo-t-display-s3-pro-mvsrlora.cc +++ b/main/boards/lilygo-t-display-s3-pro-mvsrlora/lilygo-t-display-s3-pro-mvsrlora.cc @@ -16,9 +16,6 @@ #define TAG "LilygoTDisplays3ProMVSRLoraBoard" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class Cst2xxse : public I2cDevice { public: struct TouchPoint_t { @@ -209,8 +206,7 @@ class LilygoTDisplays3ProMVSRLoraBoard : public WifiBoard { display_ = new SpiLcdDisplay(panel_io, panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, - DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); gpio_config_t config; config.pin_bit_mask = BIT64(DISPLAY_BL); @@ -249,11 +245,6 @@ class LilygoTDisplays3ProMVSRLoraBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec *GetAudioCodec() override { static Tdisplays3promvsrloraAudioCodec audio_codec( AUDIO_INPUT_SAMPLE_RATE, diff --git a/main/boards/m5stack-core-s3/cores3_audio_codec.cc b/main/boards/m5stack-core-s3/cores3_audio_codec.cc index a267ccfa6..ea1327791 100644 --- a/main/boards/m5stack-core-s3/cores3_audio_codec.cc +++ b/main/boards/m5stack-core-s3/cores3_audio_codec.cc @@ -4,7 +4,6 @@ #include #include - #define TAG "CoreS3AudioCodec" CoreS3AudioCodec::CoreS3AudioCodec(void* i2c_master_handle, int input_sample_rate, int output_sample_rate, diff --git a/main/boards/m5stack-core-s3/m5stack_core_s3.cc b/main/boards/m5stack-core-s3/m5stack_core_s3.cc index 6531c6ff7..fd42ed96c 100644 --- a/main/boards/m5stack-core-s3/m5stack_core_s3.cc +++ b/main/boards/m5stack-core-s3/m5stack_core_s3.cc @@ -16,12 +16,8 @@ #include #include "esp32_camera.h" - #define TAG "M5StackCoreS3Board" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class Pmic : public Axp2101 { public: // Power Init @@ -44,7 +40,6 @@ class Pmic : public Axp2101 { } }; - class CustomBacklight : public Backlight { public: CustomBacklight(Pmic *pmic) : pmic_(pmic) {} @@ -58,7 +53,6 @@ class CustomBacklight : public Backlight { Pmic *pmic_; }; - class Aw9523 : public I2cDevice { public: // Exanpd IO Init @@ -123,7 +117,6 @@ class Ft6336 : public I2cDevice { TouchPoint_t tp_; }; - class M5StackCoreS3Board : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -294,8 +287,7 @@ class M5StackCoreS3Board : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeCamera() { @@ -342,11 +334,6 @@ class M5StackCoreS3Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static CoreS3AudioCodec audio_codec(i2c_bus_, AUDIO_INPUT_SAMPLE_RATE, diff --git a/main/boards/m5stack-tab5/m5stack_tab5.cc b/main/boards/m5stack-tab5/m5stack_tab5.cc index c3a1e4901..f947f0f71 100644 --- a/main/boards/m5stack-tab5/m5stack_tab5.cc +++ b/main/boards/m5stack-tab5/m5stack_tab5.cc @@ -19,13 +19,8 @@ #include "esp_lcd_touch_gt911.h" #include - #define TAG "M5StackTab5Board" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - - #define AUDIO_CODEC_ES8388_ADDR ES8388_CODEC_DEFAULT_ADDR #define LCD_MIPI_DSI_PHY_PWR_LDO_CHAN 3 // LDO_VO3 is connected to VDD_MIPI_DPHY #define LCD_MIPI_DSI_PHY_PWR_LDO_VOLTAGE_MV 2500 @@ -72,7 +67,6 @@ class Pi4ioe2 : public I2cDevice { } }; - class M5StackTab5Board : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -261,8 +255,7 @@ class M5StackTab5Board : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel, true)); display_ = new MipiLcdDisplay(panel_io, panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, - DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_30_4, &font_awesome_30_4}); + DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -276,11 +269,6 @@ class M5StackTab5Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Tab5AudioCodec audio_codec(i2c_bus_, AUDIO_INPUT_SAMPLE_RATE, diff --git a/main/boards/m5stack-tab5/tab5_audio_codec.cc b/main/boards/m5stack-tab5/tab5_audio_codec.cc index 25aec5830..a8e1a9680 100644 --- a/main/boards/m5stack-tab5/tab5_audio_codec.cc +++ b/main/boards/m5stack-tab5/tab5_audio_codec.cc @@ -4,10 +4,8 @@ #include #include - #define TAG "Tab5AudioCodec" - Tab5AudioCodec::Tab5AudioCodec(void* i2c_master_handle, int input_sample_rate, int output_sample_rate, gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din, gpio_num_t pa_pin, uint8_t es8388_addr, uint8_t es7210_addr, bool input_reference) { diff --git a/main/boards/magiclick-2p4/magiclick_2p4_board.cc b/main/boards/magiclick-2p4/magiclick_2p4_board.cc index 20ba7b75f..d9707d64f 100644 --- a/main/boards/magiclick-2p4/magiclick_2p4_board.cc +++ b/main/boards/magiclick-2p4/magiclick_2p4_board.cc @@ -19,15 +19,11 @@ #define TAG "magiclick_2p4" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class NV3023Display : public SpiLcdDisplay { public: NV3023Display(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy) - : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_16_4, &font_awesome_16_4}) { + : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); // 只需要覆盖颜色相关的样式 @@ -67,7 +63,6 @@ class magiclick_2p4 : public WifiBoard { esp_lcd_panel_io_handle_t panel_io = nullptr; esp_lcd_panel_handle_t panel = nullptr; - void InitializePowerManager() { power_manager_ = new PowerManager(GPIO_NUM_48); power_manager_->OnChargingStatusChanged([this](bool is_charging) { @@ -231,11 +226,6 @@ class magiclick_2p4 : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static CircularStrip led(BUILTIN_LED_GPIO, BUILTIN_LED_NUM); return &led; diff --git a/main/boards/magiclick-2p5/magiclick_2p5_board.cc b/main/boards/magiclick-2p5/magiclick_2p5_board.cc index 375b8d2e1..1db21fa61 100644 --- a/main/boards/magiclick-2p5/magiclick_2p5_board.cc +++ b/main/boards/magiclick-2p5/magiclick_2p5_board.cc @@ -22,15 +22,11 @@ #define TAG "magiclick_2p5" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class GC9107Display : public SpiLcdDisplay { public: GC9107Display(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy) - : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_16_4, &font_awesome_16_4}) { + : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { } }; @@ -82,7 +78,6 @@ class magiclick_2p5 : public DualNetworkBoard { esp_lcd_panel_io_handle_t panel_io = nullptr; esp_lcd_panel_handle_t panel = nullptr; - void InitializePowerManager() { power_manager_ = new PowerManager(GPIO_NUM_48); power_manager_->OnChargingStatusChanged([this](bool is_charging) { @@ -147,7 +142,6 @@ class magiclick_2p5 : public DualNetworkBoard { } - void InitializeButtons() { main_button_.OnClick([this]() { auto& app = Application::GetInstance(); @@ -288,11 +282,6 @@ class magiclick_2p5 : public DualNetworkBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static CircularStrip led(BUILTIN_LED_GPIO, BUILTIN_LED_NUM); return &led; diff --git a/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc b/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc index b70f750a8..19f09ae1e 100644 --- a/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc +++ b/main/boards/magiclick-c3-v2/magiclick_c3_v2_board.cc @@ -19,15 +19,11 @@ #define TAG "magiclick_c3_v2" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class GC9107Display : public SpiLcdDisplay { public: GC9107Display(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy) - : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_16_4, &font_awesome_16_4}) { + : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); // 只需要覆盖颜色相关的样式 @@ -211,11 +207,6 @@ class magiclick_c3_v2 : public WifiBoard { esp_efuse_write_field_bit(ESP_EFUSE_VDD_SPI_AS_GPIO); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/magiclick-c3/magiclick_c3_board.cc b/main/boards/magiclick-c3/magiclick_c3_board.cc index 91821f12e..39af08e35 100644 --- a/main/boards/magiclick-c3/magiclick_c3_board.cc +++ b/main/boards/magiclick-c3/magiclick_c3_board.cc @@ -17,15 +17,11 @@ #define TAG "magiclick_c3" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class NV3023Display : public SpiLcdDisplay { public: NV3023Display(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy) - : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_16_4, &font_awesome_16_4}) { + : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); // 只需要覆盖颜色相关的样式 @@ -169,11 +165,6 @@ class magiclick_c3 : public WifiBoard { esp_efuse_write_field_bit(ESP_EFUSE_VDD_SPI_AS_GPIO); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/minsi-k08-dual/minsi_k08_dual.cc b/main/boards/minsi-k08-dual/minsi_k08_dual.cc index 17d615267..8fa0bbafd 100644 --- a/main/boards/minsi-k08-dual/minsi_k08_dual.cc +++ b/main/boards/minsi-k08-dual/minsi_k08_dual.cc @@ -1,257 +1,246 @@ -#include "dual_network_board.h" -//#include "wifi_board.h" -#include "codecs/no_audio_codec.h" -#include "display/lcd_display.h" -#include "system_reset.h" -#include "application.h" -#include "button.h" -#include "config.h" -#include "power_save_timer.h" -#include "mcp_server.h" -#include "lamp_controller.h" -#include "led/single_led.h" -#include "assets/lang_config.h" -#include "power_manager.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#define TAG "MINSI_K08_DUAL" - -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - -class MINSI_K08_DUAL : public DualNetworkBoard { -private: - - Button boot_button_; - Button volume_up_button_; - Button volume_down_button_; - LcdDisplay* display_; - PowerSaveTimer* power_save_timer_; - PowerManager* power_manager_; - esp_lcd_panel_io_handle_t panel_io_ = nullptr; - esp_lcd_panel_handle_t panel_ = nullptr; - - void InitializePowerManager() { - //power_manager_ = new PowerManager(GPIO_NUM_38); - power_manager_ = new PowerManager(GPIO_NUM_3); - power_manager_->OnChargingStatusChanged([this](bool is_charging) { - if (is_charging) { - power_save_timer_->SetEnabled(false); - } else { - power_save_timer_->SetEnabled(true); - //power_save_timer_->SetEnabled(false); - } - }); - } - - void InitializePowerSaveTimer() { - /*rtc_gpio_init(GPIO_NUM_21); - rtc_gpio_set_direction(GPIO_NUM_21, RTC_GPIO_MODE_OUTPUT_ONLY); - rtc_gpio_set_level(GPIO_NUM_21, 1);*/ - - power_save_timer_ = new PowerSaveTimer(-1, 60, 300); - power_save_timer_->OnEnterSleepMode([this]() { - GetDisplay()->SetPowerSaveMode(true); - GetBacklight()->SetBrightness(1); - }); - power_save_timer_->OnExitSleepMode([this]() { - GetDisplay()->SetPowerSaveMode(false); - GetBacklight()->RestoreBrightness(); - }); - power_save_timer_->OnShutdownRequest([this]() { - ESP_LOGI(TAG, "Shutting down"); - //rtc_gpio_set_level(GPIO_NUM_21, 0); - // 启用保持功能,确保睡眠期间电平不变 - //rtc_gpio_hold_en(GPIO_NUM_21); - //esp_lcd_panel_disp_on_off(panel_, false); //关闭显示 - //esp_deep_sleep_start(); - }); - power_save_timer_->SetEnabled(true); - - //power_save_timer_->SetEnabled(false); - } - - void InitializeSpi() { - spi_bus_config_t buscfg = {}; - buscfg.mosi_io_num = DISPLAY_MOSI_PIN; - buscfg.miso_io_num = GPIO_NUM_NC; - buscfg.sclk_io_num = DISPLAY_CLK_PIN; - buscfg.quadwp_io_num = GPIO_NUM_NC; - buscfg.quadhd_io_num = GPIO_NUM_NC; - buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t); - ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); - } - - void InitializeLcdDisplay() { - esp_lcd_panel_io_handle_t panel_io = nullptr; - esp_lcd_panel_handle_t panel = nullptr; - // 液晶屏控制IO初始化 - ESP_LOGD(TAG, "Install panel IO"); - esp_lcd_panel_io_spi_config_t io_config = {}; - io_config.cs_gpio_num = DISPLAY_CS_PIN; - io_config.dc_gpio_num = DISPLAY_DC_PIN; - io_config.spi_mode = 3; - io_config.pclk_hz = 40 * 1000 * 1000; - io_config.trans_queue_depth = 10; - io_config.lcd_cmd_bits = 8; - io_config.lcd_param_bits = 8; - ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io)); - - // 初始化液晶屏驱动芯片 - ESP_LOGD(TAG, "Install LCD driver"); - esp_lcd_panel_dev_config_t panel_config = {}; - panel_config.reset_gpio_num = DISPLAY_RST_PIN; - panel_config.rgb_ele_order = DISPLAY_RGB_ORDER; - panel_config.bits_per_pixel = 16; - - ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel)); - - esp_lcd_panel_reset(panel); - - - esp_lcd_panel_init(panel); - esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); - esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); - esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); - - display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); - } - - void InitializeButtons() { - boot_button_.OnClick([this]() { - auto& app = Application::GetInstance(); - if (GetNetworkType() == NetworkType::WIFI) { - if (app.GetDeviceState() == kDeviceStateStarting && !WifiStation::GetInstance().IsConnected()) { - // cast to WifiBoard - auto& wifi_board = static_cast(GetCurrentBoard()); - wifi_board.ResetWifiConfiguration(); - } - } - app.ToggleChatState(); - }); - boot_button_.OnDoubleClick([this]() { - auto& app = Application::GetInstance(); - if (app.GetDeviceState() == kDeviceStateStarting || app.GetDeviceState() == kDeviceStateWifiConfiguring) { - SwitchNetworkType(); - } - }); - - volume_up_button_.OnClick([this]() { - power_save_timer_->WakeUp(); - auto codec = GetAudioCodec(); - auto volume = codec->output_volume() + 10; - if (volume > 100) { - volume = 100; - } - codec->SetOutputVolume(volume); - GetDisplay()->ShowNotification(Lang::Strings::VOLUME + std::to_string(volume)); - }); - - volume_up_button_.OnLongPress([this]() { - power_save_timer_->WakeUp(); - GetAudioCodec()->SetOutputVolume(100); - GetDisplay()->ShowNotification(Lang::Strings::MAX_VOLUME); - }); - - volume_down_button_.OnClick([this]() { - power_save_timer_->WakeUp(); - auto codec = GetAudioCodec(); - auto volume = codec->output_volume() - 10; - if (volume < 0) { - volume = 0; - } - codec->SetOutputVolume(volume); - GetDisplay()->ShowNotification(Lang::Strings::VOLUME + std::to_string(volume)); - }); - - volume_down_button_.OnLongPress([this]() { - power_save_timer_->WakeUp(); - GetAudioCodec()->SetOutputVolume(0); - GetDisplay()->ShowNotification(Lang::Strings::MUTED); - }); - } - - // 物联网初始化,添加对 AI 可见设备 - void InitializeTools() { - static LampController lamp(LAMP_GPIO); - } - - -public: - MINSI_K08_DUAL() : DualNetworkBoard(ML307_TX_PIN, ML307_RX_PIN), - boot_button_(BOOT_BUTTON_GPIO), - volume_up_button_(VOLUME_UP_BUTTON_GPIO), - volume_down_button_(VOLUME_DOWN_BUTTON_GPIO) { - InitializePowerManager(); - InitializePowerSaveTimer(); - InitializeSpi(); - InitializeLcdDisplay(); - InitializeButtons(); - InitializeTools(); - if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - GetBacklight()->RestoreBrightness(); - } - } - - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - - virtual Led* GetLed() override { - static SingleLed led(BUILTIN_LED_GPIO); - return &led; - } - - virtual AudioCodec* GetAudioCodec() override { - static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, - AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); - return &audio_codec; - } - - virtual Display* GetDisplay() override { - return display_; - } - - virtual Backlight* GetBacklight() override { - if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { - static PwmBacklight backlight(DISPLAY_BACKLIGHT_PIN, DISPLAY_BACKLIGHT_OUTPUT_INVERT); - return &backlight; - } - return nullptr; - } - - virtual bool GetBatteryLevel(int& level, bool& charging, bool& discharging) override { - static bool last_discharging = false; - charging = power_manager_->IsCharging(); - discharging = power_manager_->IsDischarging(); - if (discharging != last_discharging) { - power_save_timer_->SetEnabled(discharging); - //power_save_timer_->SetEnabled(false); - last_discharging = discharging; - } - level = power_manager_->GetBatteryLevel(); - return true; - } - - virtual void SetPowerSaveMode(bool enabled) override { - if (!enabled) { - power_save_timer_->WakeUp(); - } - DualNetworkBoard::SetPowerSaveMode(enabled); - } -}; - -DECLARE_BOARD(MINSI_K08_DUAL); +#include "dual_network_board.h" +//#include "wifi_board.h" +#include "codecs/no_audio_codec.h" +#include "display/lcd_display.h" +#include "system_reset.h" +#include "application.h" +#include "button.h" +#include "config.h" +#include "power_save_timer.h" +#include "mcp_server.h" +#include "lamp_controller.h" +#include "led/single_led.h" +#include "assets/lang_config.h" +#include "power_manager.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define TAG "MINSI_K08_DUAL" + +class MINSI_K08_DUAL : public DualNetworkBoard { +private: + + Button boot_button_; + Button volume_up_button_; + Button volume_down_button_; + LcdDisplay* display_; + PowerSaveTimer* power_save_timer_; + PowerManager* power_manager_; + esp_lcd_panel_io_handle_t panel_io_ = nullptr; + esp_lcd_panel_handle_t panel_ = nullptr; + + void InitializePowerManager() { + //power_manager_ = new PowerManager(GPIO_NUM_38); + power_manager_ = new PowerManager(GPIO_NUM_3); + power_manager_->OnChargingStatusChanged([this](bool is_charging) { + if (is_charging) { + power_save_timer_->SetEnabled(false); + } else { + power_save_timer_->SetEnabled(true); + //power_save_timer_->SetEnabled(false); + } + }); + } + + void InitializePowerSaveTimer() { + /*rtc_gpio_init(GPIO_NUM_21); + rtc_gpio_set_direction(GPIO_NUM_21, RTC_GPIO_MODE_OUTPUT_ONLY); + rtc_gpio_set_level(GPIO_NUM_21, 1);*/ + + power_save_timer_ = new PowerSaveTimer(-1, 60, 300); + power_save_timer_->OnEnterSleepMode([this]() { + GetDisplay()->SetPowerSaveMode(true); + GetBacklight()->SetBrightness(1); + }); + power_save_timer_->OnExitSleepMode([this]() { + GetDisplay()->SetPowerSaveMode(false); + GetBacklight()->RestoreBrightness(); + }); + power_save_timer_->OnShutdownRequest([this]() { + ESP_LOGI(TAG, "Shutting down"); + //rtc_gpio_set_level(GPIO_NUM_21, 0); + // 启用保持功能,确保睡眠期间电平不变 + //rtc_gpio_hold_en(GPIO_NUM_21); + //esp_lcd_panel_disp_on_off(panel_, false); //关闭显示 + //esp_deep_sleep_start(); + }); + power_save_timer_->SetEnabled(true); + + //power_save_timer_->SetEnabled(false); + } + + void InitializeSpi() { + spi_bus_config_t buscfg = {}; + buscfg.mosi_io_num = DISPLAY_MOSI_PIN; + buscfg.miso_io_num = GPIO_NUM_NC; + buscfg.sclk_io_num = DISPLAY_CLK_PIN; + buscfg.quadwp_io_num = GPIO_NUM_NC; + buscfg.quadhd_io_num = GPIO_NUM_NC; + buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t); + ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); + } + + void InitializeLcdDisplay() { + esp_lcd_panel_io_handle_t panel_io = nullptr; + esp_lcd_panel_handle_t panel = nullptr; + // 液晶屏控制IO初始化 + ESP_LOGD(TAG, "Install panel IO"); + esp_lcd_panel_io_spi_config_t io_config = {}; + io_config.cs_gpio_num = DISPLAY_CS_PIN; + io_config.dc_gpio_num = DISPLAY_DC_PIN; + io_config.spi_mode = 3; + io_config.pclk_hz = 40 * 1000 * 1000; + io_config.trans_queue_depth = 10; + io_config.lcd_cmd_bits = 8; + io_config.lcd_param_bits = 8; + ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io)); + + // 初始化液晶屏驱动芯片 + ESP_LOGD(TAG, "Install LCD driver"); + esp_lcd_panel_dev_config_t panel_config = {}; + panel_config.reset_gpio_num = DISPLAY_RST_PIN; + panel_config.rgb_ele_order = DISPLAY_RGB_ORDER; + panel_config.bits_per_pixel = 16; + + ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel)); + + esp_lcd_panel_reset(panel); + + esp_lcd_panel_init(panel); + esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR); + esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); + esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); + + display_ = new SpiLcdDisplay(panel_io, panel, + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); + } + + void InitializeButtons() { + boot_button_.OnClick([this]() { + auto& app = Application::GetInstance(); + if (GetNetworkType() == NetworkType::WIFI) { + if (app.GetDeviceState() == kDeviceStateStarting && !WifiStation::GetInstance().IsConnected()) { + // cast to WifiBoard + auto& wifi_board = static_cast(GetCurrentBoard()); + wifi_board.ResetWifiConfiguration(); + } + } + app.ToggleChatState(); + }); + boot_button_.OnDoubleClick([this]() { + auto& app = Application::GetInstance(); + if (app.GetDeviceState() == kDeviceStateStarting || app.GetDeviceState() == kDeviceStateWifiConfiguring) { + SwitchNetworkType(); + } + }); + + volume_up_button_.OnClick([this]() { + power_save_timer_->WakeUp(); + auto codec = GetAudioCodec(); + auto volume = codec->output_volume() + 10; + if (volume > 100) { + volume = 100; + } + codec->SetOutputVolume(volume); + GetDisplay()->ShowNotification(Lang::Strings::VOLUME + std::to_string(volume)); + }); + + volume_up_button_.OnLongPress([this]() { + power_save_timer_->WakeUp(); + GetAudioCodec()->SetOutputVolume(100); + GetDisplay()->ShowNotification(Lang::Strings::MAX_VOLUME); + }); + + volume_down_button_.OnClick([this]() { + power_save_timer_->WakeUp(); + auto codec = GetAudioCodec(); + auto volume = codec->output_volume() - 10; + if (volume < 0) { + volume = 0; + } + codec->SetOutputVolume(volume); + GetDisplay()->ShowNotification(Lang::Strings::VOLUME + std::to_string(volume)); + }); + + volume_down_button_.OnLongPress([this]() { + power_save_timer_->WakeUp(); + GetAudioCodec()->SetOutputVolume(0); + GetDisplay()->ShowNotification(Lang::Strings::MUTED); + }); + } + + // 物联网初始化,添加对 AI 可见设备 + void InitializeTools() { + static LampController lamp(LAMP_GPIO); + } + +public: + MINSI_K08_DUAL() : DualNetworkBoard(ML307_TX_PIN, ML307_RX_PIN), + boot_button_(BOOT_BUTTON_GPIO), + volume_up_button_(VOLUME_UP_BUTTON_GPIO), + volume_down_button_(VOLUME_DOWN_BUTTON_GPIO) { + InitializePowerManager(); + InitializePowerSaveTimer(); + InitializeSpi(); + InitializeLcdDisplay(); + InitializeButtons(); + InitializeTools(); + if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { + GetBacklight()->RestoreBrightness(); + } + } + + virtual Led* GetLed() override { + static SingleLed led(BUILTIN_LED_GPIO); + return &led; + } + + virtual AudioCodec* GetAudioCodec() override { + static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, + AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); + return &audio_codec; + } + + virtual Display* GetDisplay() override { + return display_; + } + + virtual Backlight* GetBacklight() override { + if (DISPLAY_BACKLIGHT_PIN != GPIO_NUM_NC) { + static PwmBacklight backlight(DISPLAY_BACKLIGHT_PIN, DISPLAY_BACKLIGHT_OUTPUT_INVERT); + return &backlight; + } + return nullptr; + } + + virtual bool GetBatteryLevel(int& level, bool& charging, bool& discharging) override { + static bool last_discharging = false; + charging = power_manager_->IsCharging(); + discharging = power_manager_->IsDischarging(); + if (discharging != last_discharging) { + power_save_timer_->SetEnabled(discharging); + //power_save_timer_->SetEnabled(false); + last_discharging = discharging; + } + level = power_manager_->GetBatteryLevel(); + return true; + } + + virtual void SetPowerSaveMode(bool enabled) override { + if (!enabled) { + power_save_timer_->WakeUp(); + } + DualNetworkBoard::SetPowerSaveMode(enabled); + } +}; + +DECLARE_BOARD(MINSI_K08_DUAL); diff --git a/main/boards/mixgo-nova/mixgo-nova.cc b/main/boards/mixgo-nova/mixgo-nova.cc index 92f5c3520..fdaaea329 100644 --- a/main/boards/mixgo-nova/mixgo-nova.cc +++ b/main/boards/mixgo-nova/mixgo-nova.cc @@ -16,10 +16,6 @@ #define TAG "MIXGO_NOVA" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - - class MIXGO_NOVA : public WifiBoard { private: Button boot_button_; @@ -126,8 +122,7 @@ class MIXGO_NOVA : public WifiBoard { esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -144,11 +139,6 @@ class MIXGO_NOVA : public WifiBoard { } } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static CircularStrip led(BUILTIN_LED_GPIO, 4); return &led; diff --git a/main/boards/movecall-cuican-esp32s3/movecall_cuican_esp32s3.cc b/main/boards/movecall-cuican-esp32s3/movecall_cuican_esp32s3.cc index 081451389..00ba5bc8a 100644 --- a/main/boards/movecall-cuican-esp32s3/movecall_cuican_esp32s3.cc +++ b/main/boards/movecall-cuican-esp32s3/movecall_cuican_esp32s3.cc @@ -20,9 +20,6 @@ #define TAG "MovecallCuicanESP32S3" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - class MovecallCuicanESP32S3 : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -79,8 +76,7 @@ class MovecallCuicanESP32S3 : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true)); display_ = new SpiLcdDisplay(io_handle, panel_handle, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -102,11 +98,6 @@ class MovecallCuicanESP32S3 : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led_strip(BUILTIN_LED_GPIO); return &led_strip; diff --git a/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc b/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc index a4b78b79c..613297724 100644 --- a/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc +++ b/main/boards/movecall-moji-esp32s3/movecall_moji_esp32s3.cc @@ -20,10 +20,6 @@ #define TAG "MovecallMojiESP32S3" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class CustomLcdDisplay : public SpiLcdDisplay { public: CustomLcdDisplay(esp_lcd_panel_io_handle_t io_handle, @@ -35,8 +31,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_x, bool mirror_y, bool swap_xy) - : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_20_4, &font_awesome_20_4}) { + : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); // 由于屏幕是圆的,所以状态栏需要增加左右内边距 @@ -101,8 +96,7 @@ class MovecallMojiESP32S3 : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true)); display_ = new SpiLcdDisplay(io_handle, panel_handle, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -124,11 +118,6 @@ class MovecallMojiESP32S3 : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led_strip(BUILTIN_LED_GPIO); return &led_strip; diff --git a/main/boards/otto-robot/otto_emoji_display.cc b/main/boards/otto-robot/otto_emoji_display.cc index 10fbccd5e..26ad536dd 100644 --- a/main/boards/otto-robot/otto_emoji_display.cc +++ b/main/boards/otto-robot/otto_emoji_display.cc @@ -51,9 +51,8 @@ const OttoEmojiDisplay::EmotionMap OttoEmojiDisplay::emotion_maps_[] = { OttoEmojiDisplay::OttoEmojiDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, - bool mirror_y, bool swap_xy, DisplayStyle style) - : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - style), + bool mirror_y, bool swap_xy) + : SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy), emotion_gif_(nullptr) { SetupGifContainer(); }; diff --git a/main/boards/otto-robot/otto_emoji_display.h b/main/boards/otto-robot/otto_emoji_display.h index 9ce1d0a85..b51926e9f 100644 --- a/main/boards/otto-robot/otto_emoji_display.h +++ b/main/boards/otto-robot/otto_emoji_display.h @@ -16,7 +16,7 @@ class OttoEmojiDisplay : public SpiLcdDisplay { */ OttoEmojiDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, - bool swap_xy, DisplayStyle style); + bool swap_xy); virtual ~OttoEmojiDisplay() = default; diff --git a/main/boards/otto-robot/otto_robot.cc b/main/boards/otto-robot/otto_robot.cc index 20847d937..d00878751 100644 --- a/main/boards/otto-robot/otto_robot.cc +++ b/main/boards/otto-robot/otto_robot.cc @@ -21,9 +21,6 @@ #define TAG "OttoRobot" -LV_FONT_DECLARE(font_puhui_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - extern void InitializeOttoController(); class OttoRobot : public WifiBoard { @@ -78,8 +75,7 @@ class OttoRobot : public WifiBoard { display_ = new OttoEmojiDisplay( panel_io, panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_16_4, &font_awesome_16_4, new Twemoji64()}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { diff --git a/main/boards/sensecap-watcher/sensecap_watcher.cc b/main/boards/sensecap-watcher/sensecap_watcher.cc index 2bcd1511d..a801a7715 100644 --- a/main/boards/sensecap-watcher/sensecap_watcher.cc +++ b/main/boards/sensecap-watcher/sensecap_watcher.cc @@ -32,10 +32,6 @@ #define TAG "sensecap_watcher" - -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_20_4); - class CustomLcdDisplay : public SpiLcdDisplay { public: CustomLcdDisplay(esp_lcd_panel_io_handle_t io_handle, @@ -47,8 +43,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_x, bool mirror_y, bool swap_xy) - : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_30_4, &font_awesome_20_4}) { + : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); lv_obj_set_size(status_bar_, LV_HOR_RES, style_.text_font->line_height * 2 + 10); @@ -533,11 +528,6 @@ class SensecapWatcher : public WifiBoard { InitializeCamera(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static SensecapAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/sp-esp32-s3-1.28-box/sp-esp32-s3-1.28-box.cc b/main/boards/sp-esp32-s3-1.28-box/sp-esp32-s3-1.28-box.cc index b03137ecb..a885feb3f 100644 --- a/main/boards/sp-esp32-s3-1.28-box/sp-esp32-s3-1.28-box.cc +++ b/main/boards/sp-esp32-s3-1.28-box/sp-esp32-s3-1.28-box.cc @@ -27,10 +27,6 @@ #define TAG "Spotpear_ESP32_S3_1_28_BOX" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - - class Cst816d : public I2cDevice { public: struct TouchPoint_t { @@ -68,7 +64,6 @@ class Cst816d : public I2cDevice { TouchPoint_t tp_; }; - class CustomLcdDisplay : public SpiLcdDisplay { public: CustomLcdDisplay(esp_lcd_panel_io_handle_t io_handle, @@ -80,8 +75,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_x, bool mirror_y, bool swap_xy) - : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_16_4, &font_awesome_16_4}) { + : SpiLcdDisplay(io_handle, panel_handle, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); // 由于屏幕是圆的,所以状态栏需要增加左右内边距 @@ -90,7 +84,6 @@ class CustomLcdDisplay : public SpiLcdDisplay { } }; - class Spotpear_ESP32_S3_1_28_BOX : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -161,7 +154,6 @@ class Spotpear_ESP32_S3_1_28_BOX : public WifiBoard { ESP_ERROR_CHECK(i2c_new_master_bus(&i2c_bus_cfg, &i2c_bus_)); } - static void touchpad_timer_callback(void* arg) { auto& board = (Spotpear_ESP32_S3_1_28_BOX&)Board::GetInstance(); auto touchpad = board.GetTouchpad(); @@ -280,12 +272,6 @@ class Spotpear_ESP32_S3_1_28_BOX : public WifiBoard { GetBacklight()->RestoreBrightness(); } - - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_64); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/sp-esp32-s3-1.54-muma/sp-esp32-s3-1.54-muma.cc b/main/boards/sp-esp32-s3-1.54-muma/sp-esp32-s3-1.54-muma.cc index 048225f79..436cc3464 100644 --- a/main/boards/sp-esp32-s3-1.54-muma/sp-esp32-s3-1.54-muma.cc +++ b/main/boards/sp-esp32-s3-1.54-muma/sp-esp32-s3-1.54-muma.cc @@ -28,9 +28,6 @@ #define TAG "Spotpear_esp32_s3_lcd_1_54" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class Cst816d : public I2cDevice { public: struct TouchPoint_t { @@ -212,7 +209,6 @@ class Spotpear_esp32_s3_lcd_1_54 : public WifiBoard { ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); } - void InitializeSt7789Display() { esp_lcd_panel_io_handle_t panel_io = nullptr; esp_lcd_panel_handle_t panel = nullptr; @@ -242,7 +238,6 @@ class Spotpear_esp32_s3_lcd_1_54 : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y)); ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, true)); - // uint8_t data_0xBB[] = { 0x3F }; // esp_lcd_panel_io_tx_param(panel_io, 0xBB, data_0xBB, sizeof(data_0xBB)); @@ -250,8 +245,7 @@ class Spotpear_esp32_s3_lcd_1_54 : public WifiBoard { esp_lcd_panel_io_tx_param(panel_io, 0xBB, data_0xBB, sizeof(data_0xBB)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -283,11 +277,6 @@ class Spotpear_esp32_s3_lcd_1_54 : public WifiBoard { } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led_strip(BUILTIN_LED_GPIO); return &led_strip; diff --git a/main/boards/surfer-c3-1.14tft/surfer-c3-1.14tft.cc b/main/boards/surfer-c3-1.14tft/surfer-c3-1.14tft.cc index 7924796cb..cad05c656 100644 --- a/main/boards/surfer-c3-1.14tft/surfer-c3-1.14tft.cc +++ b/main/boards/surfer-c3-1.14tft/surfer-c3-1.14tft.cc @@ -18,12 +18,8 @@ #include "power_manager.h" // #include - #define TAG "SURFERC3114TFT" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - class SurferC3114TFT : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -146,8 +142,7 @@ class SurferC3114TFT : public WifiBoard { esp_lcd_panel_swap_xy(panel_, DISPLAY_SWAP_XY); esp_lcd_panel_mirror(panel_, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io_, panel_, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -166,11 +161,6 @@ class SurferC3114TFT : public WifiBoard { esp_efuse_write_field_bit(ESP_EFUSE_VDD_SPI_AS_GPIO); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_S_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( codec_i2c_bus_, diff --git a/main/boards/taiji-pi-s3/taiji_pi_s3.cc b/main/boards/taiji-pi-s3/taiji_pi_s3.cc index 11d4714c2..b6de62c2b 100644 --- a/main/boards/taiji-pi-s3/taiji_pi_s3.cc +++ b/main/boards/taiji-pi-s3/taiji_pi_s3.cc @@ -16,11 +16,6 @@ #define TAG "TaijiPiS3Board" - -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - static const st77916_lcd_init_cmd_t lcd_init_cmds[] = { #ifdef CONFIG_TAIJIPAI_I2S_TYPE_STD {0xF0, (uint8_t[]){0x08}, 1, 0}, @@ -595,8 +590,7 @@ class TaijiPiS3Board : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeMute() { @@ -616,11 +610,6 @@ class TaijiPiS3Board : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { #ifdef CONFIG_TAIJIPAI_I2S_TYPE_STD static NoAudioCodecSimplex audio_codec( diff --git a/main/boards/tudouzi/kevin_box_board.cc b/main/boards/tudouzi/kevin_box_board.cc index 1d0cca3bf..d6cb5b23e 100644 --- a/main/boards/tudouzi/kevin_box_board.cc +++ b/main/boards/tudouzi/kevin_box_board.cc @@ -17,10 +17,6 @@ #define TAG "KevinBoxBoard" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - - class Pmic : public Axp2101 { public: Pmic(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : Axp2101(i2c_bus, addr) { @@ -49,7 +45,6 @@ class Pmic : public Axp2101 { } }; - class KevinBoxBoard : public Ml307Board { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -147,8 +142,7 @@ class KevinBoxBoard : public Ml307Board { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeCodecI2c() { @@ -228,11 +222,6 @@ class KevinBoxBoard : public Ml307Board { InitializePowerSaveTimer(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/waveshare-c6-lcd-1.69/esp32-c6-lcd-1.69.cc b/main/boards/waveshare-c6-lcd-1.69/esp32-c6-lcd-1.69.cc index 2212dec4c..bebe97471 100644 --- a/main/boards/waveshare-c6-lcd-1.69/esp32-c6-lcd-1.69.cc +++ b/main/boards/waveshare-c6-lcd-1.69/esp32-c6-lcd-1.69.cc @@ -20,10 +20,6 @@ #define TAG "waveshare_lcd_1_69" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class CustomLcdDisplay : public SpiLcdDisplay { public: CustomLcdDisplay(esp_lcd_panel_io_handle_t io_handle, @@ -36,15 +32,13 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_y, bool swap_xy) : SpiLcdDisplay(io_handle, panel_handle, - width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_20_4, &font_awesome_20_4}) { + width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); lv_obj_set_style_pad_left(status_bar_, LV_HOR_RES * 0.1, 0); lv_obj_set_style_pad_right(status_bar_, LV_HOR_RES * 0.1, 0); } }; - class CustomButton: public Button { public: void OnPressDownDel(void) { @@ -63,7 +57,6 @@ class CustomButton: public Button { } }; - class CustomBoard : public WifiBoard { private: CustomButton boot_button_; @@ -212,11 +205,6 @@ class CustomBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_S_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/waveshare-c6-touch-amoled-1.43/esp32-c6-touch-amoled-1.43.cc b/main/boards/waveshare-c6-touch-amoled-1.43/esp32-c6-touch-amoled-1.43.cc index fe8a64f36..42cd4b9f6 100644 --- a/main/boards/waveshare-c6-touch-amoled-1.43/esp32-c6-touch-amoled-1.43.cc +++ b/main/boards/waveshare-c6-touch-amoled-1.43/esp32-c6-touch-amoled-1.43.cc @@ -17,10 +17,6 @@ #define TAG "waveshare_c6_amoled_1_43" - -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - static const sh8601_lcd_init_cmd_t lcd_init_cmds[] = { {0x11, (uint8_t []){0x00}, 0, 80}, @@ -58,8 +54,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_y, bool swap_xy) : SpiLcdDisplay(io_handle, panel_handle, - width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_30_4, &font_awesome_30_4}) { + width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); lv_display_add_event_cb(display_, MyDrawEventCb, LV_EVENT_INVALIDATE_AREA, NULL); } @@ -284,11 +279,6 @@ class CustomBoard : public WifiBoard { return display_; } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_S_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - }; DECLARE_BOARD(CustomBoard); \ No newline at end of file diff --git a/main/boards/waveshare-p4-nano/esp32-p4-nano.cc b/main/boards/waveshare-p4-nano/esp32-p4-nano.cc index 364cdc0be..a7dc2dcaf 100644 --- a/main/boards/waveshare-p4-nano/esp32-p4-nano.cc +++ b/main/boards/waveshare-p4-nano/esp32-p4-nano.cc @@ -20,9 +20,6 @@ #include "esp_lcd_touch_gt911.h" #define TAG "WaveshareEsp32p4nano" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class CustomBacklight : public Backlight { public: CustomBacklight(i2c_master_bus_handle_t i2c_handle) @@ -160,8 +157,7 @@ class WaveshareEsp32p4nano : public WifiBoard { esp_lcd_panel_init(disp_panel); display__ = new MipiLcdDisplay(io, disp_panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, - DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_30_4, &font_awesome_30_4}); + DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); backlight_ = new CustomBacklight(codec_i2c_bus_); backlight_->RestoreBrightness(); } @@ -229,10 +225,6 @@ class WaveshareEsp32p4nano : public WifiBoard { return backlight_; } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } }; DECLARE_BOARD(WaveshareEsp32p4nano); diff --git a/main/boards/waveshare-p4-wifi6-touch-lcd-4b/esp32-p4-wifi6-touch-lcd-4b.cc b/main/boards/waveshare-p4-wifi6-touch-lcd-4b/esp32-p4-wifi6-touch-lcd-4b.cc index ca4d91fbb..20ec9f437 100644 --- a/main/boards/waveshare-p4-wifi6-touch-lcd-4b/esp32-p4-wifi6-touch-lcd-4b.cc +++ b/main/boards/waveshare-p4-wifi6-touch-lcd-4b/esp32-p4-wifi6-touch-lcd-4b.cc @@ -19,9 +19,6 @@ #include "esp_lcd_touch_gt911.h" #define TAG "WaveshareEsp32p44b" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class WaveshareEsp32p44b : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -115,8 +112,7 @@ class WaveshareEsp32p44b : public WifiBoard { esp_lcd_panel_init(disp_panel); display_ = new MipiLcdDisplay(io, disp_panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, - DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_30_4, &font_awesome_30_4}); + DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeTouch() { @@ -194,10 +190,6 @@ class WaveshareEsp32p44b : public WifiBoard { return &backlight; } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } }; DECLARE_BOARD(WaveshareEsp32p44b); diff --git a/main/boards/waveshare-p4-wifi6-touch-lcd-xc/esp32-p4-wifi6-touch-lcd-xc.cc b/main/boards/waveshare-p4-wifi6-touch-lcd-xc/esp32-p4-wifi6-touch-lcd-xc.cc index 5e1954975..db8370be5 100644 --- a/main/boards/waveshare-p4-wifi6-touch-lcd-xc/esp32-p4-wifi6-touch-lcd-xc.cc +++ b/main/boards/waveshare-p4-wifi6-touch-lcd-xc/esp32-p4-wifi6-touch-lcd-xc.cc @@ -19,9 +19,6 @@ #include "esp_lcd_touch_gt911.h" #define TAG "WaveshareEsp32p4xc" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class WaveshareEsp32p4xc : public WifiBoard { private: i2c_master_bus_handle_t i2c_bus_; @@ -117,8 +114,7 @@ class WaveshareEsp32p4xc : public WifiBoard { esp_lcd_panel_init(disp_panel); display_ = new MipiLcdDisplay(io, disp_panel, DISPLAY_WIDTH, DISPLAY_HEIGHT, - DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_30_4, &font_awesome_30_4}); + DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeTouch() { @@ -170,11 +166,6 @@ class WaveshareEsp32p4xc : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/waveshare-s3-audio-board/esp32-s3-audio_board.cc b/main/boards/waveshare-s3-audio-board/esp32-s3-audio_board.cc index b0153d539..e1a406755 100644 --- a/main/boards/waveshare-s3-audio-board/esp32-s3-audio_board.cc +++ b/main/boards/waveshare-s3-audio-board/esp32-s3-audio_board.cc @@ -26,10 +26,6 @@ #define LCD_OPCODE_READ_CMD (0x0BULL) #define LCD_OPCODE_WRITE_COLOR (0x32ULL) -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - - class CustomBoard : public WifiBoard { private: Button boot_button_; @@ -113,8 +109,7 @@ class CustomBoard : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeJd9853Display() { @@ -147,8 +142,7 @@ class CustomBoard : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_mirror(panel, true, false)); ESP_ERROR_CHECK(esp_lcd_panel_swap_xy(panel, true)); display_ = new SpiLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -209,11 +203,6 @@ class CustomBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual Led* GetLed() override { static CircularStrip led(BUILTIN_LED_GPIO, 6); return &led; diff --git a/main/boards/waveshare-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc b/main/boards/waveshare-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc index 578d6a0ae..9053154bf 100644 --- a/main/boards/waveshare-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc +++ b/main/boards/waveshare-s3-touch-amoled-1.75/esp32-s3-touch-amoled-1.75.cc @@ -26,9 +26,6 @@ #define TAG "WaveshareEsp32s3TouchAMOLED1inch75" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class Pmic : public Axp2101 { public: Pmic(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : Axp2101(i2c_bus, addr) { @@ -110,8 +107,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_y, bool swap_xy) : SpiLcdDisplay(io_handle, panel_handle, - width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_30_4, &font_awesome_30_4}) { + width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); lv_obj_set_style_pad_left(status_bar_, LV_HOR_RES* 0.1, 0); lv_obj_set_style_pad_right(status_bar_, LV_HOR_RES* 0.1, 0); @@ -314,11 +310,6 @@ class WaveshareEsp32s3TouchAMOLED1inch75 : public WifiBoard { InitializeTools(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/waveshare-s3-touch-amoled-2.06/esp32-s3-touch-amoled-2.06.cc b/main/boards/waveshare-s3-touch-amoled-2.06/esp32-s3-touch-amoled-2.06.cc index 3b19e4518..15facfcb1 100644 --- a/main/boards/waveshare-s3-touch-amoled-2.06/esp32-s3-touch-amoled-2.06.cc +++ b/main/boards/waveshare-s3-touch-amoled-2.06/esp32-s3-touch-amoled-2.06.cc @@ -25,9 +25,6 @@ #define TAG "WaveshareEsp32s3TouchAMOLED2inch06" -LV_FONT_DECLARE(font_puhui_basic_30_4); -LV_FONT_DECLARE(font_awesome_30_4); - class Pmic : public Axp2101 { public: Pmic(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : Axp2101(i2c_bus, addr) { @@ -106,8 +103,7 @@ class CustomLcdDisplay : public SpiLcdDisplay { bool mirror_y, bool swap_xy) : SpiLcdDisplay(io_handle, panel_handle, - width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy, - {&font_puhui_basic_30_4, &font_awesome_30_4}) { + width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) { DisplayLockGuard lock(this); lv_obj_set_style_pad_left(status_bar_, LV_HOR_RES* 0.1, 0); lv_obj_set_style_pad_right(status_bar_, LV_HOR_RES* 0.1, 0); @@ -300,11 +296,6 @@ class WaveshareEsp32s3TouchAMOLED2inch06 : public WifiBoard { InitializeTools(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_30_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static BoxAudioCodec audio_codec( i2c_bus_, diff --git a/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.cc b/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.cc index e78cdeca7..5e00bee58 100644 --- a/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.cc +++ b/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.cc @@ -1,25 +1,21 @@ -#include "custom_lcd_display.h" +#include "config.h" +#include "custom_lcd_display.h" #include "lcd_display.h" +#include "assets/lang_config.h" +#include "settings.h" +#include "board.h" #include +#include + +#include +#include +#include +#include #include #include #include -#include "assets/lang_config.h" -#include -#include "settings.h" - -#include "esp_lcd_panel_io.h" - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/semphr.h" - -#include "config.h" - -#include "board.h" - #define TAG "CustomLcdDisplay" @@ -45,7 +41,6 @@ #define LIGHT_BORDER_COLOR lv_color_hex(0xE0E0E0) // Light gray border #define LIGHT_LOW_BATTERY_COLOR lv_color_black() // Black for light mode - // Define dark theme colors static const ThemeColors DARK_THEME = { .background = DARK_BACKGROUND_COLOR, @@ -80,8 +75,6 @@ static uint16_t *trans_act; static uint16_t *trans_buf_1; static uint16_t *trans_buf_2; - - bool CustomLcdDisplay::lvgl_port_flush_io_ready_callback(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx) { BaseType_t taskAwake = pdFALSE; @@ -99,7 +92,6 @@ void CustomLcdDisplay::lvgl_port_flush_callback(lv_display_t *drv, const lv_area esp_lcd_panel_handle_t panel_handle = (esp_lcd_panel_handle_t)lv_display_get_driver_data(drv); assert(panel_handle != NULL); - size_t len = lv_area_get_size(area); lv_draw_sw_rgb565_swap(color_map, len); @@ -249,11 +241,9 @@ void CustomLcdDisplay::lvgl_port_flush_callback(lv_display_t *drv, const lv_area lv_disp_flush_ready(drv); } - CustomLcdDisplay::CustomLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, - int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style) - : LcdDisplay(panel_io, panel, width, height, style) { + int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy) + : LcdDisplay(panel_io, panel, width, height) { // width_ = width; // height_ = height; diff --git a/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.h b/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.h index 1ee5af26b..c3a990070 100644 --- a/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.h +++ b/main/boards/waveshare-s3-touch-lcd-3.5b/custom_lcd_display.h @@ -8,8 +8,7 @@ class CustomLcdDisplay : public LcdDisplay { public: CustomLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, - bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style); + bool mirror_x, bool mirror_y, bool swap_xy); private: static bool lvgl_port_flush_io_ready_callback(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx); static void lvgl_port_flush_callback(lv_display_t *drv, const lv_area_t *area, uint8_t *color_map); diff --git a/main/boards/waveshare-s3-touch-lcd-3.5b/waveshare-s3-touch-lcd-3.5b.cc b/main/boards/waveshare-s3-touch-lcd-3.5b/waveshare-s3-touch-lcd-3.5b.cc index aa917184a..ac15d5518 100644 --- a/main/boards/waveshare-s3-touch-lcd-3.5b/waveshare-s3-touch-lcd-3.5b.cc +++ b/main/boards/waveshare-s3-touch-lcd-3.5b/waveshare-s3-touch-lcd-3.5b.cc @@ -21,7 +21,6 @@ #include "axp2101.h" #include "power_save_timer.h" - #include "esp_lcd_axs15231b.h" #include "custom_lcd_display.h" @@ -34,11 +33,6 @@ #define TAG "waveshare_lcd_3_5b" - -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - - static const axs15231b_lcd_init_cmd_t lcd_init_cmds[] = { {0xBB, (uint8_t[]){0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5}, 8, 0}, {0xA0, (uint8_t[]){0xC0, 0x10, 0x00, 0x02, 0x00, 0x00, 0x04, 0x3F, 0x20, 0x05, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00}, 17, 0}, @@ -75,8 +69,6 @@ static const axs15231b_lcd_init_cmd_t lcd_init_cmds[] = { {0x2a, (uint8_t[]){0x00, 0x00, 0x01, 0x3f}, 4, 0}, {0x2b, (uint8_t[]){0x00, 0x00, 0x01, 0xdf}, 4, 0}}; - - class Pmic : public Axp2101 { public: Pmic(i2c_master_bus_handle_t i2c_bus, uint8_t addr) : Axp2101(i2c_bus, addr) { @@ -260,8 +252,7 @@ class CustomBoard : public WifiBoard { .vendor_config = (void *)&vendor_config, }; esp_lcd_new_panel_axs15231b(panel_io, &panel_config, &panel); - - + esp_lcd_panel_reset(panel); esp_lcd_panel_init(panel); @@ -271,8 +262,7 @@ class CustomBoard : public WifiBoard { esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); display_ = new CustomLcdDisplay(panel_io, panel, - DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void InitializeButtons() { @@ -285,7 +275,6 @@ class CustomBoard : public WifiBoard { }); } - void InitializeTouch() { esp_lcd_touch_handle_t tp; @@ -318,7 +307,6 @@ class CustomBoard : public WifiBoard { ESP_LOGI(TAG, "Touch panel initialized successfully"); } - public: CustomBoard() : boot_button_(BOOT_BUTTON_GPIO) { @@ -340,11 +328,6 @@ class CustomBoard : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec(i2c_bus_, I2C_NUM_0, AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_GPIO_MCLK, AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN, @@ -363,6 +346,7 @@ class CustomBoard : public WifiBoard { virtual Camera* GetCamera() override { return camera_; } + #if PMIC_ENABLE virtual bool GetBatteryLevel(int &level, bool& charging, bool& discharging) override { static bool last_discharging = false; diff --git a/main/boards/xingzhi-cube-0.85tft-ml307/xingzhi-cube-0.85tft-ml307.cc b/main/boards/xingzhi-cube-0.85tft-ml307/xingzhi-cube-0.85tft-ml307.cc index 40bfdb1e5..2d2f36e61 100644 --- a/main/boards/xingzhi-cube-0.85tft-ml307/xingzhi-cube-0.85tft-ml307.cc +++ b/main/boards/xingzhi-cube-0.85tft-ml307/xingzhi-cube-0.85tft-ml307.cc @@ -22,10 +22,6 @@ #define TAG "XINGZHI_CUBE_0_85TFT_ML307" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - - static const nv3023_lcd_init_cmd_t lcd_init_cmds[] = { {0xff, (uint8_t[]){0xa5}, 1, 0}, {0x3E, (uint8_t[]){0x09}, 1, 0}, @@ -140,7 +136,6 @@ class XINGZHI_CUBE_0_85TFT_ML307 : public Ml307Board { buscfg.max_transfer_sz = DISPLAY_HEIGHT * 80 *sizeof(uint16_t); ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); } - void InitializeButtons() { boot_button_.OnClick([this]() { @@ -174,8 +169,7 @@ class XINGZHI_CUBE_0_85TFT_ML307 : public Ml307Board { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); display_ = new SpiLcdDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void Initializegpio21_45() { @@ -208,11 +202,6 @@ class XINGZHI_CUBE_0_85TFT_ML307 : public Ml307Board { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); diff --git a/main/boards/xingzhi-cube-0.85tft-wifi/xingzhi-cube-0.85tft-wifi.cc b/main/boards/xingzhi-cube-0.85tft-wifi/xingzhi-cube-0.85tft-wifi.cc index 4fde3b5d2..37d56e4b4 100644 --- a/main/boards/xingzhi-cube-0.85tft-wifi/xingzhi-cube-0.85tft-wifi.cc +++ b/main/boards/xingzhi-cube-0.85tft-wifi/xingzhi-cube-0.85tft-wifi.cc @@ -22,10 +22,6 @@ #define TAG "XINGZHI_CUBE_0_85TFT_WIFI" -LV_FONT_DECLARE(font_puhui_basic_16_4); -LV_FONT_DECLARE(font_awesome_16_4); - - static const nv3023_lcd_init_cmd_t lcd_init_cmds[] = { {0xff, (uint8_t[]){0xa5}, 1, 0}, {0x3E, (uint8_t[]){0x09}, 1, 0}, @@ -140,7 +136,6 @@ class XINGZHI_CUBE_0_85TFT_WIFI : public WifiBoard { buscfg.max_transfer_sz = DISPLAY_HEIGHT * 80 *sizeof(uint16_t); ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO)); } - void InitializeButtons() { boot_button_.OnClick([this]() { @@ -178,8 +173,7 @@ class XINGZHI_CUBE_0_85TFT_WIFI : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); display_ = new SpiLcdDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_16_4, &font_awesome_16_4}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } void Initializegpio21_45() { @@ -212,11 +206,6 @@ class XINGZHI_CUBE_0_85TFT_WIFI : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_16_4_EMOJI_32); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); diff --git a/main/boards/xingzhi-cube-0.96oled-ml307/xingzhi-cube-0.96oled-ml307.cc b/main/boards/xingzhi-cube-0.96oled-ml307/xingzhi-cube-0.96oled-ml307.cc index 28be5fbea..18f7a01a4 100644 --- a/main/boards/xingzhi-cube-0.96oled-ml307/xingzhi-cube-0.96oled-ml307.cc +++ b/main/boards/xingzhi-cube-0.96oled-ml307/xingzhi-cube-0.96oled-ml307.cc @@ -20,10 +20,6 @@ #define TAG "XINGZHI_CUBE_0_96OLED_ML307" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - - class XINGZHI_CUBE_0_96OLED_ML307 : public DualNetworkBoard { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -130,8 +126,7 @@ class XINGZHI_CUBE_0_96OLED_ML307 : public DualNetworkBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { @@ -201,11 +196,6 @@ class XINGZHI_CUBE_0_96OLED_ML307 : public DualNetworkBoard { InitializeButtons(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/xingzhi-cube-0.96oled-wifi/xingzhi-cube-0.96oled-wifi.cc b/main/boards/xingzhi-cube-0.96oled-wifi/xingzhi-cube-0.96oled-wifi.cc index d23e02966..d2f068516 100644 --- a/main/boards/xingzhi-cube-0.96oled-wifi/xingzhi-cube-0.96oled-wifi.cc +++ b/main/boards/xingzhi-cube-0.96oled-wifi/xingzhi-cube-0.96oled-wifi.cc @@ -21,10 +21,6 @@ #define TAG "XINGZHI_CUBE_0_96OLED_WIFI" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - - class XINGZHI_CUBE_0_96OLED_WIFI : public WifiBoard { private: i2c_master_bus_handle_t display_i2c_bus_; @@ -131,8 +127,7 @@ class XINGZHI_CUBE_0_96OLED_WIFI : public WifiBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { @@ -192,11 +187,6 @@ class XINGZHI_CUBE_0_96OLED_WIFI : public WifiBoard { InitializeButtons(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc b/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc index 7dca9ee5f..72aff953c 100644 --- a/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc +++ b/main/boards/xingzhi-cube-1.54tft-ml307/xingzhi-cube-1.54tft-ml307.cc @@ -19,10 +19,6 @@ #define TAG "XINGZHI_CUBE_1_54TFT_ML307" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class XINGZHI_CUBE_1_54TFT_ML307 : public DualNetworkBoard { private: Button boot_button_; @@ -161,8 +157,7 @@ class XINGZHI_CUBE_1_54TFT_ML307 : public DualNetworkBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel_, true)); display_ = new SpiLcdDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -179,11 +174,6 @@ class XINGZHI_CUBE_1_54TFT_ML307 : public DualNetworkBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); diff --git a/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc b/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc index 1c16ed1e4..8827b37e2 100644 --- a/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc +++ b/main/boards/xingzhi-cube-1.54tft-wifi/xingzhi-cube-1.54tft-wifi.cc @@ -19,10 +19,6 @@ #define TAG "XINGZHI_CUBE_1_54TFT_WIFI" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class XINGZHI_CUBE_1_54TFT_WIFI : public WifiBoard { private: Button boot_button_; @@ -151,8 +147,7 @@ class XINGZHI_CUBE_1_54TFT_WIFI : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel_, true)); display_ = new SpiLcdDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); } public: @@ -168,11 +163,6 @@ class XINGZHI_CUBE_1_54TFT_WIFI : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); diff --git a/main/boards/xmini-c3-4g/xmini_c3_4g_board.cc b/main/boards/xmini-c3-4g/xmini_c3_4g_board.cc index cd3e80f28..eca19186b 100644 --- a/main/boards/xmini-c3-4g/xmini_c3_4g_board.cc +++ b/main/boards/xmini-c3-4g/xmini_c3_4g_board.cc @@ -20,10 +20,6 @@ #define TAG "XminiC3Board" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - - class XminiC3Board : public Ml307Board { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -138,8 +134,7 @@ class XminiC3Board : public Ml307Board { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { @@ -178,11 +173,6 @@ class XminiC3Board : public Ml307Board { InitializeTools(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/xmini-c3-v3/xmini_c3_board.cc b/main/boards/xmini-c3-v3/xmini_c3_board.cc index f0ea219bc..c1f7cb77f 100644 --- a/main/boards/xmini-c3-v3/xmini_c3_board.cc +++ b/main/boards/xmini-c3-v3/xmini_c3_board.cc @@ -20,10 +20,6 @@ #define TAG "XminiC3Board" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - - class XminiC3Board : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -130,8 +126,7 @@ class XminiC3Board : public WifiBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { @@ -174,11 +169,6 @@ class XminiC3Board : public WifiBoard { InitializeTools(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_S_PUHUI_COMMON_14_1); - return &assets; - } - virtual Led* GetLed() override { static SingleLed led(BUILTIN_LED_GPIO); return &led; diff --git a/main/boards/xmini-c3/xmini_c3_board.cc b/main/boards/xmini-c3/xmini_c3_board.cc index 40a6f9ab8..91bd0502a 100644 --- a/main/boards/xmini-c3/xmini_c3_board.cc +++ b/main/boards/xmini-c3/xmini_c3_board.cc @@ -19,9 +19,6 @@ #define TAG "XminiC3Board" -LV_FONT_DECLARE(font_puhui_basic_14_1); -LV_FONT_DECLARE(font_awesome_14_1); - class XminiC3Board : public WifiBoard { private: i2c_master_bus_handle_t codec_i2c_bus_; @@ -116,8 +113,7 @@ class XminiC3Board : public WifiBoard { ESP_LOGI(TAG, "Turning display on"); ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_, true)); - display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, - {&font_puhui_basic_14_1, &font_awesome_14_1}); + display_ = new OledDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y); } void InitializeButtons() { @@ -172,11 +168,6 @@ class XminiC3Board : public WifiBoard { return display_; } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_S_PUHUI_COMMON_14_1); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static Es8311AudioCodec audio_codec(codec_i2c_bus_, I2C_NUM_0, AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_GPIO_MCLK, AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN, diff --git a/main/boards/zhengchen-1.54tft-ml307/zhengchen-1.54tft-ml307.cc b/main/boards/zhengchen-1.54tft-ml307/zhengchen-1.54tft-ml307.cc index 03a71b1d9..48845a1ed 100644 --- a/main/boards/zhengchen-1.54tft-ml307/zhengchen-1.54tft-ml307.cc +++ b/main/boards/zhengchen-1.54tft-ml307/zhengchen-1.54tft-ml307.cc @@ -19,10 +19,6 @@ #define TAG "ZHENGCHEN_1_54TFT_ML307" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class ZHENGCHEN_1_54TFT_ML307 : public DualNetworkBoard { private: Button boot_button_; @@ -154,8 +150,7 @@ class ZHENGCHEN_1_54TFT_ML307 : public DualNetworkBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel_, true)); display_ = new ZHENGCHEN_LcdDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); display_->SetupHighTempWarningPopup(); } @@ -173,11 +168,6 @@ class ZHENGCHEN_1_54TFT_ML307 : public DualNetworkBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - virtual AudioCodec* GetAudioCodec() override { static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN); diff --git a/main/boards/zhengchen-1.54tft-wifi/zhengchen-1.54tft-wifi.cc b/main/boards/zhengchen-1.54tft-wifi/zhengchen-1.54tft-wifi.cc index b228fafd6..282a62862 100644 --- a/main/boards/zhengchen-1.54tft-wifi/zhengchen-1.54tft-wifi.cc +++ b/main/boards/zhengchen-1.54tft-wifi/zhengchen-1.54tft-wifi.cc @@ -19,10 +19,6 @@ #define TAG "ZHENGCHEN_1_54TFT_WIFI" -LV_FONT_DECLARE(font_puhui_basic_20_4); -LV_FONT_DECLARE(font_awesome_20_4); - - class ZHENGCHEN_1_54TFT_WIFI : public WifiBoard { private: Button boot_button_; @@ -91,7 +87,6 @@ class ZHENGCHEN_1_54TFT_WIFI : public WifiBoard { app.ToggleChatState(); }); - // 设置开机按钮的长按事件(直接进入配网模式) boot_button_.OnLongPress([this]() { // 唤醒电源保存定时器 @@ -166,8 +161,7 @@ class ZHENGCHEN_1_54TFT_WIFI : public WifiBoard { ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel_, true)); display_ = new ZHENGCHEN_LcdDisplay(panel_io_, panel_, DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, - DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY, - {&font_puhui_basic_20_4, &font_awesome_20_4}); + DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY); display_->SetupHighTempWarningPopup(); } @@ -188,11 +182,6 @@ class ZHENGCHEN_1_54TFT_WIFI : public WifiBoard { GetBacklight()->RestoreBrightness(); } - virtual Assets* GetAssets() override { - static Assets assets(ASSETS_XIAOZHI_PUHUI_COMMON_20_4_EMOJI_64); - return &assets; - } - // 获取音频编解码器 virtual AudioCodec* GetAudioCodec() override { // 静态实例化NoAudioCodecSimplex类 diff --git a/main/display/lcd_display.cc b/main/display/lcd_display.cc index a90f1fefe..d9bac6453 100644 --- a/main/display/lcd_display.cc +++ b/main/display/lcd_display.cc @@ -64,14 +64,18 @@ const ThemeColors LIGHT_THEME = { .low_battery = LIGHT_LOW_BATTERY_COLOR }; - +LV_FONT_DECLARE(LVGL_TEXT_FONT); +LV_FONT_DECLARE(LVGL_ICON_FONT); LV_FONT_DECLARE(font_awesome_30_4); -LcdDisplay::LcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, DisplayStyle style) +LcdDisplay::LcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height) : panel_io_(panel_io), panel_(panel) { width_ = width; height_ = height; - style_ = style; + style_ = { + .text_font = &LVGL_TEXT_FONT, + .icon_font = &LVGL_ICON_FONT, + }; // Load theme from settings Settings settings("display", false); @@ -99,9 +103,8 @@ LcdDisplay::LcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_ } SpiLcdDisplay::SpiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, - int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style) - : LcdDisplay(panel_io, panel, width, height, style) { + int width, int height, int offset_x, int offset_y, bool mirror_x, bool mirror_y, bool swap_xy) + : LcdDisplay(panel_io, panel, width, height) { // draw white std::vector buffer(width_, 0xFFFF); @@ -176,9 +179,8 @@ SpiLcdDisplay::SpiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_h // RGB LCD实现 RgbLcdDisplay::RgbLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, - bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style) - : LcdDisplay(panel_io, panel, width, height, style) { + bool mirror_x, bool mirror_y, bool swap_xy) + : LcdDisplay(panel_io, panel, width, height) { // draw white std::vector buffer(width_, 0xFFFF); @@ -238,9 +240,8 @@ RgbLcdDisplay::RgbLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_h MipiLcdDisplay::MipiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, - bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style) - : LcdDisplay(panel_io, panel, width, height, style) { + bool mirror_x, bool mirror_y, bool swap_xy) + : LcdDisplay(panel_io, panel, width, height) { // Set the display to on ESP_LOGI(TAG, "Turning display on"); diff --git a/main/display/lcd_display.h b/main/display/lcd_display.h index 341424c63..2664cadec 100644 --- a/main/display/lcd_display.h +++ b/main/display/lcd_display.h @@ -49,7 +49,7 @@ class LcdDisplay : public Display { protected: // 添加protected构造函数 - LcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, DisplayStyle style); + LcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height); public: ~LcdDisplay(); @@ -68,8 +68,7 @@ class SpiLcdDisplay : public LcdDisplay { public: SpiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, - bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style); + bool mirror_x, bool mirror_y, bool swap_xy); }; // RGB LCD显示器 @@ -77,8 +76,7 @@ class RgbLcdDisplay : public LcdDisplay { public: RgbLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, - bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style); + bool mirror_x, bool mirror_y, bool swap_xy); }; // MIPI LCD显示器 @@ -86,8 +84,7 @@ class MipiLcdDisplay : public LcdDisplay { public: MipiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, int offset_x, int offset_y, - bool mirror_x, bool mirror_y, bool swap_xy, - DisplayStyle style); + bool mirror_x, bool mirror_y, bool swap_xy); }; #endif // LCD_DISPLAY_H diff --git a/main/display/oled_display.cc b/main/display/oled_display.cc index f18702275..bc3a1cba4 100644 --- a/main/display/oled_display.cc +++ b/main/display/oled_display.cc @@ -11,14 +11,19 @@ #define TAG "OledDisplay" +LV_FONT_DECLARE(LVGL_TEXT_FONT); +LV_FONT_DECLARE(LVGL_ICON_FONT); LV_FONT_DECLARE(font_awesome_30_1); OledDisplay::OledDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, - int width, int height, bool mirror_x, bool mirror_y, DisplayStyle style) + int width, int height, bool mirror_x, bool mirror_y) : panel_io_(panel_io), panel_(panel) { width_ = width; height_ = height; - style_ = style; + style_ = { + .text_font = &LVGL_TEXT_FONT, + .icon_font = &LVGL_ICON_FONT, + }; ESP_LOGI(TAG, "Initialize LVGL"); lvgl_port_cfg_t port_cfg = ESP_LVGL_PORT_INIT_CONFIG(); diff --git a/main/display/oled_display.h b/main/display/oled_display.h index 5842a3758..a30f440a0 100644 --- a/main/display/oled_display.h +++ b/main/display/oled_display.h @@ -27,8 +27,7 @@ class OledDisplay : public Display { void SetupUI_128x32(); public: - OledDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, bool mirror_x, bool mirror_y, - DisplayStyle style); + OledDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handle_t panel, int width, int height, bool mirror_x, bool mirror_y); ~OledDisplay(); virtual void SetChatMessage(const char* role, const char* content) override; diff --git a/scripts/flash.sh b/scripts/flash.sh deleted file mode 100755 index 444ed47f9..000000000 --- a/scripts/flash.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -esptool.py -p /dev/ttyACM0 -b 2000000 write_flash 0 ../releases/v0.9.9_bread-compact-wifi/merged-binary.bin diff --git a/scripts/release.py b/scripts/release.py index fdceedf62..a67f9ce98 100755 --- a/scripts/release.py +++ b/scripts/release.py @@ -105,6 +105,8 @@ def release(board_type, board_config, config_filename="config.json"): # Append sdkconfig with open("sdkconfig", "a") as f: f.write("\n") + f.write("# Release\n") + f.write("CONFIG_FLASH_DEFAULT_ASSETS=n\n") for append in sdkconfig_append: f.write(f"{append}\n") # Build with macro BOARD_NAME defined to name