menu "Xiaozhi Assistant"

config OTA_URL
    string "Default OTA URL"
    default "https://api.tenclass.net/xiaozhi/ota/"
    help
        The application will access this URL to check for new firmwares and server address.

choice
    prompt "Flash Assets"
    default FLASH_DEFAULT_ASSETS if !USE_EMOTE_MESSAGE_STYLE
    default FLASH_EXPRESSION_ASSETS if USE_EMOTE_MESSAGE_STYLE
    help
        Select the assets to flash.

    config FLASH_NONE_ASSETS
        bool "Do not flash assets"
    config FLASH_DEFAULT_ASSETS
        bool "Flash Default Assets"
        depends on !USE_EMOTE_MESSAGE_STYLE
    config FLASH_CUSTOM_ASSETS
        bool "Flash Custom Assets"
    config FLASH_EXPRESSION_ASSETS
        bool "Flash Emote Assets"
        depends on USE_EMOTE_MESSAGE_STYLE
endchoice

config CUSTOM_ASSETS_FILE
    depends on FLASH_CUSTOM_ASSETS
    string "Custom Assets File"
    default "assets.bin"
    help
        The custom assets file to flash.
        It can be a local file relative to the project directory or a remote url.

choice
    prompt "Default Language"
    default LANGUAGE_ZH_CN
    help
        Select device display language

    config LANGUAGE_ZH_CN
        bool "Chinese"
    config LANGUAGE_ZH_TW
        bool "Chinese Traditional"
    config LANGUAGE_EN_US
        bool "English"
    config LANGUAGE_JA_JP
        bool "Japanese"
    config LANGUAGE_KO_KR
        bool "Korean"
    config LANGUAGE_VI_VN
        bool "Vietnamese"
    config LANGUAGE_TH_TH
        bool "Thai"
    config LANGUAGE_DE_DE
        bool "German"
    config LANGUAGE_FR_FR
        bool "French"
    config LANGUAGE_ES_ES
        bool "Spanish"
    config LANGUAGE_IT_IT
        bool "Italian"
    config LANGUAGE_RU_RU
        bool "Russian"
    config LANGUAGE_AR_SA
        bool "Arabic"
    config LANGUAGE_HI_IN
        bool "Hindi"
    config LANGUAGE_PT_PT
        bool "Portuguese"
    config LANGUAGE_PL_PL
        bool "Polish"
    config LANGUAGE_CS_CZ
        bool "Czech"
    config LANGUAGE_FI_FI
        bool "Finnish"
    config LANGUAGE_TR_TR
        bool "Turkish"
    config LANGUAGE_ID_ID
        bool "Indonesian"
    config LANGUAGE_UK_UA
        bool "Ukrainian"
    config LANGUAGE_RO_RO
        bool "Romanian"
    config LANGUAGE_BG_BG
        bool "Bulgarian"
    config LANGUAGE_CA_ES
        bool "Catalan"
    config LANGUAGE_DA_DK
        bool "Danish"
    config LANGUAGE_EL_GR
        bool "Greek"
    config LANGUAGE_FA_IR
        bool "Persian"
    config LANGUAGE_FIL_PH
        bool "Filipino"
    config LANGUAGE_HE_IL
        bool "Hebrew"
    config LANGUAGE_HR_HR
        bool "Croatian"
    config LANGUAGE_HU_HU
        bool "Hungarian"
    config LANGUAGE_MS_MY
        bool "Malay"
    config LANGUAGE_NB_NO
        bool "Norwegian"
    config LANGUAGE_NL_NL
        bool "Dutch"
    config LANGUAGE_SK_SK
        bool "Slovak"
    config LANGUAGE_SL_SI
        bool "Slovenian"
    config LANGUAGE_SV_SE
        bool "Swedish"
    config LANGUAGE_SR_RS
        bool "Serbian"
endchoice

