from microbit import *
import radio
import time

radio.config(channel=25)
radio.on()

alfabet = {
    "A": ".-", "B": "-...", "C": "-.-.", "D": "-..",
    "E": ".", "F": "..-.", "G": "--.", "H": "....",
    "I": "..", "J": ".---", "K": "-.-", "L": ".-..",
    "M": "--", "N": "-.", "O": "---", "P": ".--.",
    "Q": "--.-", "R": ".-.", "S": "...", "T": "-",
    "U": "..-", "V": "...-", "W": ".--", "X": "-..-",
    "Y": "-.--", "Z": "--..", "Æ": ".-.-", "Ø": "---.",
    "Å": ".--.-",
    "1": ".----", "2": "..---", "3": "...--", "4": "....-",
    "5": ".....", "6": "-....", "7": "--...", "8": "---..",
    "9": "----.", "0": "-----"
}

morse = {
    ".-": "A", "-...": "B", "-.-.": "C", "-..": "D",
    ".": "E", "..-.": "F", "--.": "G", "....": "H",
    "..": "I", ".---": "J", "-.-": "K", ".-..": "L",
    "--": "M", "-.": "N", "---": "O", ".--.": "P",
    "--.-": "Q", ".-.": "R", "...": "S", "-": "T",
    "..-": "U", "...-": "V", ".--": "W", "-..-": "X",
    "-.--": "Y", "--..": "Z", ".-.-": "Æ", "---.": "Ø",
    ".--.-": "Å",
    ".----": "1", "..---": "2", "...--": "3", "....-": "4",
    ".....": "5", "-....": "6", "--...": "7", "---..": "8",
    "----.": "9", "-----": "0"
}

tegn_skiller = "/"
ord_skiller = "//"

prik = 200 # tid, i millisekunder
streg = prik * 3 # 600 millisekunder
bogstav = streg # 600 millisekunder pause
ord = prik * 7 # 1.4 sekund pause

test_ord = "coding pirates rules"

running = True

def alfa_2_morse(tegn):
    return alfabet[tegn.upper()]

def morse_2_alfa(kode):
    return morse[kode]

def vis_prik():
    display.set_pixel(2, 2, 9)
    sleep(prik)
    display.clear()

def vis_streg():
    display.set_pixel(2, 2, 9)
    sleep(streg)
    display.clear()

def send_prik():
    radio.send(".")

def send_streg():
    radio.send("-")
    sleep(streg)

def nyt_bogstav():
    radio.send("/")
    sleep(bogstav)

def nyt_ord():
    radio.send("//")
    sleep(ord)

def afslut():
    radio.send("\\")
    return False

def sending(sender=False):
    while sender:
        if button_a.was_pressed():
            send_prik()
            timeout_prik = time.ticks_add(time.ticks_ms(), prik)
            timeout_bogstav = time.ticks_add(time.ticks_ms(), bogstav)
        elif button_b.was_pressed():
            send_streg()
            timeout_prik = time.ticks_add(time.ticks_ms(), prik)
        elif button_a.was_pressed() and button_b.was_pressed():
            sender=afslut()
        if time.ticks_diff(timeout_prik, time.ticks_ms()) > 0:
            if time.ticks_diff():
                pass

def receiving(modtag=False):
    while modtag:
        tmp = ""
        msg = radio.receive()
        
rolle = "sender"

# Code in a 'while True:' loop repeats forever
while running:
    if rolle == "sender":
        sending(sender=True)
    elif rolle == "modtager":
        receiving(True)
            