import RPi.GPIO as GPIO
from uldaq import (get_daq_device_inventory, DaqDevice, AInScanFlag, ScanStatus,
                   ScanOption, create_float_buffer, InterfaceType, AiInputMode)
from time import time, sleep


def GPIO_setup(LED1_pin, LED2_pin, Button1_pin, Button2_pin):
    # LED output pins
    GPIO.setmode(GPIO.BOARD)

    GPIO.setup(LED1_pin, GPIO.OUT)  # 1
    GPIO.output(LED1_pin, GPIO.LOW)
    GPIO.setup(LED2_pin, GPIO.OUT)  # 2
    GPIO.output(LED2_pin, GPIO.LOW)

    LED_status = [False, False]

    # switch controlled input
    GPIO.setup(Button1_pin, GPIO.IN)
    GPIO.setup(Button2_pin, GPIO.IN)

    # GPIO.setup(Button1_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    # GPIO.setup(Button2_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    return LED_status


def main():
    LED1_pin = 11
    LED2_pin = 13
    Button1_pin = 16
    Button2_pin = 18

    LED_status = GPIO_setup(LED1_pin, LED2_pin, Button1_pin, Button2_pin)

    LED1_t = time()
    LED1_t_interval = 2

    LED2_t = time()
    LED2_t_interval = 1

    t0 = time()

    # loop_t = time()

    while time() - t0 < 30:
        # print(time() - loop_t)
        # LED1 blink every 2 sec
        if time() - LED1_t < .1 and LED_status[0] == False:
            LED_status[0] = True
            GPIO.output(LED1_pin, GPIO.HIGH)
        if time() - LED1_t >= .1 and LED_status[0] == True:
            LED_status[0] = False
            GPIO.output(LED1_pin, GPIO.LOW)

        if time() - LED1_t >= LED1_t_interval:
            LED1_t = time()


        # LED blink every 1 sec
        if time() - LED2_t < .1 and LED_status[1] == False:
            LED_status[1] = True
            GPIO.output(LED2_pin, GPIO.HIGH)
        if time() - LED2_t >= .1 and LED_status[1] == True:
            LED_status[1] = False
            GPIO.output(LED2_pin, GPIO.LOW)

        if time() - LED2_t >= LED2_t_interval:
            LED2_t = time()


        # button press check !!!
        if GPIO.input(Button1_pin) == GPIO.HIGH:
            print('button 1 pressed')

        if GPIO.input(Button2_pin) == GPIO.HIGH:
            print('button 2 pressed')
            if GPIO.input(Button1_pin) == GPIO.HIGH:
                if LED_status[0] == False:
                    GPIO.output(LED1_pin, GPIO.HIGH)
                if LED_status[1] == False:
                    GPIO.output(LED2_pin, GPIO.HIGH)
                sleep(2)
                break

        # loop_t = time()


    GPIO.cleanup()

if __name__ == '__main__':
    main()