choice BOARD_TYPE
    prompt "Board Type"
    default BOARD_TYPE_BREAD_COMPACT_WIFI
    help
        Board type. 开发板类型
    config BOARD_TYPE_BREAD_COMPACT_WIFI
        bool "Bread Compact WiFi (面包板)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_BREAD_COMPACT_WIFI_LCD
        bool "Bread Compact WiFi + LCD (面包板)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_BREAD_COMPACT_WIFI_CAM
        bool "Bread Compact WiFi + LCD + Camera (面包板)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_BREAD_COMPACT_ML307
        bool "Bread Compact ML307/EC801E (面包板 4G)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_BREAD_COMPACT_NT26
        bool "Bread Compact NT26 (面包板 4G)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_BREAD_COMPACT_ESP32
        bool "Bread Compact ESP32 DevKit (面包板)"
        depends on IDF_TARGET_ESP32
    config BOARD_TYPE_BREAD_COMPACT_ESP32_LCD
        bool "Bread Compact ESP32 DevKit + LCD (面包板)"
        depends on IDF_TARGET_ESP32
    config BOARD_TYPE_XMINI_C3_V3
        bool "Xmini C3 V3"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_XMINI_C3_4G
        bool "Xmini C3 4G"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_XMINI_C3
        bool "Xmini C3"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_ESP_KORVO2_V3
        bool "Espressif Korvo2 V3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_KORVO2_V3_RNDIS
        bool "Espressif Korvo2 V3 RNDIS"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_SPARKBOT
        bool "Espressif SparkBot"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_SENSAIRSHUTTLE
        bool "Espressif ESP-SensairShuttle"
        depends on IDF_TARGET_ESP32C5
    config BOARD_TYPE_ESP_SPOT_S3
        bool "Espressif Spot-S3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_SPOT_C5
        bool "Espressif Spot-C5"
        depends on IDF_TARGET_ESP32C5
    config BOARD_TYPE_ESP_HI
        bool "Espressif ESP-HI"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_ESP_BOX_3
        bool "Espressif ESP-BOX-3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_BOX
        bool "Espressif ESP-BOX"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_BOX_LITE
        bool "Espressif ESP-BOX-Lite"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_P4_FUNCTION_EV_BOARD
        bool "Espressif ESP-P4-Function-EV-Board"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_ESP_VOCAT
        bool "Espressif ESP-VoCat"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_KEVIN_BOX_2
        bool "Kevin Box 2"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_KEVIN_C3
        bool "Kevin C3"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_KEVIN_SP_V3_DEV
        bool "Kevin SP V3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_KEVIN_SP_V4_DEV
        bool "Kevin SP V4"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_KEVIN_YUYING_313LCD
        bool "鱼鹰科技 3.13LCD"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_CGC
        bool "CGC"
        depends on IDF_TARGET_ESP32
    config BOARD_TYPE_CGC_144
        bool "CGC 144"
        depends on IDF_TARGET_ESP32
    config BOARD_TYPE_LICHUANG_DEV_S3
        bool "立创·实战派 ESP32-S3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LICHUANG_DEV_C3
        bool "立创·实战派 ESP32-C3"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_RYMCU_BIGSMART
        bool "RYMCU BigSmart"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_EDA_TV_PRO
        bool "EDA课程案例 EDA-TV-Pro"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_EDA_ROBOT_PRO
        bool "EDA课程案例 EDA-Robot-Pro"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_EDA_SUPER_BEAR
        bool "EDA课程案例 EDA-Super-Bear"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_DF_K10
        bool "DFRobot 行空板 k10"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_DF_S3_AI_CAM
        bool "DFRobot ESP32-S3 AI智能摄像头模块"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_MAGICLICK_S3_2P4
        bool "神奇按钮 Magiclick_2.4"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_MAGICLICK_S3_2P5
        bool "神奇按钮 Magiclick_2.5"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_MAGICLICK_C3
        bool "神奇按钮 Magiclick_C3"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_MAGICLICK_C3_V2
        bool "神奇按钮 Magiclick_C3_v2"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_M5STACK_CORE_S3
        bool "M5Stack CoreS3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_M5STACK_CORE_TAB5
        bool "M5Stack Tab5"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_M5STACK_ATOM_S3_ECHO_BASE
        bool "M5Stack AtomS3 + Echo Base"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_M5STACK_ATOM_S3R_ECHO_BASE
        bool "M5Stack AtomS3R + Echo Base"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_M5STACK_ATOM_S3R_ECHO_PYRAMID
        bool "M5Stack AtomS3R + Echo Pyramid"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_M5STACK_ATOM_S3R_CAM_M12_ECHO_BASE
        bool "M5Stack AtomS3R CAM/M12 + Echo Base"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_M5STACK_ATOM_ECHOS3R
        bool "M5Stack AtomEchoS3R"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_M5STACK_CARDPUTER_ADV
        bool "M5Stack Cardputer Adv"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_M5STACK_ATOM_MATRIX_ECHO_BASE
        bool "M5Stack AtomMatrix + Echo Base"
        depends on IDF_TARGET_ESP32
    config BOARD_TYPE_WAVESHARE_ESP32_TOUCH_LCD_3_5
        bool "Waveshare ESP32-Touch-LCD-3.5"
        depends on IDF_TARGET_ESP32
    config BOARD_TYPE_WAVESHARE_ESP32_S3_CAM_XXXX
        bool "Waveshare ESP32-S3-CAM"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_AUDIO_BOARD
        bool "Waveshare ESP32-S3-Audio-Board"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_8
        bool "Waveshare ESP32-S3-Touch-AMOLED-1.8"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_43C
        bool "Waveshare ESP32-S3-Touch-AMOLED-1.43C"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_2_06
        bool "Waveshare ESP32-S3-Touch-AMOLED-2.06"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_C6_TOUCH_AMOLED_2_06
        bool "Waveshare ESP32-C6-Touch-AMOLED-2.06"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_ESP32_C6_TOUCH_AMOLED_2_16
        bool "Waveshare ESP32-C6-Touch-AMOLED-2.16"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_2_16
        bool "Waveshare ESP32-S3-Touch-AMOLED-2.16"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75
        bool "Waveshare ESP32-S3-Touch-AMOLED-1.75"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75C
        bool "Waveshare ESP32-S3-Touch-AMOLED-1.75C"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_83
        bool "Waveshare ESP32-S3-Touch-LCD-1.83"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4B
        bool "Waveshare ESP32-S3-Touch-LCD-4B"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3C
        bool "Waveshare ESP32-S3-Touch-LCD-4.3C"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85C
        bool "Waveshare ESP32-S3-Touch-LCD-1.85C"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85
        bool "Waveshare ESP32-S3-Touch-LCD-1.85"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_46
        bool "Waveshare ESP32-S3-Touch-LCD-1.46"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_C6_LCD_1_69
        bool "Waveshare ESP32-C6-LCD-1.69"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_ESP32_C6_TOUCH_LCD_1_83
        bool "Waveshare ESP32-C6-Touch-LCD-1.83"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_ESP32_C6_TOUCH_AMOLED_1_43
        bool "Waveshare ESP32-C6-Touch-AMOLOED-1.43"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_ESP32_C6_TOUCH_AMOLED_1_32
        bool "Waveshare ESP32-C6-Touch-AMOLOED-1.32"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_ESP32_C6_TOUCH_AMOLED_1_8
        bool "Waveshare ESP32-C6-Touch-AMOLED-1.8"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_32
        bool "Waveshare ESP32-S3-Touch-AMOLOED-1.32"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_3_49
        bool "Waveshare ESP32-S3-Touch-LCD-3.49"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_3_5
        bool "Waveshare ESP32-S3-Touch-LCD-3.5"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_ePaper_1_54_v1
        bool "Waveshare ESP32-S3-ePaper-1.54_v1"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_ePaper_1_54_v2
        bool "Waveshare ESP32-S3-ePaper-1.54_v2"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_ePaper_3_97
        bool "Waveshare ESP32-S3-ePaper-3.97"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_RLCD_4_2
        bool "Waveshare ESP32-S3-RLCD-4.2"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_3_5B
        bool "Waveshare ESP32-S3-Touch-LCD-3.5B"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_54
        bool "Waveshare ESP32-S3-Touch-LCD-1.54"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_S3_LCD_0_85
        bool "Waveshare ESP32-S3-LCD-0.85"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_ESP32_P4_NANO
        bool "Waveshare ESP32-P4-NANO"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4B
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4B"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4.3"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-7B"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_4C
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_5
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-3.5"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4C
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4C"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-7"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_8
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-8"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_10_1
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-10.1"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_TUDOUZI
        bool "土豆子"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LILYGO_T_CIRCLE_S3
        bool "LILYGO T-Circle-S3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_0_V1_1
        bool "LILYGO T-CameraPlus-S3_V1_0_V1_1"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_2
        bool "LILYGO T-CameraPlus-S3_V1_2"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA
        bool "LILYGO T-Display-S3-Pro-MVSRLora"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA_NO_BATTERY
        bool "LILYGO T-Display-S3-Pro-MVSRLora_No_Battery"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LILYGO_T_DISPLAY_P4
        bool "LILYGO T-Display-P4"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_MOVECALL_MOJI_ESP32S3
        bool "Movecall Moji 小智AI衍生版"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_MOVECALL_MOJI2_ESP32C5
        bool "Movecall Moji2.0 小智AI衍生版"
        depends on IDF_TARGET_ESP32C5
    config BOARD_TYPE_MOVECALL_CUICAN_ESP32S3
        bool "Movecall CuiCan 璀璨·AI吊坠"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3
        bool "正点原子DNESP32S3开发板"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3_BOX
        bool "正点原子DNESP32S3-BOX"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3_BOX0
        bool "正点原子DNESP32S3-BOX0"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3_BOX2_WIFI
        bool "正点原子DNESP32S3-BOX2-WIFI"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3_BOX2_4G
        bool "正点原子DNESP32S3-BOX2-4G"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3M_WIFI
        bool "正点原子DNESP32S3M-WIFI"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3M_4G
        bool "正点原子DNESP32S3M-4G"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ATK_DNESP32S3_BOX3
        bool "正点原子DNESP32S3-BOX3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_DU_CHATX
        bool "嘟嘟开发板CHATX(wifi)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_TAIJI_PI_S3
        bool "太极小派esp32s3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_CUBE_0_85TFT_WIFI
        bool "无名科技星智0.85(WIFI)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_CUBE_0_85TFT_ML307
        bool "无名科技星智0.85(ML307)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_CUBE_0_96OLED_WIFI
        bool "无名科技星智0.96(WIFI)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_CUBE_0_96OLED_ML307
        bool "无名科技星智0.96(ML307)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_CUBE_1_54TFT_WIFI
        bool "无名科技星智1.54(WIFI)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_CUBE_1_54TFT_ML307
        bool "无名科技星智1.54(ML307)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_METAL_1_54_WIFI
        bool "无名科技星智1.54 METAL(wifi)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_XINGZHI_ABS_2_0
        bool "无名科技星智ABS 2.0"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_SEEED_STUDIO_SENSECAP_WATCHER
        bool "Seeed Studio SenseCAP Watcher"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_DOIT_S3_AIBOX
        bool "四博智联AI陪伴盒子"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_MIXGO_NOVA
        bool "元控·青春"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_GENJUTECH_S3_1_54TFT
        bool "亘具科技1.54(s3)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_S3_LCD_EV_Board
        bool "乐鑫ESP S3 LCD EV Board开发板"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ESP_S3_LCD_EV_Board_2
        bool "乐鑫ESP S3 LCD EV Board 2开发板"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ZHENGCHEN_1_54TFT_WIFI
        bool "征辰科技1.54(WIFI)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ZHENGCHEN_1_54TFT_ML307
        bool "征辰科技1.54(ML307)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ZHENGCHEN_CAM
        bool "征辰科技AI Camera"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ZHENGCHEN_CAM_ML307
        bool "征辰科技AI Camera(ML307)"
	depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_MINSI_K08_DUAL
        bool "敏思科技K08(DUAL)"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_SPOTPEAR_ESP32_S3_1_54_MUMA
        bool "Spotpear ESP32-S3-1.54-MUMA"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_SPOTPEAR_ESP32_S3_1_28_BOX
        bool "Spotpear ESP32-S3-1.28-BOX"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_OTTO_ROBOT
        bool "ottoRobot"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_ELECTRON_BOT
        bool "electronBot"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_JIUCHUAN
        bool "九川智能"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LABPLUS_MPYTHON_V3
        bool "labplus mpython_v3 board"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_LABPLUS_LEDONG_V2
        bool "labplus ledong_v2 board"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_SURFER_C3_1_14TFT
        bool "Surfer-C3-1.14TFT"
        depends on IDF_TARGET_ESP32C3
    config BOARD_TYPE_YUNLIAO_S3
        bool "小智云聊-S3"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WIRELESS_TAG_WTP4C5MP07S
        bool "Wireless-Tag WTP4C5MP07S"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_AIPI_LITE
        bool "AIPI-Lite"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_HU_087
        bool "HU-087"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_Freenove_ESP32S3_DISPLAY_2_8_LCD
        bool "Freenove ESP32S3 Display 2.8 LCD"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_AI_VOX3
        bool "NULLLAB-AI-VOX3"
        depends on IDF_TARGET_ESP32S3
