Fix bidirectional RF-001A coordination
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
TASK_ID = RF001A_OTA_TX_002
|
||||
TASK_ID = RF001A_OTA_TX_003
|
||||
TASK_TITLE = Transmit one coordinated RF-001A QPSK burst
|
||||
SOURCE_BRANCH = video-development
|
||||
EXPECTED_HEAD = 34f5ace54540f947311ada7e81a463c08abfd2d3
|
||||
EXPECTED_HEAD = bc55d0516dc1ee36cefa1ff096e7d86f60645303
|
||||
REQUIRES_APPROVAL = YES
|
||||
HARDWARE_ACCESS = YES
|
||||
RF_RX = NO
|
||||
@@ -18,7 +18,7 @@ Read TX_NODE_STATE.md first. If chat history, this file, the shared RF-001A spec
|
||||
TASK =
|
||||
TRANSMIT ONE COORDINATED RF-001A QPSK BURST
|
||||
|
||||
This is a new RED task. Publication of this file is not permission to transmit. It does not inherit any approval from RF001A_OTA_TX_001, the RX task, a previous watcher prompt or a previous RF run.
|
||||
This is a new RED task. Publication of this file is not permission to transmit. It does not inherit any approval from RF001A_OTA_TX_001, RF001A_OTA_TX_002, the RX task, a previous watcher prompt or a previous RF run.
|
||||
|
||||
## 1. Coordination gate
|
||||
|
||||
@@ -28,7 +28,7 @@ Start the local model-free watcher before the RX task begins:
|
||||
|
||||
The watcher polls origin/rx-node every 5 seconds and accepts only a strict result for:
|
||||
|
||||
RX TASK_ID = RF001A_OTA_CAPTURE_002
|
||||
RX TASK_ID = RF001A_OTA_CAPTURE_003
|
||||
STATE = RX_READY_FOR_TX
|
||||
RX_READY_FOR_TX = YES
|
||||
PROCESS_ALIVE = YES
|
||||
@@ -36,7 +36,7 @@ The watcher polls origin/rx-node every 5 seconds and accepts only a strict resul
|
||||
COMMON_CLOCK_VERIFIED = YES
|
||||
RF_TX = 0
|
||||
|
||||
The READY publication must be no more than 30 seconds old. Its planned capture window must be 120 seconds. At least 10 seconds must remain.
|
||||
The watcher records RF_HANDOFF_CHANNEL_TEST_001 READY and COMPLETE states without prompting for RED approval and never treats them as production readiness. A production READY publication must be no more than 30 seconds old. Its planned capture window must be 120 seconds. At least 10 seconds must remain. COMMON_CLOCK_VERIFIED must be YES, source_head must equal the expected video-development HEAD, and the result commit must be the current valid origin/rx-node HEAD.
|
||||
|
||||
When a valid new READY result appears, the watcher prints:
|
||||
|
||||
@@ -47,7 +47,7 @@ When a valid new READY result appears, the watcher prints:
|
||||
CAPTURE END EXPECTED =
|
||||
|
||||
TX TASK =
|
||||
RF001A_OTA_TX_002
|
||||
RF001A_OTA_TX_003
|
||||
|
||||
RF TX REQUIRES RED APPROVAL
|
||||
|
||||
@@ -56,7 +56,7 @@ When a valid new READY result appears, the watcher prints:
|
||||
|
||||
Without the exact phrase AUTHORIZE RF TX, do not transmit.
|
||||
|
||||
After the phrase, the watcher fetches rx-node again and repeats all READY, freshness and capture-window checks. If the result changed or less than 10 seconds remain, it refuses authorization and requires a new RX capture.
|
||||
After the phrase, the watcher fetches rx-node again and repeats the result commit, digest, task ID, source HEAD, READY, freshness, common-clock and capture-window checks. If the result changed or less than 10 seconds remain, it refuses authorization and requires a new RX capture.
|
||||
|
||||
The watcher never opens HackRF hardware. On success it writes one local authorization record under:
|
||||
|
||||
@@ -103,7 +103,7 @@ Before the watcher can request RED approval:
|
||||
|
||||
10. Verify the actual cs8 bytes through the existing offline receiver:
|
||||
|
||||
python -B -X utf8 tools/qpsk_rf_rx.py --iq-file data/raw/rf001/rf001a_common_clock_001/tx_waveform.cs8 --iq-format cs8 --truth-metadata data/raw/rf001/rf001a_common_clock_001/tx_metadata.json --report <new-path-outside-git>\rf001a_tx_offline_verify.json
|
||||
python -B -X utf8 tools/qpsk_rf_rx.py --iq-file data/raw/rf001/rf001a_common_clock_001/tx_waveform.cs8 --iq-format cs8 --truth-metadata configs/rf/rf001a_truth_metadata.json --report <new-path-outside-git>\rf001a_tx_offline_verify.json
|
||||
|
||||
Require:
|
||||
|
||||
@@ -112,7 +112,7 @@ Require:
|
||||
offline hardware-format roundtrip = 100/100 exact
|
||||
TX waveform path = data/raw/rf001/rf001a_common_clock_001/tx_waveform.cs8
|
||||
TX waveform size = 17667656 bytes
|
||||
TX waveform SHA256 = 75f3fa39bfa88b623b7e4e5a02e3a80b52185007397ea56ceaacc13353974b2
|
||||
TX waveform SHA256 = 75f3fa39bfa4ee419f0676c54e4b9c486d7ff64bd0fe2fc06343b20c9d117ecd
|
||||
sample count = 8833828 complex samples
|
||||
expected duration = 1.1042285 s
|
||||
|
||||
@@ -122,9 +122,9 @@ If any value differs, do not transmit.
|
||||
|
||||
The controlled TX executor must read the authorization record immediately before TX and require:
|
||||
|
||||
- task_id = RF001A_OTA_TX_002;
|
||||
- task_id = RF001A_OTA_TX_003;
|
||||
- authorization = AUTHORIZE RF TX;
|
||||
- rx_task_id = RF001A_OTA_CAPTURE_002;
|
||||
- rx_task_id = RF001A_OTA_CAPTURE_003;
|
||||
- dry_run = false;
|
||||
- action = MANUAL_EXECUTOR_GATE_OPEN;
|
||||
- rf_tx_started = false;
|
||||
@@ -165,7 +165,7 @@ Set RF TX STOPPED = YES only after the finite process exits. Never retry automat
|
||||
## 6. Final TX report
|
||||
|
||||
TASK_ID =
|
||||
RF001A_OTA_TX_002
|
||||
RF001A_OTA_TX_003
|
||||
|
||||
RED AUTHORIZATION =
|
||||
AUTHORIZE RF TX / MISSING
|
||||
|
||||
Reference in New Issue
Block a user