Files
SDR-Rover/docs/handoff/NEXT_RX_TASK.md
2026-09-18 15:30:45 +03:00

4.0 KiB

This file is the authoritative current task for the RX laptop. The RX assistant must read RX_NODE_STATE.md first, then execute this file. If chat history conflicts with these files and current Git HEAD, stop and report the conflict.

Current RX task

TASK = PREPARE RF-001A COMMON-CLOCK RX

  1. In the project path from RX_NODE_STATE.md, record branch, HEAD and git status --short --untracked-files=no. Require clean tracked state and video-development. Run git pull origin video-development; then require local HEAD = origin/video-development. Do not commit or push.
  2. Read configs/rf/rf001a_common_clock.json and docs/rf/RF_001A_PREPARATION.md. Run python -B -X utf8 tools/rf001a_prepare.py --verify-dir <TX artifact directory> only if the TX artifact has been transferred locally; otherwise run python -B -X utf8 -c "from tools.rf001a_prepare import load_spec; print(load_spec())" to check the shared spec against the existing PHY. Do not substitute a video fixture or alter the expected hashes.
  3. Run fixture-independent RF TARGETED PYTEST, Ruff, Pyright and git diff --check:
python -B -m pytest tests/test_packet.py tests/test_video003_modem.py tests/test_video005_iq.py tests/test_rf001_preparation.py tests/test_rf001a_prepare.py tests/test_clock001.py tests/test_hackrf_process_check.py -q
python -B -m ruff check tools/rf001a_prepare.py tests/test_rf001a_prepare.py tools/qpsk_rf_common.py tools/qpsk_rf_tx.py tools/qpsk_rf_rx.py
python -B -m pyright --project pyrightconfig.json
git diff --check

These checks do not use the VIDEO-001 file or historical Lab064 metadata. Repeat the existing offline RF-001 100/100 packet check in new local paths. Missing prerequisites remain failures; do not label blocked video tests PASS. 4. Run hackrf_info, save full output, and confirm this is the RX device. Check shared-spec center frequency 1400000000 Hz, sample rate 8000000/s, RX LNA 24 dB, RX VGA 24 dB, RF amp OFF, antenna bias OFF and digital carrier +125000 Hz. Confirm hackrf_transfer -h maps -l to RX LNA, -g to RX VGA, -a 0 to amp OFF and -p 0 to bias OFF. Record actual RX serial. 5. Prepare a new unique raw IQ output directory outside Git, preserving existing captures. Check at least 320000000 bytes plus comfortable free-space margin on the destination volume. The 20 s finite capture is 160000000 complex samples in signed interleaved I/Q cs8, exactly 320000000 bytes (about 320 MB / 305.2 MiB). Prepare this command with the actual RX serial and a new path; do not run it in this preparation task:

& '<verified hackrf_transfer.exe path>' -d <RX_SERIAL> -r <NEW_RAW_IQ_PATH.cs8> -f 1400000000 -s 8000000 -n 160000000 -l 24 -g 24 -a 0 -p 0 -B
  1. Manual checkpoint for a future coordinated session: both antennas and USB connections, 10 MHz reference → MASTER → MASTER CLKOUT → SLAVE CLKIN, roles, polarization and safe distance. Freshly verify MASTER/SLAVE reg29 and SLAVE CLKIN. Old 0x26/DETECTED readings are historical only. Record COMMON CLOCK VERIFIED = YES / NO; until YES, RF TX is prohibited. RX capture also waits for the later coordinated task.
  2. Future session sequence: start finite RX capture, confirm it is active, then a separately authorized one-shot TX, finish capture, preserve full raw IQ plus stdout/stderr and every available intermediate/final overrun or underrun observation, then decode the same raw IQ offline with existing qpsk_rf_rx.py --iq-format cs8. Record size, sample count, duration and SHA256. Missing or incomplete counters are NOT_REPORTED, never zero.
  3. Report readiness and STOP. No RX capture now, RF TX, continuous RX, firmware/CPLD updates, hackrf_spiflash, Zadig, USB driver changes, commit or push. Keep large IQ/video out of Git.

TASK = PREPARE RF-001A COMMON-CLOCK RX BRANCH = HEAD = SHARED TEST SPEC = RF TARGETED PYTEST = RUFF = PYRIGHT = GIT DIFF CHECK = OFFLINE RF-001 = HACKRF INFO = RX SERIAL = RX CAPTURE COMMAND PREPARED = RX CAPTURE FREE SPACE = COMMON CLOCK VERIFIED = PHYSICAL CHECKPOINT = RX READY TO CAPTURE = YES / NO RF TX = 0 STOP.