import board
import digitalio
from thingz import radio
import time
from thingz import button_b
from thingz import button_a

def configure_pin(pin, pinNumber, type):
    if type == "digital_write":
        if len(pin) and isinstance(pin, digitalio.DigitalInOut):
            pin[0].direction = digitalio.Direction.OUTPUT
        else:
            if len(pin):
                pin[0].deinit()
                pin[0] = digitalio.DigitalInOut(pinNumber)
                pin[0].direction = digitalio.Direction.OUTPUT
            else:
                pin.append(digitalio.DigitalInOut(pinNumber))
                pin[0].direction = digitalio.Direction.OUTPUT
    elif type == "digital_read":
        if len(pin) and isinstance(pin, digitalio.DigitalInOut):
            pin[0].direction = digitalio.Direction.INPUT
        else:
            if len(pin):
                pin[0].deinit()
                pin[0] = digitalio.DigitalInOut(pinNumber)
                pin[0].direction = digitalio.Direction.INPUT
            else:
                pin.append(digitalio.DigitalInOut(pinNumber))
                pin[0].direction = digitalio.Direction.INPUT
    elif type == "analog_read":
        if len(pin) == 0 or not isinstance(pin, analogio.AnalogIn):
            if len(pin):
                pin[0].deinit()
                pin[0] = analogio.AnalogIn(pinNumber)
            else:
                pin.append(analogio.AnalogIn(pinNumber))
    return pin

def digital_write(pin, pinNumber, state):
    pin = configure_pin(pin, pinNumber, "digital_write")
    pin[0].value = state

def digital_read(pin, pinNumber):
    pin = configure_pin(pin, pinNumber, "digital_read")
    return pin[0].value

def on_pressed_b(button):
    global rang
    rang = (rang if isinstance(rang, int or float) else 0) + -1
    print('Rang : ' + str(rang))

def on_pressed_a(button):
    global rang
    rang = (rang if isinstance(rang, int or float) else 0) + 1
    print('Rang : ' + str(rang))

def allumer():
    digital_write(pin7, board.P7, True)
    time.sleep((5)*1)

def eteindre():
    digital_write(pin7, board.P7, False)

pin7 = []
pin19 = []
button_b.on_button_pressed(on_pressed_b)
button_a.on_button_pressed(on_pressed_a)

digital_write(pin7, board.P7, False)
print('Indiquer le rang de la carte en appuyant sur les boutons A et B')
rang = 1
print('Rang : ' + str(rang))
valeur = 1

while True:
    valeurRecue = radio.receive()
    if valeurRecue:
        valeur = valeurRecue
        if valeur == rang - 1 or valeur == rang:
            allumer()
        else:
            eteindre()
    if digital_read(pin19, board.P19):
        allumer()
        print(valeur)
        if int(valeur) >= rang:
            radio.send(rang - 1)
        else:
            radio.send(rang)
