from building import *

cwd = GetCurrentDir()

objs = []

# add the general drivers.
src = Split('''
board.c
''')

# add gpio code
if GetDepend('RT_USING_PIN'):
    src += ['drv_gpio.c']

# add serial driver code
if  GetDepend('BSP_USING_UART0') or GetDepend('BSP_USING_UART1') or GetDepend('BSP_USING_UART2') or GetDepend('BSP_USING_UART3') or \
    GetDepend('BSP_USING_UART4') or GetDepend('BSP_USING_UART5') or \
    GetDepend('BSP_USING_USART0') or GetDepend('BSP_USING_USART1') or GetDepend('BSP_USING_USART2') or GetDepend('BSP_USING_USART3') or \
    GetDepend('BSP_USING_USART4') or GetDepend('BSP_USING_USART5'):
    src += ['drv_uart.c']

# add spi driver code
if  GetDepend('BSP_USING_SPI0') or GetDepend('BSP_USING_SPI1') or GetDepend('BSP_USING_SPI2'):
    src += ['drv_spi.c']

# add i2c driver code
if  GetDepend('BSP_USING_I2C0') or GetDepend('BSP_USING_I2C1'):
    src += ['drv_i2c.c']

# add can driver code
if  GetDepend('BSP_USING_CAN') or GetDepend('BSP_USING_CAN0') or GetDepend('RT_USING_CAN'):
    src += ['drv_can.c']

# add adc driver code
if GetDepend(['BSP_USING_ADC0']) or GetDepend('BSP_USING_ADC1'):
    src += ['drv_adc.c']

# add rtc driver code
if GetDepend(['BSP_USING_RTC']):
    src += ['drv_rtc.c']

# add spi flash driver code
if GetDepend('BSP_USING_SPI_FLASH'):
    src += ['drv_spiflash.c']

# add hwtimer driver code
if GetDepend('BSP_USING_AD16C4T0_HWTIMER') or GetDepend('BSP_USING_AD16C4T1_HWTIMER') or \
    GetDepend('BSP_USING_GP32C4T0_HWTIMER') or GetDepend('BSP_USING_GP32C4T1_HWTIMER') or \
    GetDepend('BSP_USING_GP16C4T0_HWTIMER') or GetDepend('BSP_USING_GP16C4T1_HWTIMER') or \
    GetDepend('BSP_USING_BS16T0_HWTIMER') or GetDepend('BSP_USING_BS16T1_HWTIMER'):
    src += ['drv_hwtimer.c']

# add pwm driver code
if GetDepend('BSP_USING_AD16C4T0_PWM') or GetDepend('BSP_USING_AD16C4T1_PWM') or \
    GetDepend('BSP_USING_GP32C4T0_PWM') or GetDepend('BSP_USING_GP32C4T1_PWM') or \
    GetDepend('BSP_USING_GP16C4T0_PWM') or GetDepend('BSP_USING_GP16C4T1_PWM'):
    src += ['drv_pwm.c']

# add pm driver code
if GetDepend(['BSP_USING_PM']):
    src += ['drv_pm.c']

CPPPATH = [cwd]
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
objs = objs + group

src   = []
cwd   = GetCurrentDir()
include_path = [cwd + '/ES']

if GetDepend('BSP_USING_EXAMPLE_ADC_VOL'):
    src += ['bsp_driver_example/adc_vol_sample.c']

if GetDepend('BSP_USING_EXAMPLE_HWTIMER'):
    src += ['bsp_driver_example/hwtimer_sample.c']

if GetDepend('BSP_USING_EXAMPLE_I2C'):
    src += ['bsp_driver_example/i2c_sample.c']

if GetDepend('BSP_USING_EXAMPLE_I2C_E2PROM'):
    src += ['bsp_driver_example/i2c_e2_sample.c']

if GetDepend('BSP_USING_EXAMPLE_LED_BLINK'):
    src += ['bsp_driver_example/led_blink_sample.c']

if GetDepend('BSP_USING_EXAMPLE_PIN_BEEP'):
    src += ['bsp_driver_example/pin_beep_sample.c']

if GetDepend('BSP_USING_EXAMPLE_PWM_LED'):
    src += ['bsp_driver_example/pwm_led_sample.c']

if GetDepend('BSP_USING_EXAMPLE_RTC'):
    src += ['bsp_driver_example/rtc_sample.c']

if GetDepend('BSP_USING_EXAMPLE_UART'):
    src += ['bsp_driver_example/uart_sample.c']

if GetDepend('BSP_USING_EXAMPLE_UART_DMA'):
    src += ['bsp_driver_example/uart_dma_sample.c']

if GetDepend('BSP_USING_EXAMPLE_SPI'):
    src += ['bsp_driver_example/spi_sample.c']

if GetDepend('BSP_USING_EXAMPLE_CAN'):
    src += ['bsp_driver_example/can_sample.c']

if GetDepend('BSP_USING_EXAMPLE_PM'):
    src += ['bsp_driver_example/pm_sample.c']

group = DefineGroup('bsp-drivers-test-samples', src, depend = [''], CPPPATH = include_path)

objs = objs + group
Return('objs')