menu "Hardware Drivers Config"

menu "Onboard Peripheral Drivers"

    config BSP_USING_STLINK_TO_USART
        bool "Enable STLINK TO USART (uart4)"
        select BSP_USING_UART
        select BSP_USING_UART4
        default y

    config BSP_USING_EXTI
        bool "Enable exti sample"
        default n

    config BSP_USING_PMIC
        bool "Enable PMIC"
        select RT_USING_I2C
        select BSP_USING_SOFT_I2C
        select BSP_USING_SOFT_I2C3
        default y

    config BSP_USING_PWR
        bool "Enable PM (power control)"
        default n

    config BSP_USING_RCC
        bool "Enable rcc use sample"
        default n

    config BSP_USING_OPENAMP
        bool "Enable OpenAMP"
        default n

    menuconfig BSP_USING_RS485
        bool "Enable RS485 "
        default n
        if BSP_USING_RS485
            comment "set rts pin number "
            config BSP_RS485_RTS_PIN
                int "RS485 rts pin number"
                range 1 176
                default 5

            config RS485_UART_DEVICE_NAME
            string "the uart name for rs485"
            default "uart3"
        endif

    config BSP_USING_GBE
        bool "Enable Ethernet"
        default n
        select RT_USING_LWIP

    config BSP_USING_SDMMC
        bool "Enable SDMMC (sd card or sdio wifi)"
        default n
        select RT_USING_SDIO
        select RT_USING_DFS
        select RT_USING_DFS_ELMFAT
        if BSP_USING_SDMMC
            config BSP_USING_SDIO1
                bool "Enable SDIO1 (sd card)"
                default n
            config BSP_USING_SDIO2
                select BSP_USING_RTC
                bool "Enable SDIO2 (sdio wifi)"
                default n
        endif

    config BSP_USING_RTC
        bool "Enable RTC"
        default n

    menuconfig BSP_USING_AUDIO
        bool "Enable Audio Device"
        select RT_USING_AUDIO
        select BSP_USING_PMIC
        select BSP_USING_SDMMC
        select RT_USING_I2C
        select BSP_USING_SOFT_I2C
        select BSP_USING_SOFT_I2C4
        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

    config RT_SOFT_I2C3_HAS_PIN_DEFAULT
        bool
        default y if RT_USING_SOFT_I2C3

    config RT_SOFT_I2C3_SCL_PIN_DEFAULT
        int
        default 180 if RT_USING_SOFT_I2C3

    config RT_SOFT_I2C3_SDA_PIN_DEFAULT
        int
        default 181 if RT_USING_SOFT_I2C3

    config RT_SOFT_I2C4_HAS_PIN_DEFAULT
        bool
        default y if RT_USING_SOFT_I2C4

    config RT_SOFT_I2C4_SCL_PIN_DEFAULT
        int
        default 60 if RT_USING_SOFT_I2C4

    config RT_SOFT_I2C4_SDA_PIN_DEFAULT
        int
        default 95 if RT_USING_SOFT_I2C4

endmenu

