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_ECHOEAR
        bool "EchoEar"
        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_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_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_ATOM_MATRIX_ECHO_BASE
        bool "M5Stack AtomMatrix + Echo Base"
        depends on IDF_TARGET_ESP32
    config BOARD_TYPE_WAVESHARE_S3_AUDIO_BOARD
        bool "Waveshare ESP32-S3-Audio-Board"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_8
        bool "Waveshare ESP32-S3-Touch-AMOLED-1.8"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_2_06
        bool "Waveshare ESP32-S3-Touch-AMOLED-2.06"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_2_06
        bool "Waveshare ESP32-C6-Touch-AMOLED-2.06"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_75
        bool "Waveshare ESP32-S3-Touch-AMOLED-1.75"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_83
        bool "Waveshare ESP32-S3-Touch-LCD-1.83"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_4B
        bool "Waveshare ESP32-S3-Touch-LCD-4B"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_4_3C
        bool "Waveshare ESP32-S3-Touch-LCD-4.3C"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_85C
        bool "Waveshare ESP32-S3-Touch-LCD-1.85C"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_85
        bool "Waveshare ESP32-S3-Touch-LCD-1.85"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_46
        bool "Waveshare ESP32-S3-Touch-LCD-1.46"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_C6_LCD_1_69
        bool "Waveshare ESP32-C6-LCD-1.69"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_C6_TOUCH_LCD_1_83
        bool "Waveshare ESP32-C6-Touch-LCD-1.83"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_43
        bool "Waveshare ESP32-C6-Touch-AMOLOED-1.43"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_32
        bool "Waveshare ESP32-C6-Touch-AMOLOED-1.32"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_8
        bool "Waveshare ESP32-C6-Touch-AMOLED-1.8"
        depends on IDF_TARGET_ESP32C6
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_32
        bool "Waveshare ESP32-S3-Touch-AMOLOED-1.32"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_49
        bool "Waveshare ESP32-S3-Touch-LCD-3.49"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_5
        bool "Waveshare ESP32-S3-Touch-LCD-3.5"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_ePaper_1_54
        bool "Waveshare ESP32-S3-ePaper-1.54"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_RLCD_4_2
        bool "Waveshare ESP32-S3-RLCD-4.2"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_5B
        bool "Waveshare ESP32-S3-Touch-LCD-3.5B"
        depends on IDF_TARGET_ESP32S3
    config BOARD_TYPE_WAVESHARE_P4_NANO
        bool "Waveshare ESP32-P4-NANO"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_4B
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4B"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_7B
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-7B"
        depends on IDF_TARGET_ESP32P4
    config BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_XC
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C or ESP32-P4-WIFI6-Touch-LCD-4C"
        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_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_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
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_WAVESHARE_P4_NANO || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_XC || 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_TYPE_800_1280_10_1_INCH
        bool "Waveshare 101M-8001280-IPS-CT-K Display"
    config LCD_TYPE_800_1280_10_1_INCH_A
        bool "Waveshare 10.1-DSI-TOUCH-A Display"
    config LCD_TYPE_800_800_3_4_INCH
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C with 800*800 3.4inch round display"
    config LCD_TYPE_720_720_4_INCH
        bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4C with 720*720 4inch round display"
    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_AUDIO_BOARD
    depends on BOARD_TYPE_WAVESHARE_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_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_ECHOEAR || BOARD_TYPE_LICHUANG_DEV_S3 \
            || BOARD_TYPE_ESP_SENSAIRSHUTTLE
endchoice

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 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_ESP_KORVO2_V3 || BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_75 || BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_83\
        || BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_2_06 || BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_7B \
        || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_XC || BOARD_TYPE_ESP_S3_LCD_EV_Board_2 || BOARD_TYPE_YUNLIAO_S3 \
        || BOARD_TYPE_ECHOEAR || BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_49 || BOARD_TYPE_WAVESHARE_S3_RLCD_4_2 || BOARD_TYPE_ZHENGCHEN_CAM || BOARD_TYPE_ZHENGCHEN_CAM_ML307 \
        || BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_4_3C)
    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