endchoice

choice
    depends on BOARD_TYPE_LILYGO_T_DISPLAY_P4
    prompt "Select the screen type"
    default SCREEN_TYPE_HI8561
        config SCREEN_TYPE_HI8561
            bool "HI8561"
        config SCREEN_TYPE_RM69A10
            bool "RM69A10"
endchoice

choice
    depends on BOARD_TYPE_LILYGO_T_DISPLAY_P4
    prompt "Select the color format of the screen"
    default SCREEN_PIXEL_FORMAT_RGB565
        config SCREEN_PIXEL_FORMAT_RGB565
            bool "RGB565"
        config SCREEN_PIXEL_FORMAT_RGB888
            bool "RGB888"
endchoice

choice ESP_S3_LCD_EV_Board_Version_TYPE
    depends on BOARD_TYPE_ESP_S3_LCD_EV_Board
    prompt "EV_BOARD Type"
    default ESP_S3_LCD_EV_Board_1p4
    config ESP_S3_LCD_EV_Board_1p4
        bool "乐鑫ESP32_S3_LCD_EV_Board-MB_V1.4"
    config ESP_S3_LCD_EV_Board_1p5
        bool "乐鑫ESP32_S3_LCD_EV_Board-MB_V1.5"
endchoice

choice DISPLAY_OLED_TYPE
    depends on BOARD_TYPE_BREAD_COMPACT_WIFI || BOARD_TYPE_BREAD_COMPACT_ML307 || BOARD_TYPE_BREAD_COMPACT_NT26 || BOARD_TYPE_BREAD_COMPACT_ESP32 || BOARD_TYPE_HU_087
    prompt "OLED Type"
    default OLED_SSD1306_128X32
    help
        OLED Monochrome Display Type
    config OLED_SSD1306_128X32
        bool "SSD1306 128*32"
    config OLED_SSD1306_128X64
        bool "SSD1306 128*64"
    config OLED_SH1106_128X64
        bool "SH1106 128*64"
