import supervisor
import board
from digitalio import DigitalInOut, Direction
import time

# BLE
from adafruit_ble import BLERadio
from adafruit_ble.advertising import Advertisement
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.standard.hid import HIDService
from adafruit_ble.services.standard.device_info import DeviceInfoService
from adafruit_ble.services.nordic import UARTService

# HID
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
from adafruit_hid.keycode import Keycode

def start_periph():

    # BLE Setup
    ble = BLERadio()
    ble.name = "rhf_periph"
    uart = UARTService()

    # HID Setup
    hid = HIDService()

    ad = ProvideServicesAdvertisement(hid, uart)
    ad.complete_name = ble.name
    ad.appearance = 961

    if not ble.connected:
        ble.start_advertising(ad)
    else:
        print(ble.connections)

    while True:

        #Do nothing while not connected.
        while not ble.connected:
            pass
        
        # Print decoded uart data when it is recieved while connected.
        while ble.connected:
            if uart.in_waiting:
                data = uart.read(uart.in_waiting)
                print('rhf: ' + data.decode())