# Empfaenger_3b.py
# benutzt das Modul lora.py
# getestet am 09.07.2024

#####################################################################################
#                            Import und Instanziierungen                            #
#####################################################################################

from time import sleep     
from machine import UART, SPI, Pin
import vga1_bold_16x32 as font2
import vga1_8x8 as font1
import st7789
import sys
from lora import send_command, read_response, response_to_list, lora_init, send_message

# Display:
spi = SPI(1, baudrate = 20_000_000, polarity = 1, sck = Pin(18), mosi = Pin(19))
display = st7789.ST7789(spi, 135, 240, reset=Pin(23, Pin.OUT), cs=Pin(5, Pin.OUT), dc=Pin(16, Pin.OUT), backlight=Pin(4, Pin.OUT), rotation=3)
display.init()
display.fill(0) # Display löschen

# UART:
uart1 = UART(1, baudrate = 57600, tx = 12, rx = 13)

####################################################################################
#                              Hauptprogramm                                       #
#                                                                                  #
# Empfangsteil: zuerst Programm starten, dann Nachricht an den Empfänger senden.   #
# Das Lora-Modul empfängt automatisch (d. h. ohne zusätzliche Kommandos) die an    #
# es adressierten Botschaften.                                                         #
####################################################################################

print('starten')

lora_address = lora_init(uart1) # Rückgabewert ist '???', wenn keinen Antwort vom LoRa-Modul 
display.text(font2, 'LORA(ADR): ' + lora_address, 5, 10)
if lora_address == '???':
    display.text(font2, 'Resetten!', 5, 80, st7789.RED)
    print('Keine Verbindung zum LORA-Modul!')
    print('RESET-Knopf am TTGO betätigen!')
    sys.exit() # Programm beenden, wenn keine Antwort vom LoRa-Modul

# Das Lora-Modul empfängt automatisch (d. h. ohne zusätzliche Kommandos) die an ihn adressierte Botschaften
print('Empfangsschleife kann mit Strg-C abgebrochen werden.')
print()
while True: # Schleife mit Str-C abbrechen
    # Ausgabe auf dem Thonny-Terminal
    r = read_response(uart1)
    print(r) # Rohdaten
    r_list = response_to_list(r) # Listenform
    print(r_list)
    print()
    # Ausgabe auf dem Display
    display.text(font1, 'Kanal:  ' + r_list[0], 5, 60)
    display.text(font1, 'Laenge: ' + r_list[1], 5, 75)
    display.text(font1, 'Text:   ' + r_list[2], 5, 90)
    display.text(font1, 'RSSI:   ' + r_list[3], 5, 105)
    display.text(font1, 'SNR:    ' + r_list[4], 5, 120)

    