endchoice

choice DISPLAY_LCD_TYPE
    depends on BOARD_TYPE_BREAD_COMPACT_WIFI_LCD || BOARD_TYPE_BREAD_COMPACT_ESP32_LCD || BOARD_TYPE_CGC || BOARD_TYPE_BREAD_COMPACT_WIFI_CAM
    prompt "LCD Type"
    default LCD_ST7789_240X320
    help
        LCD Display Type
    config LCD_ST7789_240X320
        bool "ST7789 240*320, IPS"
    config LCD_ST7789_240X320_NO_IPS
        bool "ST7789 240*320, Non-IPS"
    config LCD_ST7789_170X320
        bool "ST7789 170*320"
    config LCD_ST7789_172X320
        bool "ST7789 172*320"
    config LCD_ST7789_240X280
        bool "ST7789 240*280"
    config LCD_ST7789_240X240
        bool "ST7789 240*240"
    config LCD_ST7789_240X240_7PIN
        bool "ST7789 240*240, 7PIN"
    config LCD_ST7789_240X135
        bool "ST7789 240*135"
    config LCD_ST7735_128X160
        bool "ST7735 128*160"
    config LCD_ST7735_128X128
        bool "ST7735 128*128"
    config LCD_ST7796_320X480
        bool "ST7796 320*480 IPS"
    config LCD_ST7796_320X480_NO_IPS
        bool "ST7796 320*480, Non-IPS"
    config LCD_ILI9341_240X320
        bool "ILI9341 240*320"
    config LCD_ILI9341_240X320_NO_IPS
        bool "ILI9341 240*320, Non-IPS"
    config LCD_GC9A01_240X240
        bool "GC9A01 240*240 Circle"
    config LCD_CUSTOM
        bool "Custom LCD (自定义屏幕参数)"
