cat-tracker/receive.py
2025-04-10 15:30:06 -07:00

44 lines
1.0 KiB
Python

from util import *
import time
def burst_read(spi, addr, length):
"""Read multiple bytes"""
READ_SINGLE = get_addr["READ_SINGLE"]
READ_BURST = get_addr["READ_BURST"]
return spi.xfer2([addr | READ_SINGLE | READ_BURST] + [0x00] * length)
def read_fifo(spi):
# Burst read RX FIFO
READ_BURST = get_addr("READ_BURST")
RXFIFO = get_addr("RXFIFO")
fifo = spi.xfer2([RXFIFO | READ_BURST] + [0x00]*64) # Max 64 bytes
return fifo[1:]
def receive_packet(spi):
# Flush RX FIFO
SFRX = get_addr("SFRX")
strobe(spi, SFRX) # SFRX
SRX = get_addr( "SRX")
# Go into RX mode
strobe(spi, SRX) # SRX
# Wait for data (use GDO0 in real app)
time.sleep(0.5)
# Check RXBYTES
RXBYTES = get_addr( "RXBYTES")
rx_bytes = read_register(spi, RXBYTES) & 0x7F
if rx_bytes == 0:
print("No data received.")
return None
# Read data
# RXFIFO = get_addr("RXFIFO")
data = read_fifo(spi) # 0x3F = RX FIFO
print(f"Received: {data}")
return data