menu "Hardware Drivers Config"

menu "Onboard Peripheral Drivers"

    config BSP_USING_USB_TO_USART
        bool "Enable Debuger USART (uart4)"
        select BSP_USING_UART
        select BSP_USING_UART4
        default n

    menuconfig BSP_USING_FS
        bool "Enable filesystem"
        select RT_USING_DFS
        select RT_USING_DFS_ROMFS
        default n
        if BSP_USING_FS
            config BSP_USING_SDCARD_FS
                bool "Enable SDCARD filesystem"
                select BSP_USING_SDIO_ARTPI
                select BSP_USING_SDIO1
                select RT_USING_DFS_ELMFAT
                default n
            config BSP_USING_SPI_FLASH_FS
                bool "Enable SPI FLASH filesystem"
                select BSP_USING_SPI_FLASH
                select RT_USING_MTD_NOR
                select PKG_USING_LITTLEFS
                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 n
        select RT_USING_SERIAL
        if BSP_USING_UART
            config BSP_STM32_UART_V1_TX_TIMEOUT
                int "UART TX timeout"
                default 6000
                depends on RT_USING_SERIAL_V1
                
            menuconfig BSP_USING_UART1
                bool "Enable UART1"
                default n
                if BSP_USING_UART1
                    config BSP_UART1_RX_USING_DMA
                        bool "Enable UART1 RX DMA"
                        select RT_SERIAL_USING_DMA
                        default n

                    config BSP_UART1_TX_USING_DMA
                        bool "Enable UART1 TX DMA"
                        select RT_SERIAL_USING_DMA
                        default n

                    config BSP_UART1_RX_BUFSIZE
                        int "Set UART1 RX buffer size"
                        range 64 65535
                        depends on BSP_USING_UART1
                        default 256

                    config BSP_UART1_TX_BUFSIZE
                        int "Set UART1 TX buffer size"
                        range 0 65535
                        depends on BSP_USING_UART1
                        default 0

                    config BSP_UART1_DMA_PING_BUFSIZE
                        int "Set UART1 RX DMA ping-pong buffer size"
                        range 32 65535
                        depends on RT_USING_SERIAL_V2 && BSP_UART1_RX_USING_DMA
                        default 64  
                endif

            menuconfig BSP_USING_UART3
                bool "Enable UART3"
                default n
                if BSP_USING_UART3
                    config BSP_UART3_RX_BUFSIZE
                        int "Set UART3 RX buffer size"
                        range 64 65535
                        depends on BSP_USING_UART3
                        default 256

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

            menuconfig BSP_USING_UART4
                bool "Enable UART4"
                default n
                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

            menuconfig BSP_USING_UART6
                bool "Enable UART6"
                default n
                if BSP_USING_UART6
                    config BSP_UART6_RX_BUFSIZE
                        int "Set UART6 RX buffer size"
                        range 64 65535
                        depends on BSP_USING_UART6
                        default 256

                    config BSP_UART6_TX_BUFSIZE
                        int "Set UART6 TX buffer size"
                        range 0 65535
                        depends on BSP_USING_UART6
                        default 0

                endif
        endif

    menuconfig BSP_USING_SPI
        bool "Enable SPI"
        default n
        select RT_USING_SPI
        if BSP_USING_SPI
            config BSP_USING_SPI1
                bool "Enable SPI1"
                default n
            config BSP_USING_SPI2
                bool "Enable SPI2"
                default n
            config BSP_USING_SPI3
                bool "Enable SPI3"
                default n
            config BSP_USING_SPI4
                bool "Enable SPI4"
                default n
            config BSP_USING_SPI5
                bool "Enable SPI5"
                default n
            config BSP_USING_SPI6
                bool "Enable SPI6"
                default n
        endif

    config BSP_USING_ONCHIP_RTC
        bool "Enable Onchip RTC"
        select RT_USING_RTC
        default n

    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 22
                config RT_SOFT_I2C1_SDA_PIN
                    int "swi2c1 SDA pin number"
                    default 23
            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 127
                config RT_SOFT_I2C2_SDA_PIN
                    int "swi2c2 SDA pin number"
                    default 125
            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 123
                config RT_SOFT_I2C3_SDA_PIN
                    int "swi2c3 SDA pin number"
                    default 124
            endif
        endif
    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"
                select RT_USING_DFS
                select RT_USING_DFS_ELMFAT
                default n
                if RT_USBH_MSTORAGE
                    config UDISK_MOUNTPOINT
                        string "Udisk mount dir"
                        default "/"
                endif
        endif

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

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 22 if RT_USING_SOFT_I2C1

    config RT_SOFT_I2C1_SDA_PIN_DEFAULT
        int
        default 23 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 127 if RT_USING_SOFT_I2C2

    config RT_SOFT_I2C2_SDA_PIN_DEFAULT
        int
        default 125 if RT_USING_SOFT_I2C2

    config RT_SOFT_I2C3_HAS_PIN_DEFAULT
        bool
        default y if RT_USING_SOFT_I2C3

    config RT_SOFT_I2C3_SCL_PIN_DEFAULT
        int
        default 123 if RT_USING_SOFT_I2C3

    config RT_SOFT_I2C3_SDA_PIN_DEFAULT
        int
        default 124 if RT_USING_SOFT_I2C3

endmenu