endchoice

choice DISPLAY_ESP32S3_KORVO2_V3
    depends on BOARD_TYPE_ESP_KORVO2_V3 || BOARD_TYPE_ESP_KORVO2_V3_RNDIS
    prompt "ESP32S3_KORVO2_V3 LCD Type"
    default ESP32S3_KORVO2_V3_LCD_ST7789
    help
        LCD Display Type
    config ESP32S3_KORVO2_V3_LCD_ST7789
        bool "ST7789 240*280"
    config ESP32S3_KORVO2_V3_LCD_ILI9341
        bool "ILI9341 240*320"
endchoice

choice DISPLAY_ESP32S3_CAM_XXXX
    depends on BOARD_TYPE_WAVESHARE_ESP32_S3_CAM_XXXX
    prompt "ESP32S3_CAM LCD Type"
    default BSP_LCD_SIZE_2INCH
    help
        LCD Display Type
    config BSP_LCD_SIZE_2INCH
        bool "2inch Touch LCD Module"

    config BSP_LCD_SIZE_2_8INCH
        bool "2.8inch Touch LCD Module"

    config BSP_LCD_SIZE_3_5INCH
        bool "3.5inch Touch LCD Module"

    config BSP_LCD_SIZE_1_83INCH
        bool "1.83inch Touch LCD Module"
