Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions exo/networking/radio/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Simulated Radio Networking Module (LoRa-style Interface)"""
32 changes: 32 additions & 0 deletions exo/networking/radio/radio_peer_handle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""
Simulated RadioPeerHandle using an in-memory message bus.
"""

from queue import Queue

# Shared in-memory message bus (simulates radio channel)
message_bus = {}

class RadioPeerHandle:
def __init__(self, peer_id):
self.peer_id = peer_id
self.inbox = Queue()
message_bus[peer_id] = self.inbox
self.connected = True
print(f"[{self.peer_id}] Initialized radio peer.")

def send(self, target_id, data):
"""Simulate sending data to another peer."""
if target_id not in message_bus:
raise ValueError(f"Target peer '{target_id}' not found.")
message_bus[target_id].put((self.peer_id, data))
print(f"[{self.peer_id}] Sent to {target_id}: {data}")

def receive(self):
"""Simulate receiving a message."""
if self.inbox.empty():
print(f"[{self.peer_id}] Inbox empty.")
return None
sender_id, data = self.inbox.get()
print(f"[{self.peer_id}] Received from {sender_id}: {data}")
return data
16 changes: 16 additions & 0 deletions exo/networking/radio/radio_server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"""
Simulated RadioServer to manage peer logic.
"""

class RadioServer:
def __init__(self, port=None):
self.port = port
self.running = False

def start(self):
self.running = True
print("[RadioServer] Started simulated radio server.")

def stop(self):
self.running = False
print("[RadioServer] Stopped radio server.")
31 changes: 31 additions & 0 deletions exo/networking/radio/test_radio_module.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
"""
Unit tests for the simulated radio networking module.
"""

import unittest
from radio_peer_handle import RadioPeerHandle
from radio_server import RadioServer

class TestRadioPeerHandle(unittest.TestCase):
def test_peer_send_receive(self):
peer1 = RadioPeerHandle("peer1")
peer2 = RadioPeerHandle("peer2")
peer1.send("peer2", "Hello, peer2!")
received = peer2.receive()
self.assertEqual(received, "Hello, peer2!")

def test_empty_inbox(self):
peer = RadioPeerHandle("peer3")
result = peer.receive()
self.assertIsNone(result)

class TestRadioServer(unittest.TestCase):
def test_server_start_stop(self):
server = RadioServer()
server.start()
self.assertTrue(server.running)
server.stop()
self.assertFalse(server.running)

if __name__ == "__main__":
unittest.main()