#Gage Condon and Dan Flores
#Campus School Project
#CPB Client Code

import board
import time
import digitalio
import busio
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
from adafruit_bluefruit_connect.packet import Packet


#setup Bluetooth
ble = BLERadio()
uart = UARTService()
advertisement = ProvideServicesAdvertisement(uart)

#set up button
button = digitalio.DigitalInOut(board.A4)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP

#setup LEDs
red_led = digitalio.DigitalInOut(board.A2)
red_led.direction = digitalio.Direction.OUTPUT
green_led = digitalio.DigitalInOut(board.A3)
green_led.direction = digitalio.Direction.OUTPUT
red_led.value = True

message_started = False

# Use a timeout of zero so we don't delay while waiting for a message.
matrix_portal = busio.UART(board.TX, board.RX, baudrate=9600, timeout=0)

while True:
    # Advertise when not connected.
    ble.start_advertising(advertisement)
    print("Waiting for connection")
    while not ble.connected:
        red_led.value = True
        green_led.value = False
        pass

    print("Connected!")
    while ble.connected:
        red_led.value = False
        green_led.value = True
        incoming_bytes = uart.in_waiting
        if incoming_bytes:
            bytes_in = uart.read(incoming_bytes)
            print("Received: ", bytes_in)
            message = bytes_in.decode()
            print(message)
            matrix_portal.write(str.encode("a"))

        if not button.value:
            uart.write(str.encode("a"))
            time.sleep(0.1)
        time.sleep(0.1)
