lora-ax25/main.py

44 lines
1.1 KiB
Python

import serial, subprocess, time
import busio
from digitalio import DigitalInOut, Direction, Pull
import board
#import adafruit_rfm69
import adafruit_rfm9x
CS = DigitalInOut(board.CE1)
RESET = DigitalInOut(board.D25)
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
#rfm = adafruit_rfm69.RFM69(spi, CS, RESET, 868.0)
rfm = adafruit_rfm9x.RFM9x(spi, CS, RESET, 868.0)
addr = '/tmp/rfmtty'
addr_client = '/tmp/rfmtty_client'
cmd=['/usr/bin/socat','-d','-d','PTY,link=%s,raw,echo=0' %
addr, 'PTY,link=%s,raw,echo=0' % addr_client]
socat_proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
time.sleep(1)
ser = serial.serial_for_url(addr)
while True:
packet = None
packet = rfm.receive()
ser_data = bytearray()
while ser.inWaiting() > 0 and len(ser_data) <= 251:
recieved_byte = ser.read(1)
ser_data += recieved_byte
if ser_data == b'':
pass
else:
print(f'Received serial data: {ser_data}')
rfm.send(ser_data)
if packet is None:
pass
else:
print(f'Received lora data: {packet}')
ser.write(packet)
socat_proc.kill()