endchoice

choice DISPLAY_ESP32S3_AUDIO_BOARD
    depends on BOARD_TYPE_WAVESHARE_ESP32_S3_AUDIO_BOARD
    prompt "ESP32S3_AUDIO_BOARD LCD Type"
    default AUDIO_BOARD_LCD_JD9853
    help
        LCD Display Type
    config AUDIO_BOARD_LCD_JD9853
        bool "JD9853 320*172"
    config AUDIO_BOARD_LCD_ST7789
        bool "ST7789 240*320"
endchoice

choice DISPLAY_ESP32S3_TOUCH_LCD_1_85C
    depends on BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85C
    prompt "ESP32S3_TOUCH_LCD_1_85C version"
    default VERSION_2_0
    help
        hardware version
    config VERSION_1_0
        bool "version 1.0"
    config VERSION_2_0
        bool "version 2.0"
endchoice


choice DISPLAY_STYLE
    prompt "Select display style"
    default USE_DEFAULT_MESSAGE_STYLE
    help
        Select display style for Xiaozhi device

    config USE_DEFAULT_MESSAGE_STYLE
        bool "Enable default message style"

    config USE_WECHAT_MESSAGE_STYLE
        bool "Enable WeChat Message Style"

    config USE_EMOTE_MESSAGE_STYLE
        bool "Emote animation style"
        depends on BOARD_TYPE_ESP_BOX || BOARD_TYPE_ESP_BOX_3 \
            || BOARD_TYPE_ESP_VOCAT || BOARD_TYPE_LICHUANG_DEV_S3 || BOARD_TYPE_RYMCU_BIGSMART \
            || BOARD_TYPE_ESP_SENSAIRSHUTTLE
endchoice

config USE_MULTILINE_CHAT_MESSAGE
    bool "Use multiline chat message display (default mode only)"
    depends on USE_DEFAULT_MESSAGE_STYLE
    default n
    help
        When enabled, the chat message area in the default display mode shows
        multiple wrapped lines that grow upward from the bottom of the screen,
        with auto-adaptive height.
        When disabled (default), a single-line horizontally scrolling label
        is shown at the bottom of the screen.