menu "On-chip Peripheral Drivers"
    config BSP_USING_GPIO
        bool "Enable GPIO"
        select RT_USING_PIN
        default y

    config BSP_USING_WWDG
        bool "Enable WWDG"
        select RT_USING_WWDG
        default n

    menuconfig BSP_USING_UART
        bool "Enable UART"
        select RT_USING_SERIAL
        default y
        if BSP_USING_UART
            config BSP_STM32_UART_V1_TX_TIMEOUT
                int "UART TX timeout"
                default 2000
                depends on RT_USING_SERIAL_V1
                
            menuconfig BSP_USING_UART3
                bool "Enable UART3"
                default y
                if BSP_USING_UART3
                    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_UART3_RX_BUFSIZE
                        int "Set UART3 RX buffer size"
                        range 64 65535
                        depends on RT_USING_SERIAL_V2
                        default 256

                    config BSP_UART3_TX_BUFSIZE
                        int "Set UART3 TX buffer size"
                        range 0 65535
                        depends on RT_USING_SERIAL_V2
                        default 0

                    config BSP_UART3_DMA_PING_BUFSIZE
                        int "Set UART3 RX DMA ping-pong buffer size"
                        range 32 65535
                        depends on RT_USING_SERIAL_V2 && BSP_UART3_RX_USING_DMA
                        default 64    
                endif

            menuconfig BSP_USING_UART4
                bool "Enable UART4"
                default y
                if BSP_USING_UART4
                    config BSP_UART4_RX_USING_DMA
                        bool "Enable UART4 RX DMA"
                        select RT_SERIAL_USING_DMA
                        default n

                    config BSP_UART4_TX_USING_DMA
                        bool "Enable UART4 TX DMA"
                        select RT_SERIAL_USING_DMA
                        default n

                    config BSP_UART4_RX_BUFSIZE
                        int "Set UART4 RX buffer size"
                        range 64 65535
                        depends on BSP_USING_UART4
                        default 256

                    config BSP_UART4_TX_BUFSIZE
                        int "Set UART4 TX buffer size"
                        range 0 65535
                        depends on BSP_USING_UART4
                        default 0

                    config BSP_UART4_DMA_PING_BUFSIZE
                        int "Set UART4 RX DMA ping-pong buffer size"
                        range 32 65535
                        depends on RT_USING_SERIAL_V2 && BSP_UART4_RX_USING_DMA
                        default 64                        
                endif

        endif

    menuconfig BSP_USING_TIM
        bool "Enable timer"
        default n
        select RT_USING_CLOCK_TIME
        if BSP_USING_TIM
            config BSP_USING_TIM14
                bool "Enable TIM14"
                default n

            config BSP_USING_TIM16
                bool "Enable TIM16"
                default n

            config BSP_USING_TIM17
                bool "Enable TIM17"
                default n

        endif
    menuconfig BSP_USING_LPTIM
        bool "Enable lptimer"
        default n
        select RT_USING_LPTIMER
        if BSP_USING_LPTIM
            config BSP_USING_LPTIM1
                bool "Enable LPTIM1"
                default n
        endif

    menuconfig BSP_USING_PWM
        bool "Enable PWM"
        default n
        select RT_USING_PWM
        if BSP_USING_PWM
        menuconfig BSP_USING_PWM4
            bool "Enable timer4 output PWM"
            default n
            if BSP_USING_PWM4
                config BSP_USING_PWM4_CH2
                    bool "Enable PWM4 channel2"
                    default n
            endif
        endif

    menuconfig BSP_USING_ADC
        bool "Enable ADC"
        default n
        select RT_USING_ADC
        if BSP_USING_ADC
            config BSP_USING_ADC2
                bool "Enable ADC2"
                select BSP_USING_PMIC
                default n
        endif

    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_SOFT_I2C
        bool "Enable software I2C (swi2c)"
        default n
        select RT_USING_I2C
        select RT_USING_SOFT_I2C
        if BSP_USING_SOFT_I2C
        menuconfig BSP_USING_SOFT_I2C1
            bool "Enable software I2C1 Bus (swi2c1)"
            default n
            select RT_USING_SOFT_I2C1
            if BSP_USING_SOFT_I2C1
                config RT_SOFT_I2C1_SCL_PIN
                    int "swi2c1 SCL pin number"
                    default 55
                config RT_SOFT_I2C1_SDA_PIN
                    int "swi2c1 SDA pin number"
                    default 111
            endif

        menuconfig BSP_USING_SOFT_I2C2
            bool "Enable software I2C2 Bus (swi2c2)"
            default n
            select RT_USING_SOFT_I2C2
            if BSP_USING_SOFT_I2C2
                config RT_SOFT_I2C2_SCL_PIN
                    int "swi2c2 SCL pin number"
                    default 116
                config RT_SOFT_I2C2_SDA_PIN
                    int "swi2c2 SDA pin number"
                    default 117
            endif

        menuconfig BSP_USING_SOFT_I2C3
            bool "Enable software I2C3 Bus (swi2c3)"
            default n
            select RT_USING_SOFT_I2C3
            if BSP_USING_SOFT_I2C3
                config RT_SOFT_I2C3_SCL_PIN
                    int "swi2c3 SCL pin number"
                    default 180
                config RT_SOFT_I2C3_SDA_PIN
                    int "swi2c3 SDA pin number"
                    default 181
            endif

        menuconfig BSP_USING_SOFT_I2C4
            bool "Enable software I2C4 Bus (swi2c4)"
            default n
            select RT_USING_SOFT_I2C4
            if BSP_USING_SOFT_I2C4
                config RT_SOFT_I2C4_SCL_PIN
                    int "swi2c4 SCL pin number"
                    default 60
                config RT_SOFT_I2C4_SDA_PIN
                    int "swi2c4 SDA pin number"
                    default 95
            endif
        endif
    menuconfig BSP_USING_SPI
        bool "Enable SPI BUS"
        select RT_USING_SPI
        default n
        if BSP_USING_SPI
            config BSP_USING_SPI5
                bool "Enable SPI5 BUS"
                default n

            config BSP_SPI5_TX_USING_DMA
                bool "Enable SPI5 TX DMA"
                depends on BSP_USING_SPI5
                default n

            config BSP_SPI5_RX_USING_DMA
                bool "Enable SPI5 RX DMA"
                depends on BSP_USING_SPI5
                select BSP_SPI5_TX_USING_DMA
                default n
        endif

 source "$(BSP_DIR)/../libraries/HAL_Drivers/drivers/Kconfig"

endmenu

menu "Board extended module Drivers"

endmenu

    config RT_SOFT_I2C1_HAS_PIN_DEFAULT
        bool
        default y if RT_USING_SOFT_I2C1

    config RT_SOFT_I2C1_SCL_PIN_DEFAULT
        int
        default 55 if RT_USING_SOFT_I2C1

    config RT_SOFT_I2C1_SDA_PIN_DEFAULT
        int
        default 111 if RT_USING_SOFT_I2C1

    config RT_SOFT_I2C2_HAS_PIN_DEFAULT
        bool
        default y if RT_USING_SOFT_I2C2

    config RT_SOFT_I2C2_SCL_PIN_DEFAULT
        int
        default 116 if RT_USING_SOFT_I2C2

    config RT_SOFT_I2C2_SDA_PIN_DEFAULT
        int
        default 117 if RT_USING_SOFT_I2C2

endmenu
