menu "Hardware Drivers Config"

    config SOC_STM32L4R5ZI
        bool
        select SOC_SERIES_STM32L4
        select RT_USING_COMPONENTS_INIT
        select RT_USING_USER_MAIN
        default y

    menu "Onboard Peripheral Drivers"
        config BSP_USING_STLINK_TO_USART
            bool "Enable STLINK TO USART (lpuart1)"
            select BSP_USING_UART
            select BSP_USING_LPUART1
            default y
    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 RT_SERIAL_USING_DMA
                    bool "Enable uart using DMA"
                    default n
                config BSP_USING_LPUART1
                    bool "Enable LPUART1"
                    default y
                config BSP_LPUART1_RX_USING_DMA
                    bool "Enable LPUART1 RX DMA"
                    depends on BSP_USING_LPUART1 && RT_SERIAL_USING_DMA
                    default n
                config BSP_USING_UART1
                    bool "Enable UART1"
                    default n
                config BSP_UART1_RX_USING_DMA
                    bool "Enable UART1 RX 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_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_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_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
            endif
            
        config BSP_USING_ON_CHIP_FLASH
            bool "Enable on-chip FLASH"
            default n
        
        config BSP_USING_USBD
            bool "Enable OTGFS as USB device"
            select RT_USING_USB_DEVICE
            default n
            
        config BSP_USING_WDT
            bool "Enable Watchdog Timer"
            select RT_USING_WDT
            default n    
            
        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

            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
            
        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
                config BSP_USING_SPI3
                    bool "Enable SPI3 BUS"
                    default n
                config BSP_SPI3_TX_USING_DMA
                    bool "Enable SPI3 TX DMA"
                    depends on BSP_USING_SPI3
                    default n
                config BSP_SPI3_RX_USING_DMA
                    bool "Enable SPI3 RX DMA"
                    depends on BSP_USING_SPI3
                    select BSP_SPI3_TX_USING_DMA
                    default n
            endif

        menuconfig BSP_USING_I2C
            bool "Enable using I2C BUS (software simulation)"
            default n
            select RT_USING_I2C
            select RT_USING_I2C_BITOPS
            select RT_USING_PIN
            if BSP_USING_I2C
                menuconfig BSP_USING_I2C1
                    bool "Enable I2C1 BUS (software simulation)"
                    default n
                    if BSP_USING_I2C1
                        config BSP_I2C1_SCL_PIN
                            int "i2c1 scl pin number"
                            range 1 144
                            default 100
                        config BSP_I2C1_SDA_PIN
                            int "I2C1 sda pin number"
                            range 1 144
                            default 101
                    endif
                menuconfig BSP_USING_I2C2
                    bool "Enable I2C2 BUS (software simulation)"
                    default n
                    if BSP_USING_I2C2
                        config BSP_I2C2_SCL_PIN
                            int "i2c2 scl pin number"
                            range 1 144
                            default 10
                        config BSP_I2C2_SDA_PIN
                            int "I2C2 sda pin number"
                            range 1 144
                            default 11
                    endif
            endif
            
        menuconfig BSP_USING_TIM
            bool "Enable timer"
            default n
            select RT_USING_HWTIMER
            if BSP_USING_TIM
                config BSP_USING_TIM1
                    bool "Enable TIM1"
                    default n
                config BSP_USING_TIM2
                    bool "Enable TIM2"
                    default n
                config BSP_USING_TIM3
                    bool "Enable TIM3"
                    default n
            endif
        
        menuconfig BSP_USING_PWM
            bool "Using PWM"
            default n
            select RT_USING_PWM
            if BSP_USING_PWM
                config BSP_USING_PWM1
                    bool "Using PWM1"
                    default n
                    if BSP_USING_PWM1
                        config BSP_USING_PWM1_CH1
                            bool "Enable Channel 1 (PA8)"
                            default n
                        config BSP_USING_PWM1_CH2
                            bool "Enable Channel 2 (PA9)"
                            default n
                        config BSP_USING_PWM1_CH3
                            bool "Enable Channel 3 (PA10)"
                            default n
                        config BSP_USING_PWM1_CH4
                            bool "Enable Channel 4 (PA11)"
                            default n
                    endif
            endif
    endmenu

    menu "Board extended module Drivers"

    endmenu

endmenu