Files
story/firmware/echoear-platform-agent/tools/monitor_provisioning.py
T

41 lines
1.6 KiB
Python
Raw Normal View History

"""Read provisioning diagnostics without resetting the device by default."""
import argparse
import time
import serial
parser = argparse.ArgumentParser()
parser.add_argument("--port", default="COM6")
parser.add_argument("--seconds", type=int, default=45)
parser.add_argument("--reset", action="store_true")
args = parser.parse_args()
port = serial.Serial()
port.port = args.port
port.baudrate = 115200
port.timeout = 1
port.dtr = False
port.rts = False
port.open()
try:
if args.reset:
from esptool.reset import HardReset
HardReset(port, uses_usb=True)()
deadline = time.monotonic() + args.seconds
resets = 0
print(f"Monitoring {args.port} for {args.seconds}s; reset={args.reset}", flush=True)
markers = ("ble_setup:", "ble_wifi:", "Guru Meditation", "assert failed:",
"panic", "rst:", "Rebooting", "Touch released", "Startup task finished",
"ELF file SHA256:", "wifi:Expected", "wifi_init: Failed", "esp_netif_lwip:",
"esp-tls:", "HTTP_CLIENT:", "Stack protection fault",
"PLATFORM_HTTP", "Platform error code:", "call_client:", "Startup stack headroom",
"WiFi init internal_free", "WiFi initialization unavailable", "RTC", "volc_rtc_create:")
while time.monotonic() < deadline:
line = port.readline().decode(errors="replace").strip()
if "rst:" in line:
resets += 1
if line and any(marker in line for marker in markers):
print(line, flush=True)
print(f"Reset markers observed: {resets}", flush=True)
finally:
port.close()