choice WAKE_WORD_TYPE
    prompt "Wake Word Implementation Type"
    default USE_AFE_WAKE_WORD if (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
    default WAKE_WORD_DISABLED
    help
        Choose the type of wake word implementation to use

    config WAKE_WORD_DISABLED
        bool "Disabled"
        help
            Disable wake word detection

    config USE_ESP_WAKE_WORD
        bool "Wakenet model without AFE"
        depends on IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C5 || IDF_TARGET_ESP32C6 || (IDF_TARGET_ESP32 && SPIRAM)
        help
            Support ESP32 C3、ESP32 C5 与 ESP32 C6, and (ESP32 with PSRAM)

    config USE_AFE_WAKE_WORD
        bool "Wakenet model with AFE"
        depends on (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
        help
            Support AEC if available, requires ESP32 S3 and PSRAM

    config USE_CUSTOM_WAKE_WORD
        bool "Multinet model (Custom Wake Word)"
        depends on (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
        help
            Requires ESP32 S3 and PSRAM

endchoice

config CUSTOM_WAKE_WORD
    string "Custom Wake Word"
    default "xiao tu dou"
    depends on USE_CUSTOM_WAKE_WORD
    help
        Custom Wake Word, use pinyin for Chinese, separated by spaces

config CUSTOM_WAKE_WORD_DISPLAY
    string "Custom Wake Word Display"
    default "小土豆"
    depends on USE_CUSTOM_WAKE_WORD
    help
        Greeting sent to the server after wake word detection

config CUSTOM_WAKE_WORD_THRESHOLD
    int "Custom Wake Word Threshold (%)"
    default 20
    range 1 99
    depends on USE_CUSTOM_WAKE_WORD
    help
        Custom Wake Word Threshold, range 1-99, the smaller the more sensitive, default 20

config SEND_WAKE_WORD_DATA
    bool "Send Wake Word Data"
    default y
    depends on USE_AFE_WAKE_WORD || USE_CUSTOM_WAKE_WORD
    help
        Send wake word data to the server as the first message of the conversation and wait for response

config WAKE_WORD_DETECTION_IN_LISTENING
    bool "Enable Wake Word Detection in Listening Mode"
    default n
    depends on USE_AFE_WAKE_WORD || USE_CUSTOM_WAKE_WORD
    help
        Enable wake word detection while in listening mode.
        When enabled, the device can detect wake word during listening,
        which allows interrupting the current conversation.
        When disabled (default), wake word detection is turned off during listening.

config USE_AUDIO_PROCESSOR
    bool "Enable Audio Noise Reduction"
    default y
    depends on (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
    help
        Requires ESP32 S3 and PSRAM

config USE_DEVICE_AEC
    bool "Enable Device-Side AEC"
    default n
        depends on USE_AUDIO_PROCESSOR && (BOARD_TYPE_ESP_BOX_3 || BOARD_TYPE_ESP_BOX || BOARD_TYPE_ESP_BOX_LITE \
        || BOARD_TYPE_LICHUANG_DEV_S3 || BOARD_TYPE_RYMCU_BIGSMART || BOARD_TYPE_ESP_KORVO2_V3 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75|| BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_75C || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_83\
        || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_2_06 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4_3 \
        || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7B \
        || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_3_4C || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_4C || BOARD_TYPE_ESP_S3_LCD_EV_Board_2 || BOARD_TYPE_YUNLIAO_S3 \
        || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_7 || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_8 || BOARD_TYPE_WAVESHARE_ESP32_P4_WIFI6_TOUCH_LCD_10_1 \
        || BOARD_TYPE_ESP_VOCAT || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_3_49 || BOARD_TYPE_WAVESHARE_ESP32_S3_RLCD_4_2 || BOARD_TYPE_ZHENGCHEN_CAM || BOARD_TYPE_ZHENGCHEN_CAM_ML307 \
        || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3C || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_LCD_1_54 || BOARD_TYPE_WAVESHARE_ESP32_S3_LCD_0_85 || BOARD_TYPE_AI_VOX3 || BOARD_TYPE_WAVESHARE_ESP32_S3_TOUCH_AMOLED_1_43C)
    help
        To work properly, device-side AEC requires a clean output reference path from the speaker signal and physical acoustic isolation between the microphone and speaker.

config USE_SERVER_AEC
    bool "Enable Server-Side AEC (Unstable)"
    default n
    depends on USE_AUDIO_PROCESSOR
    help
        To work perperly, server-side AEC requires server support

config USE_AUDIO_DEBUGGER
    bool "Enable Audio Debugger"
    default n
    help
        Enable audio debugger, send audio data through UDP to the host machine

menu "WiFi Configuration Method"
    help
        WiFi Configuration Method Selection
    config USE_HOTSPOT_WIFI_PROVISIONING
        bool "Hotspot"
        default y
        help
            Use WiFi Hotspot to transmit WiFi configuration data
    config USE_ACOUSTIC_WIFI_PROVISIONING
        bool "Acoustic"
        help
            Use audio signal to transmit WiFi configuration data

    config USE_ESP_BLUFI_WIFI_PROVISIONING
        bool "Esp Blufi"
        help
            Use esp blufi protocol to transmit WiFi configuration data
        select BT_ENABLED
        select BT_BLE_42_FEATURES_SUPPORTED
        select BT_BLE_BLUFI_ENABLE
        select MBEDTLS_DHM_C
endmenu

config AUDIO_DEBUG_UDP_SERVER
    string "Audio Debug UDP Server Address"
    default "192.168.2.100:8000"
    depends on USE_AUDIO_DEBUGGER
    help
        UDP server address, format: IP:PORT, used to receive audio debugging data

config RECEIVE_CUSTOM_MESSAGE
    bool "Enable Custom Message Reception"
    default n
    help
        Enable custom message reception, allow the device to receive custom messages from the server (preferably through the MQTT protocol)

menu "Camera Configuration"
    depends on !IDF_TARGET_ESP32

    comment "Warning: Please read the help text before modifying these settings."

    config XIAOZHI_CAMERA_ALLOW_JPEG_INPUT
        bool "Allow JPEG Input"
        default n
        help
            Allow JPEG Input format for the camera.

            This option may need to be enabled when using a USB camera.

            Not currently supported when used simultaneously with XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE.

    config XIAOZHI_ENABLE_HARDWARE_JPEG_ENCODER
        bool "Enable Hardware JPEG Encoder"
        default y
        depends on SOC_JPEG_ENCODE_SUPPORTED
        help
            Use hardware JPEG encoder on ESP32-P4 to encode image to JPEG.
            See https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/peripherals/jpeg.html for more details.

    config XIAOZHI_ENABLE_HARDWARE_JPEG_DECODER
        bool "Enable Hardware JPEG Decoder"
        default n
        depends on SOC_JPEG_DECODE_SUPPORTED && XIAOZHI_CAMERA_ALLOW_JPEG_INPUT
        help
            Use hardware JPEG decoder on ESP32-P4 to decode JPEG to image.
            See https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/peripherals/jpeg.html for more details.

    config XIAOZHI_ENABLE_CAMERA_DEBUG_MODE
        bool "Enable Camera Debug Mode"
        default n
        help
            Enable camera debug mode, print camera debug information to the console.
            Only works on boards that support camera.

    config XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP
        bool "Enable software camera buffer endianness swapping"
        default n
        depends on !CAMERA_SENSOR_SWAP_PIXEL_BYTE_ORDER
        help
            This option treats the camera buffer as a uint16_t[] array and performs byte-swapping (endianness conversion) on each element.

            Should only be modified by development board integration engineers.

            **Incorrect usage may result in incorrect image colors!**

            ATTENTION: If the option CAMERA_SENSOR_SWAP_PIXEL_BYTE_ORDER is available for your sensor, please use that instead.

    menuconfig XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE
        bool "Enable Camera Image Rotation"
        default n
        depends on !XIAOZHI_CAMERA_ALLOW_JPEG_INPUT
        help
            Enable camera image rotation, rotate the camera image to the correct orientation.
            - On ESP32-P4, rotation is handled by PPA hardware.
            - On other chips, rotation is done in software with performance cost.
            - For 180° rotation, use HFlip + VFlip instead of this option.

            Not currently supported when used simultaneously with XIAOZHI_CAMERA_ALLOW_JPEG_INPUT.

    if XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE
        choice XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE
            prompt "Camera Image Rotation Angle (clockwise)"
            default XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE_90
            help
                Camera image rotation angle.
            config XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE_90
                bool "90°"
            config XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE_270
                bool "270°"
            comment "For 180° rotation, use HFlip + VFlip instead of this option"
        endchoice
    endif
endmenu

menu "TAIJIPAI_S3_CONFIG"
    depends on BOARD_TYPE_TAIJI_PI_S3
    choice I2S_TYPE_TAIJIPI_S3
        prompt "taiji-pi-S3 I2S Type"
        default TAIJIPAI_I2S_TYPE_STD
        help
            I2S 类型选择
        config TAIJIPAI_I2S_TYPE_STD
            bool "I2S Type STD"
        config TAIJIPAI_I2S_TYPE_PDM
            bool "I2S Type PDM"
    endchoice

    config I2S_USE_2SLOT
    bool "Enable I2S 2 Slot"
    default y
    help
        启动双声道
endmenu

endmenu
