asdasdasd i hate bluetooth with a PASSION
This commit is contained in:
@@ -5,8 +5,6 @@ from sx1262 import SX1262
|
||||
import uasyncio as asyncio
|
||||
from queue import Queue
|
||||
|
||||
from machine import Pin
|
||||
led = Pin(25, Pin.OUT)
|
||||
|
||||
class FixedDeque:
|
||||
def __init__(self, maxlen):
|
||||
@@ -73,7 +71,17 @@ class LoRaHandler:
|
||||
msg_bytes = LoRaMessage(sender_id=self.my_id, recipient_id=recipient_id, payload=data).encode()
|
||||
self.radio.send(msg_bytes)
|
||||
|
||||
def has_seen_message(self, msg: LoRaMessage) -> bool:
|
||||
if msg.message_id in self.recent_messages:
|
||||
return True
|
||||
self.recent_messages.append(msg.message_id)
|
||||
return False
|
||||
|
||||
def forward(self, msg: LoRaMessage):
|
||||
# ensure we don't process a message twice
|
||||
if self.has_seen_message(msg):
|
||||
return
|
||||
|
||||
msg_bytes = msg.encode()
|
||||
self.radio.send(msg_bytes)
|
||||
|
||||
@@ -83,9 +91,8 @@ class LoRaHandler:
|
||||
|
||||
def on_receive(self, msg: LoRaMessage):
|
||||
# ensure we don't process a message twice
|
||||
if msg.message_id in self.recent_messages:
|
||||
if self.has_seen_message(msg):
|
||||
return
|
||||
self.recent_messages.append(msg.message_id)
|
||||
|
||||
# messages has a lifetime to prevent infinite loops.
|
||||
# if we receive a message with lifetime <= 0 we just drop it,
|
||||
@@ -106,8 +113,10 @@ class LoRaHandler:
|
||||
if not msg.sender_id in self.neighbours:
|
||||
print(f"Neighbour discovered: {msg.sender_id}")
|
||||
self.neighbours.add(msg.sender_id)
|
||||
self.send(b"Ping!", msg.sender_id)
|
||||
|
||||
# tell the sender we heard them by sending a ping back
|
||||
self.send(b"Ping!", msg.sender_id)
|
||||
self.forward(msg)
|
||||
return
|
||||
|
||||
asyncio.create_task(self.message_queue.put(msg))
|
||||
|
||||
Reference in New Issue
Block a user