#!/usr/bin/env python3 """Print micrOBU LOG frames without participating in the station-link session.""" from __future__ import annotations import argparse import time import serial from microbu_link.serial_transport import FrameDecoder, FrameType def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('--port', required=True) parser.add_argument('--duration', type=float, default=15.0) parser.add_argument('--reset', action='store_true', help='pulse EN through USB Serial/JTAG before monitoring') args = parser.parse_args() port = serial.Serial(args.port, 115200, timeout=0.05, write_timeout=1) port.dtr = False port.rts = False if args.reset: port.rts = True time.sleep(0.1) port.rts = False decoder = FrameDecoder() deadline = time.monotonic() + args.duration try: while time.monotonic() < deadline: for frame_type, payload in decoder.feed(port.read(4096)): if frame_type == FrameType.LOG: print(payload.decode('utf-8', 'replace'), flush=True) finally: port.close() if __name__ == '__main__': main()