Config response (GetConfig) now returns decoded RadioConfig fields instead of raw hex. New all_commands.py exercises all 8 protocol commands in sequence — Ping, SetConfig, GetConfig, StartRx, StopRx, Transmit, DisplayOff, DisplayOn.
52 lines
1.3 KiB
Python
Executable File
52 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Exercise every DongLoRa command to verify the API works.
|
|
|
|
Usage:
|
|
uv run examples/all_commands.py [PORT]
|
|
"""
|
|
# /// script
|
|
# requires-python = ">=3.10"
|
|
# dependencies = ["cobs", "pyserial"]
|
|
# ///
|
|
|
|
import serial
|
|
import sys
|
|
|
|
sys.path.insert(0, __import__("pathlib").Path(__file__).parent.as_posix())
|
|
import donglora as dl # noqa: E402
|
|
|
|
try:
|
|
ser = dl.connect(sys.argv[1] if len(sys.argv) > 1 else None)
|
|
|
|
print("── Ping ──")
|
|
print(dl.send(ser, "Ping"))
|
|
|
|
print("\n── SetConfig ──")
|
|
print(dl.send(ser, "SetConfig", config=dl.DEFAULT_CONFIG))
|
|
|
|
print("\n── GetConfig ──")
|
|
print(dl.send(ser, "GetConfig"))
|
|
|
|
print("\n── StartRx ──")
|
|
print(dl.send(ser, "StartRx"))
|
|
|
|
print("\n── StopRx ──")
|
|
print(dl.send(ser, "StopRx"))
|
|
|
|
print("\n── Transmit ──")
|
|
print(dl.send(ser, "Transmit", payload=b"Hello from all_commands.py!"))
|
|
|
|
print("\n── DisplayOff ──")
|
|
print(dl.send(ser, "DisplayOff"))
|
|
|
|
print("\n── DisplayOn ──")
|
|
print(dl.send(ser, "DisplayOn"))
|
|
|
|
print("\nAll 8 commands exercised successfully.")
|
|
|
|
except KeyboardInterrupt:
|
|
print("\nInterrupted.")
|
|
except serial.SerialException as e:
|
|
print(f"\nSerial error: {e}", file=sys.stderr)
|
|
sys.exit(1)
|