menu "Hardware Drivers Config"

menu "Onboard Peripheral Drivers"

    config BSP_USING_ARDUINO
        bool "Compatible with Arduino Ecosystem (RTduino)"
        select PKG_USING_RTDUINO
        select BSP_USING_STLINK_TO_USART
        select BSP_USING_UART1
        select BSP_USING_UART2
        select BSP_USING_GPIO
        select BSP_USING_ADC
        select BSP_USING_ADC3
        select BSP_USING_DAC
        select BSP_USING_DAC1
        select BSP_USING_PWM
        select BSP_USING_PWM1
        select BSP_USING_PWM1_CH2
        select BSP_USING_PWM1_CH3
        select BSP_USING_PWM2
        select BSP_USING_PWM2_CH3
        select BSP_USING_PWM2_CH4
        select BSP_USING_PWM4
        select BSP_USING_PWM4_CH1
        select BSP_USING_I2C
        select BSP_USING_I2C4
        select BSP_USING_I2C5
        select BSP_USING_SOFT_SPI
        select BSP_USING_SOFT_SPI1
        imply RTDUINO_USING_SERVO
        imply RTDUINO_USING_WIRE
        imply RTDUINO_USING_SPI
        default n

    config BSP_USING_USB_TO_USART
        bool "Enable USB TO USART (uart1)"
        select BSP_USING_UART
        select BSP_USING_UART1
        default y

    config BSP_USING_COM2
        bool "Enable COM2 (uart2 pin conflict with Ethernet and PWM)"
        depends on (!BSP_USING_ETH && !BSP_USING_PWM)
        select BSP_USING_UART
        select BSP_USING_UART2
        default n

    config BSP_USING_COM3
        bool "Enable COM3 (uart3)"
        select BSP_USING_UART
        select BSP_USING_UART3
        default n

    menuconfig BSP_USING_RS485
        bool "Enable RS485 (uart6)"
        select BSP_USING_UART
        select BSP_USING_UART6
        default n
        if BSP_USING_RS485
            comment "set rts pin number "
            config BSP_RS485_RTS_PIN
                int "RS485 rts pin number"
                range 0 143
                default 104

            config RS485_UART_DEVICE_NAME
            string "the uart name for rs485"
            default "uart6"

        endif

    config BSP_USING_SRAM
        bool "Enable SRAM"
        select BSP_USING_EXT_FMC_IO
        select BSP_USING_FMC
        default n

    config BSP_USING_ONBOARD_LCD
        bool "Enable LCD(ST7787)"
        select BSP_USING_SRAM
        default n
        if BSP_USING_ONBOARD_LCD
            config BSP_USING_ONBOARD_LCD_PWM_BL
                bool "Enable pwm background light"
                default y
                select BSP_USING_PWM
                select BSP_USING_PWM14
                select BSP_USING_PWM14_CH1
        endif

    config BSP_USING_ONBOARD_LED_MATRIX
        bool "Enable Led MATRIX"
        default n
        select BSP_USING_PWM
        select BSP_USING_PWM3
        select BSP_USING_PWM3_CH2
        if BSP_USING_ONBOARD_LED_MATRIX
            config BSP_USING_LED_MATRIX_RS485_DEMO
                bool "use led matrix rs485 example"
                default n
                select BSP_USING_RS485
        endif

    config BSP_USING_LVGL
        bool "Enable LVGL for LCD"
        select BSP_USING_ONBOARD_LCD
        select PKG_USING_LVGL
        default n

    if BSP_USING_LVGL
        config BSP_USING_LVGL_DEMO
            bool "Enable LVGL demo"
            select PKG_LVGL_USING_DEMOS
            default y
    endif

    config BSP_USING_SPI_FLASH
        bool "Enable SPI FLASH (W25Q64 spi2)"
        select BSP_USING_SPI
        select BSP_USING_SPI2
        select RT_USING_SFUD
        select RT_SFUD_USING_SFDP
        default n

    config BSP_USING_EEPROM
        bool "Enable I2C EEPROM (i2c1)"
        select BSP_USING_I2C1
        default n

    config BSP_USING_ENC28j60
        bool "Enable Ethernet 28j60"
        default n
        select BSP_USING_SPI
        select BSP_USING_SPI1
        select RT_USING_ENC28J60

    menuconfig BSP_USING_FS
        bool "Enable File System"
        select RT_USING_DFS
        select RT_USING_DFS_ROMFS
        default n

        if BSP_USING_FS
            config BSP_USING_SDCARD_FATFS
                bool "Enable SDCARD (FATFS)"
                select BSP_USING_SDIO
                select RT_USING_DFS_ELMFAT
                default n
            if BSP_USING_SDCARD_FATFS
                menuconfig BSP_USING_FS_AUTO_MOUNT
                    bool "Enable filesystem auto mount"
                    default y
            endif

            config BSP_USING_FLASH_FATFS
                bool "Enable FAL filesystem partition base on W25Q64"
                select BSP_USING_FAL
                default n
            if BSP_USING_FLASH_FATFS
                menuconfig BSP_USING_FLASH_FS_AUTO_MOUNT
                    bool "Enable filesystem auto mount"
                    default y
            endif
        endif

    config BSP_USING_FAL
        bool "Enable FAL (enable on-chip flash and spi2 flash)"
        select BSP_USING_SPI_FLASH
        select RT_USING_FAL
        select FAL_DEBUG_CONFIG
        select FAL_PART_HAS_TABLE_CFG
        select FAL_USING_SFUD_PORT
        select BSP_USING_ON_CHIP_FLASH

    if BSP_USING_FAL
        menuconfig BSP_USING_BOOTLOADER
        bool "Enable bootloader partition table"
        default n
    endif


    config BSP_USING_EASYFLASH
        bool "Enable Easy Flash base on FAL"
        select BSP_USING_FAL
        select PKG_USING_EASYFLASH
        default n

    menuconfig BSP_USING_RW007_WLAN
        bool "Enable Rw007 Wlan Base on SPI2"
        default n
        select PKG_USING_RW007
        select BSP_USING_SPI
        select BSP_USING_SPI2
        if BSP_USING_RW007_WLAN && PKG_USING_RW007
            config RW007_SPI_MAX_HZ
                int "RW007 SPI Max Hz"
                default 30000000
            config RW007_CS_PIN
                int "RW007 CS pin index"
                default 90
            config RW007_BOOT0_PIN
                int "RW007 BOOT0 pin index (same as spi clk pin)"
                default 29
            config RW007_BOOT1_PIN
                int "RW007 BOOT1 pin index (same as spi cs pin)"
                default 90
            config RW007_INT_BUSY_PIN
                int "RW007 INT/BUSY pin index"
                default 107
            config RW007_RST_PIN
                int "RW007 RESET pin index"
                default 111
        endif

    config BSP_USING_AHT21
        bool "Enable AHT21(i2c3)"
        select BSP_USING_I2C
        select BSP_USING_I2C3
        select PKG_USING_SENSORS_DRIVERS
        select PKG_USING_AHT10
        default n

    config BSP_USING_AP3216C
        bool "Enable AP3216C(i2c2)"
        select BSP_USING_I2C
        select BSP_USING_I2C2
        select PKG_USING_SENSORS_DRIVERS
        select PKG_USING_AP3216C
        default n

    config BSP_USING_ICM20608
        bool "Enable ICM20608(i2c2)"
        select BSP_USING_I2C
        select BSP_USING_I2C2
        select PKG_USING_SENSORS_DRIVERS
        select PKG_USING_ICM20608
        default n

    config BSP_USING_USB_MOUSE
        bool "Enable Usb Mouse(usb hid device)"
        select BSP_USING_USBD
        select RT_USB_DEVICE_HID
        select RT_USB_DEVICE_HID_MOUSE
        select BSP_USING_ICM20608

    menuconfig BSP_USING_CAN
        bool "Enable On Board CAN"
        select RT_USING_CAN
        default n
        if BSP_USING_CAN
            config BSP_USING_CAN1
            bool "Enable On Board CAN1"
            default n
        endif

    menuconfig BSP_USING_AUDIO
        bool "Enable Audio Device"
        select RT_USING_AUDIO
        select BSP_USING_I2C
        select BSP_USING_I2C2
        default n

        if BSP_USING_AUDIO
            config BSP_USING_AUDIO_PLAY
            bool "Enable Audio Play"
            default y

            config BSP_USING_AUDIO_RECORD
            bool "Enable Audio Record"
            default n
        endif


