Let the page ask the radio whether it sees an installed app

GET /api/apps/radio opens the firmware's serial port and sends 0x0730 for all sixteen slots, so the answer comes from the running firmware rather than from our reading of the file -- which is the check that matters, because the bytes can be right and the firmware still refuse a slot. Measured through the page after installing Beam.app into slot 0: slot 0 -> Beam 1.0, 1100 B, crc 0xd976058, shortcut beam, committed; slots 1..3 -> status 2 with unrelated data, the resource-block overlap the install guard refuses. A button beside the table asks it and shows the answer in its own column.

The server gives its own emulator a serial port (--serial-port, default 4445) and uvk5_slots_serial.Radio gained a public app_info(slot), so nothing reaches into a private helper. uvk5_apps.parse_radio_reply decodes the answer and is tested without a radio. Also recorded: QEMU needs the mingw64 DLLs on PATH, and started by hand without them it exits before opening QMP, which surfaces only as 'QMP socket never appeared'.
This commit is contained in:
mckero committed 2026-10-01 17:25:32 +08:00
1 parent 0267371e28
commit b855b0b047
9 files changed
+169 -6

No files matched your search

+16
View File
@@ -609,6 +609,22 @@ That is the header this page installed, echoed by the running firmware, so the r
offset, the layout and the bytes are right. Slots 1 and 2 answered `status 2` with unrelated
data, which is the overlap the install guard exists for.
The page can also **ask the radio**. `GET /api/apps/radio` opens the firmware's serial
port and sends `0x0730` for all sixteen slots, so the answer comes from the running firmware
rather than from our reading of the file -- the bytes can be right and the firmware still
refuse a slot. Measured after installing `Beam.app` into slot 0, through the page:
slot 0 -> Beam 1.0 · 1100 B · crc 0xd976058 · shortcut beam · committed true
slots 1..3 -> status 2 with unrelated data (the resource-block overlap the guard refuses)
A button beside the table asks it and shows the answer in its own column.
One thing that cost a round here: the server gives the emulator it starts a serial port
(`--serial-port`, default 4445), and QEMU needs the mingw64 DLLs on `PATH`. Started from
`work/run-webui.ps1` they are added; started by hand they are not, and a missing DLL makes
QEMU exit **before** it opens QMP -- which surfaces only as "QMP socket never appeared", with
nothing else naming the cause. QEMU's option errors go to stdout, which the launcher discards.
## The keypad: two real bugs, both fixed
The old note here said "keys reach the firmware but the UI does not react" and