SXXXXXXX_PyBusMonitor1553/pybusmonitor1553/__main__.py

54 lines
1.6 KiB
Python

import time
import sys
from .core.network import UdpHandler
from .core.dispatcher import MessageDispatcher
from .utils.printer import dump_message
# Configuration
RX_IP = "127.0.0.1"
RX_PORT = 61553 # Listening port for the Monitor
def main():
print("--------------------------------------------------")
print(" PyBusMonitor1553 - Console Mode")
print("--------------------------------------------------")
# 1. Initialize Components
dispatcher = MessageDispatcher()
network = UdpHandler(rx_ip=RX_IP, rx_port=RX_PORT)
# 2. Define the callback
def on_packet(data, addr):
# Header parsing and Message Dispatching
header, msg = dispatcher.parse_packet(data)
if msg:
# If successfully decoded, print details
print(f"[RX] From {addr[0]}:{addr[1]} | Type: {msg.__class__.__name__}")
dump_message(msg)
elif header:
# Valid UDP header but unknown 1553 message
print(f"[RX] From {addr[0]}:{addr[1]} | Unknown/Invalid 1553 Message")
else:
# Garbage data
print(f"[RX] From {addr[0]}:{addr[1]} | Invalid Packet Structure")
# 3. Register callback and start
network.register_callback(on_packet)
network.start()
print(f"Monitoring started on {RX_IP}:{RX_PORT}")
print("Press Ctrl+C to stop.")
# 4. Main Loop
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("\nStopping...")
finally:
network.stop()
sys.exit(0)
if __name__ == "__main__":
main()