endmenu

menu "On-chip Peripheral Drivers"

    config BSP_USING_GPIO
        bool "Enable GPIO"
        select RT_USING_PIN
        default y

    menuconfig BSP_USING_UART
        bool "Enable UART"
        default y
        select RT_USING_SERIAL
        if BSP_USING_UART
            config BSP_USING_UART1
                bool "Enable UART1"
                default y

            config BSP_UART1_RX_USING_DMA
                bool "Enable UART1 RX DMA"
                depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
                default n

            config BSP_UART1_TX_USING_DMA
                bool "Enable UART1 TX DMA"
                depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
                default n

            config BSP_USING_UART2
                bool "Enable UART2"
                default n

            config BSP_UART2_RX_USING_DMA
                bool "Enable UART2 RX DMA"
                depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
                default n

            config BSP_UART2_TX_USING_DMA
                bool "Enable UART2 TX DMA"
                depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
                default n

            config BSP_USING_UART3
                bool "Enable UART3"
                default n

            config BSP_UART3_RX_USING_DMA
                bool "Enable UART3 RX DMA"
                depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
                default n

            config BSP_UART3_TX_USING_DMA
                bool "Enable UART3 TX DMA"
                depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA
                default n

            config BSP_USING_UART4
                bool "Enable UART4"
                default n

            config BSP_UART4_RX_USING_DMA
                bool "Enable UART4 RX DMA"
                depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA
                default n

            config BSP_UART4_TX_USING_DMA
                bool "Enable UART4 TX DMA"
                depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA
                default n

            config BSP_USING_UART5
                bool "Enable UART5"
                default n

            config BSP_UART5_RX_USING_DMA
                bool "Enable UART5 RX DMA"
                depends on BSP_USING_UART5 && RT_SERIAL_USING_DMA
                default n

            config BSP_UART5_TX_USING_DMA
                bool "Enable UART5 TX DMA"
                depends on BSP_USING_UART5 && RT_SERIAL_USING_DMA
                default n

            config BSP_USING_UART6
                bool "Enable UART6"
                default n

            config BSP_UART6_RX_USING_DMA
                bool "Enable UART6 RX DMA"
                depends on BSP_USING_UART6 && RT_SERIAL_USING_DMA
                default n

            config BSP_UART6_TX_USING_DMA
                bool "Enable UART6 TX DMA"
                depends on BSP_USING_UART6 && RT_SERIAL_USING_DMA
                default n
        endif

    menuconfig BSP_USING_TIM
        bool "Enable timer"
        default n
        select RT_USING_HWTIMER
        if BSP_USING_TIM
            config BSP_USING_TIM11
                bool "Enable TIM11"
                default n

            config BSP_USING_TIM13
                bool "Enable TIM13"
                default n

            config BSP_USING_TIM14
                bool "Enable TIM14"
                default n
        endif

    menuconfig BSP_USING_PWM
        bool "Enable PWM"
        default n
        select RT_USING_PWM
        if BSP_USING_PWM
        menuconfig BSP_USING_PWM1
            bool "Enable timer1 output PWM"
            default n
            if BSP_USING_PWM1
                config BSP_USING_PWM1_CH2
                    bool "Enable PWM1 channel2"
                    default n
                config BSP_USING_PWM1_CH3
                    bool "Enable PWM1 channel3"
                    default n
            endif
        menuconfig BSP_USING_PWM2
            bool "Enable timer2 output PWM"
            default n
            if BSP_USING_PWM2
                config BSP_USING_PWM2_CH3
                    bool "Enable PWM2 channel3"
                    default n
                config BSP_USING_PWM2_CH4
                    bool "Enable PWM2 channel4"
                    default n
            endif
        menuconfig BSP_USING_PWM3
            bool "Enable timer3 output PWM"
            default n
            if BSP_USING_PWM3
                config BSP_USING_PWM3_CH2
                    bool "Enable PWM3 channel2"
                    default n
            endif
            if BSP_USING_PWM3
                config BSP_USING_PWM3_CH4
                    bool "Enable PWM3 channel4"
                    default n
            endif
        menuconfig BSP_USING_PWM4
            bool "Enable timer4 output PWM"
            default n
            if BSP_USING_PWM4
                config BSP_USING_PWM4_CH1
                    bool "Enable PWM4 channel1"
                    default n
            endif
        menuconfig BSP_USING_PWM14
            bool "Enable timer14 output PWM"
            default n
            if BSP_USING_PWM14
                config BSP_USING_PWM14_CH1
                    bool "Enable PWM14 channel1"
                    default n
            endif
        endif

    config BSP_USING_ON_CHIP_FLASH
        bool "Enable on-chip FLASH"
        default n

    menuconfig BSP_USING_SOFT_SPI
        bool "Enable soft SPI BUS"
        default n
        select RT_USING_SPI
        select RT_USING_SPI_BITOPS
        select RT_USING_PIN
        if BSP_USING_SOFT_SPI
            menuconfig BSP_USING_SOFT_SPI1
                bool "Enable soft SPI1 BUS (software simulation)"
                default n
                if BSP_USING_SOFT_SPI1
                    config BSP_S_SPI1_SCK_PIN
                        int "soft spi1 sck pin number(G,5)"
                        range 0 143
                        default 101
                    config BSP_S_SPI1_MISO_PIN
                        int "soft spi1 miso pin numbe(G,3)"
                        range 0 143
                        default 99
                    config BSP_S_SPI1_MOSI_PIN
                        int "soft spi1 mosi pin number(G,1)"
                        range 0 143
                        default 97
                endif

            menuconfig BSP_USING_SOFT_SPI2
                bool "Enable soft SPI2 BUS (software simulation)"
                default n
                if BSP_USING_SOFT_SPI2
                    config BSP_S_SPI2_SCK_PIN
                        int "soft spi2 sck pin number"
                        range 0 143
                        default 19
                    config BSP_S_SPI2_MISO_PIN
                        int "soft spi2 miso pin number"
                        range 0 143
                        default 20
                    config BSP_S_SPI2_MOSI_PIN
                        int "soft spi2 mosi pin number"
                        range 0 143
                        default 21
                endif
        endif

    menuconfig BSP_USING_SPI
        bool "Enable SPI BUS"
        default n
        select RT_USING_SPI
        if BSP_USING_SPI
            config BSP_USING_SPI1
                bool "Enable SPI1 BUS"
                default n

            config BSP_SPI1_TX_USING_DMA
                bool "Enable SPI1 TX DMA"
                depends on BSP_USING_SPI1
                default n

            config BSP_SPI1_RX_USING_DMA
                bool "Enable SPI1 RX DMA"
                depends on BSP_USING_SPI1
                select BSP_SPI1_TX_USING_DMA
                default n

            config BSP_USING_SPI2
                bool "Enable SPI2 BUS"
                default n

            config BSP_SPI2_TX_USING_DMA
                bool "Enable SPI2 TX DMA"
                depends on BSP_USING_SPI2
                default n

            config BSP_SPI2_RX_USING_DMA
                bool "Enable SPI2 RX DMA"
                depends on BSP_USING_SPI2
                select BSP_SPI2_TX_USING_DMA
                default n
        endif

    menuconfig BSP_USING_ADC
        bool "Enable ADC"
        default n
        select RT_USING_ADC
        if BSP_USING_ADC
            config BSP_USING_ADC1
                bool "Enable ADC1"
                default n
            config BSP_USING_ADC3
                bool "Enable ADC3"
                default n
        endif

    menuconfig BSP_USING_I2C
        bool "Enable I2C"
        default n
        if BSP_USING_I2C
            menuconfig BSP_USING_I2C1
                bool "Enable I2C1 BUS (software simulation)"
                default n
                select RT_USING_I2C
                select RT_USING_I2C_BITOPS
                select RT_USING_PIN
                if BSP_USING_I2C1
                    config BSP_I2C1_SCL_PIN
                        int "i2c1 scl pin number"
                        range 0 143
                        default 24
                    config BSP_I2C1_SDA_PIN
                        int "I2C1 sda pin number"
                        range 0 143
                        default 25
                endif

            menuconfig BSP_USING_I2C2
                bool "Enable I2C2 BUS for AP3216C/ICM20608/ES8388/ Onboard(software simulation)"
                default n
                select RT_USING_I2C
                select RT_USING_I2C_BITOPS
                select RT_USING_PIN
                if BSP_USING_I2C2
                    config BSP_I2C2_SCL_PIN
                        int "i2c2 scl pin number, PF1"
                        range 0 143
                        default 81
                    config BSP_I2C2_SDA_PIN
                        int "I2C2 sda pin number, PF0"
                        range 0 143
                        default 80
                endif

            menuconfig BSP_USING_I2C3
                bool "Enable I2C3 BUS for AHT21 Onboard(software simulation)"
                default n
                select RT_USING_I2C
                select RT_USING_I2C_BITOPS
                select RT_USING_PIN
                if BSP_USING_I2C3
                    config BSP_I2C3_SCL_PIN
                        int "i2c3 scl pin number, PE0"
                        range 0 143
                        default 64
                    config BSP_I2C3_SDA_PIN
                        int "I2C3 sda pin number, PE1"
                        range 0 143
                        default 65
                endif
            
            menuconfig BSP_USING_I2C4
                bool "Enable I2C4 BUS for RTduino(software simulation)"
                default n
                select RT_USING_I2C
                select RT_USING_I2C_BITOPS
                select RT_USING_PIN
                if BSP_USING_I2C4
                    config BSP_I2C4_SCL_PIN
                        int "i2c4 scl pin number, PG7"
                        range 0 143
                        default 103
                    config BSP_I2C4_SDA_PIN
                        int "I2C4 sda pin number, PD7"
                        range 0 143
                        default 55
                endif
                
            menuconfig BSP_USING_I2C5
                bool "Enable I2C5 BUS for RTduino(software simulation)"
                default n
                select RT_USING_I2C
                select RT_USING_I2C_BITOPS
                select RT_USING_PIN
                if BSP_USING_I2C5
                    config BSP_I2C5_SCL_PIN
                        int "i2c5 scl pin number, PB6"
                        range 0 143
                        default 22
                    config BSP_I2C5_SDA_PIN
                        int "I2C5 sda pin number, PB7"
                        range 0 143
                        default 23
                endif
        endif

    config BSP_USING_ONBOARD_PM
        bool "Enable Power Management"
        select RT_USING_PM
        select RT_USING_HOOK
        default n

    menuconfig BSP_USING_DAC
        bool "Enable DAC"
        default n
        select RT_USING_DAC
        if BSP_USING_DAC
            config BSP_USING_DAC1
                bool "Enable DAC1"
                default n
        endif

    menuconfig BSP_USING_ONCHIP_RTC
        bool "Enable RTC"
        select RT_USING_RTC
        default n
        if BSP_USING_ONCHIP_RTC
            choice
                prompt "Select clock source"
                default BSP_RTC_USING_LSE

                config BSP_RTC_USING_LSE
                    bool "RTC USING LSE"

                config BSP_RTC_USING_LSI
                    bool "RTC USING LSI"
            endchoice
        endif

    config BSP_USING_WDT
        bool "Enable Watchdog Timer"
        select RT_USING_WDT
        default n

    config BSP_USING_SDIO
        bool "Enable SDIO"
        select RT_USING_SDIO
        select RT_USING_DFS
        default n

    config SDIO_MAX_FREQ
        int "sdio max freq"
        range 0 24000000
        depends on BSP_USING_SDIO
        default 1000000

    config BSP_USING_USBD
        bool "Enable USB Device"
        select RT_USING_USB_DEVICE
        default n

    menuconfig BSP_USING_USBH
        bool "Enable USB Host"
        select RT_USING_USB_HOST
        default n
        if BSP_USING_USBH
            menuconfig RT_USBH_MSTORAGE
                bool "Enable Udisk Drivers"
                default n
                if RT_USBH_MSTORAGE
                    config UDISK_MOUNTPOINT
                    string "Udisk mount dir"
                    default "/"
                endif
        endif

    menuconfig BSP_USING_PULSE_ENCODER
        bool "Enable Pulse Encoder"
        default n
        select RT_USING_PULSE_ENCODER
        if BSP_USING_PULSE_ENCODER
            config BSP_USING_PULSE_ENCODER4
                bool "Enable Pulse Encoder4"
                default n

        endif

    config BSP_USING_EXT_FMC_IO
        bool
        default n

    config BSP_USING_FMC
        bool
        default n
 source "$(BSP_DIR)/libraries/HAL_Drivers/drivers/Kconfig"

endmenu

menu "Board extended module Drivers"

    config BSP_USING_TEST
        bool "Enable test driver"
        default n
        
    menuconfig BSP_USING_AT_ESP8266
        bool "Enable ESP8266(AT Command, COM3)"
        default n
        select BSP_USING_COM3
        select PKG_USING_AT_DEVICE
        select AT_DEVICE_USING_ESP8266
        select AT_DEVICE_ESP8266_SAMPLE
        select AT_DEVICE_ESP8266_SAMPLE_BSP_TAKEOVER

        if BSP_USING_AT_ESP8266

            config ESP8266_SAMPLE_WIFI_SSID
                string "WIFI ssid"
                default "rtthread"

            config ESP8266_SAMPLE_WIFI_PASSWORD
                string "WIFI password"
                default "12345678"

            config ESP8266_SAMPLE_CLIENT_NAME
                string "AT client device name (Must be 'uart3')"
                default "uart3"

            config ESP8266_SAMPLE_RECV_BUFF_LEN
                int "The maximum length of receive line buffer"
                default 512

            comment "May adjust RT_SERIAL_RB_BUFSZ up to 512 if using the Serial V1 device driver"

        endif

endmenu

endmenu