Harden RF handoff and stream OTA decode
This commit is contained in:
@@ -44,19 +44,37 @@ The acknowledgement operation is ordinary Python and Git. It does not invoke Cha
|
||||
|
||||
RF_HANDOFF_CHANNEL_TEST_001 READY and COMPLETE states are recorded and acknowledged without a RED prompt and never open the production gate.
|
||||
|
||||
For a fresh valid RF001A_OTA_CAPTURE_003 READY result, the watcher checks the expected source HEAD, current origin/rx-node commit, common clock and capture window. It then prints the task ID, capture start and expected end and asks for:
|
||||
For a fresh valid RF001A_OTA_CAPTURE_004 READY result, the watcher checks the expected source HEAD, current origin/rx-node commit, common clock and capture window. It then prints the task ID, capture start and expected end and asks for:
|
||||
|
||||
AUTHORIZE RF TX
|
||||
|
||||
Any other input blocks authorization.
|
||||
|
||||
After the exact phrase, the watcher fetches rx-node again. It requires the same result digest and commit, the expected source HEAD, a fresh publication, an active 120-second capture window, verified common clock and at least 10 seconds remaining. An expired historical READY is recorded as observed but cannot create an authorization.
|
||||
After the exact phrase, the watcher fetches rx-node again. It requires the same result digest and commit, the expected source HEAD, a fresh publication, an active 60-second capture window, verified common clock and at least 10 seconds remaining. An expired historical READY is recorded as observed but cannot create an authorization.
|
||||
|
||||
On success it writes:
|
||||
|
||||
.local\tx_authorizations\RF001A_OTA_TX_003_authorized.json
|
||||
.local\tx_authorizations\RF001A_OTA_TX_004_authorized.json
|
||||
|
||||
This record opens the gate for the separately controlled TX executor. The watcher itself does not run hackrf_transfer. The record explicitly says rf_tx_started = false and rf_tx = 0.
|
||||
The watcher also publishes `TX_AUTHORIZED` to origin/tx-node. This record opens
|
||||
the gate for the separately controlled TX executor. The watcher itself does
|
||||
not run hackrf_transfer. The record explicitly says `rf_tx_started = false`
|
||||
and `rf_tx = 0`.
|
||||
|
||||
At actual process start the executor publishes `TX_STARTED` with the most
|
||||
accurate available UTC timestamp. After process exit it publishes
|
||||
`TX_COMPLETE` with finish time, integer exit code, underruns and errors. These
|
||||
events preserve the exact RX READY commit and digest binding. They do not
|
||||
replace verification of packets from captured IQ.
|
||||
|
||||
The executor writes each strict schema-version-2 event JSON outside Git, then
|
||||
uses the model-free publisher:
|
||||
|
||||
python -B tools/tx_agent_watcher.py --publish-tx-event <event-json> --acknowledgement-branch tx-node
|
||||
|
||||
The publisher requires a clean, current `video-development` checkout. A
|
||||
`TX_STARTED` event requires a matching `TX_AUTHORIZED` in tx-node. A
|
||||
`TX_COMPLETE` event also requires the matching `TX_STARTED` timestamp.
|
||||
|
||||
The TX executor must re-fetch rx-node and compare the result commit and digest immediately before hardware access.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user