menu "Hardware Drivers Config"

config SOC_SERIES_GD32VW55x
    bool
    default y

config SOC_GD32VW553H
    bool
    select SOC_SERIES_GD32VW55x
    select RT_USING_COMPONENTS_INIT
    select RT_USING_USER_MAIN
    default y

menu "Onboard Peripheral Drivers"

    menuconfig BSP_USING_WLAN
        bool "Enable WiFi (GD32VW553H Internal)"
        select RT_USING_WIFI
        select PKG_USING_GD32VW55X_WIFI
        select RT_USING_MEMHEAP
        select RT_USING_SYSTEM_WORKQUEUE
        default n

    if BSP_USING_WLAN
        config BSP_WLAN_SSID_MAX_LENGTH
            int "WiFi SSID max length"
            range 1 32
            default 32

        config BSP_WLAN_PASSWORD_MAX_LENGTH
            int "WiFi password max length"
            range 8 64
            default 64

        config BSP_WLAN_SCAN_CACHE_NUM
            int "WiFi scan result cache number"
            range 4 32
            default 16

        # Include GD32VW55x WIFI package configuration
        osource "$(BSP_DIR)/packages/gd32vw55x-wifi/Kconfig"
    endif

endmenu

menu "On-chip Peripheral Drivers"

    config BSP_USING_GPIO
        bool "Enable GPIO"
        select RT_USING_PIN
        default n

    menuconfig BSP_USING_UART
        bool "Enable UART"
        default n
        select RT_USING_SERIAL
        if BSP_USING_UART
            config BSP_USING_UART0
                bool "Enable UART0"
                default n

            config BSP_UART0_RX_USING_DMA
                bool "Enable UART0 RX DMA"
                depends on BSP_USING_UART0
                select 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
                select 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
                select RT_SERIAL_USING_DMA
                default n
        endif

    menuconfig BSP_USING_PWM
        bool "Enable PWM"
        default n
        select RT_USING_PWM
        if BSP_USING_PWM
            config BSP_USING_PWM0
                bool "Enable PWM0"
                default y
            config BSP_USING_PWM1
                bool "Enable PWM1"
                default n
            config BSP_USING_PWM2
                bool "Enable PWM2"
                default n
            config BSP_USING_PWM15
                bool "Enable PWM15"
                default n
            config BSP_USING_PWM16
                bool "Enable PWM16"
                default n
        endif
    
    menuconfig BSP_USING_WDT
        bool "Enable WDT"
        default n
        if BSP_USING_WDT
            config BSP_USING_FWDT
                bool "Enable FWDT"
                default y
            config BSP_USING_WWDT
                bool "Enable WWDT"
                default n
            choice WDT_TYPE_SEL
                prompt "Select WDT type"
                default BSP_USING_FWDT
                config BSP_USING_FWDT
                    bool "Enable FWDT"
                config BSP_USING_WWDT
                    bool "Enable WWDT"
            endchoice
        endif
    
    menuconfig BSP_USING_HW_I2C
        bool "Enable Hardware I2C"
        default n
        select RT_USING_I2C
        if BSP_USING_HW_I2C
            config BSP_USING_HW_I2C0
                bool "Enable Hardware I2C0"
                default n

            # config i2c0 pins
            choice BSP_HW_I2C0_PIN_P_SEL
                prompt "Select I2C0 pins"
                depends on BSP_USING_HW_I2C0
                config BSP_HW_I2C0_PIN_PA2_PA3
                    bool "SCL=PA2,  SDA=PA3"
                config BSP_HW_I2C0_PIN_PA15_PC8
                    bool "SCL=PA15, SDA=PC8"
                config BSP_HW_I2C0_PIN_PB0_PB1
                    bool "SCL=PB0,  SDA=PB1"
                config BSP_HW_I2C0_PIN_PB15_PA8
                    bool "SCL=PB15, SDA=PA8"
            endchoice

            # config i2c0 clock
            config BSP_HW_I2C0_CLK
                int "I2C0 clock frequency(KHz)"
                default 100
                depends on BSP_USING_HW_I2C0
                range 10 1000

            config BSP_USING_HW_I2C1
                bool "Enable Hardware I2C1"
                default n

            # config i2c1 pins
            choice BSP_HW_I2C1_PIN_P_SEL
                prompt "Select I2C1 pins"
                depends on BSP_USING_HW_I2C1
                config BSP_HW_I2C1_PIN_PA6_PA7
                    bool "SCL=PA6,  SDA=PA7"
                config BSP_HW_I2C1_PIN_PA13_PA14
                    bool "SCL=PA13, SDA=PA14"
                config BSP_HW_I2C1_PIN_PA15_PC8
                    bool "SCL=PA15, SDA=PC8"
                config BSP_HW_I2C1_PIN_PB12_PB13
                    bool "SCL=PB12, SDA=PB13"
                config BSP_HW_I2C1_PIN_PB15_PA8
                    bool "SCL=PB15, SDA=PA8"
            endchoice

            # config i2c1 clock
            config BSP_HW_I2C1_CLK
                int "I2C1 clock frequency(KHz)"
                default 100
                depends on BSP_USING_HW_I2C1
                range 10 1000
        endif


    menuconfig BSP_USING_SPI
        bool "Enable SPI BUS"
        default n
        select RT_USING_SPI
        if BSP_USING_SPI
            config BSP_USING_SPI0
                bool "Enable SPI0 BUS"
                default n

            config BSP_SPI0_TX_USING_DMA
                bool "Enable SPI0 TX DMA"
                depends on BSP_USING_SPI0
                default n

            config BSP_SPI0_RX_USING_DMA
                bool "Enable SPI0 RX DMA"
                depends on BSP_USING_SPI0
                select BSP_SPI0_TX_USING_DMA
        endif

    menuconfig BSP_USING_HWTIMER
        bool "Enable timer"
        default n
        select RT_USING_HWTIMER
        if BSP_USING_HWTIMER
            config BSP_USING_HWTIMER0
                bool "Enable TIM0"
                default n
            config BSP_USING_HWTIMER1
                bool "Enable TIM1"
                default n
            config BSP_USING_HWTIMER2
                bool "Enable TIM2"
                default n
            config BSP_USING_HWTIMER5
                bool "Enable TIM5"
                default n
            config BSP_USING_HWTIMER15
                bool "Enable TIM15"
                default n
            config BSP_USING_HWTIMER16
                bool "Enable TIM16"
                default n
        endif

    source "$(BSP_DIR)/../libraries/gd32_drivers/Kconfig"

endmenu

menu "Board extended module Drivers"

    menuconfig BSP_USING_AT24C02
        bool "Enable AT24C02 I2C0( SCL[PA2 : 2] SDA[PA3 : 3] )"
        default n
        select BSP_USING_HW_I2C
        select BSP_USING_HW_I2C0
        select PKG_USING_AT24CXX
        select PKG_AT24CXX_EE_TYPE_AT24C02

        if BSP_USING_AT24C02
            
            config BSP_USING_AT24C02_UTEST
                bool "Enable the utest of AT24C02"
                default n
                select RT_USING_UTEST
                select RT_USING_ULOG
                select ULOG_USING_ISR_LOG

            config BSP_USING_AT24C02_INIT
                bool "Init the model and check it"
                default y

        endif

endmenu

endmenu
