Complete signal processing pipeline from complex baseband to decoded PCM telemetry, verified against the 1965 NAA Study Guide (A-624): Core demod (Phase 1): - PM demodulator with carrier PLL recovery - 1.024 MHz subcarrier extractor (bandpass + downconvert) - BPSK demodulator with Costas loop + symbol sync - Convenience hier_block2 combining subcarrier + BPSK PCM frame processing (Phase 2): - 32-bit frame sync with Hamming distance correlator - SEARCH/VERIFY/LOCKED state machine, complement-on-odd handling - Frame demultiplexer (128-word, A/D voltage scaling) - AGC downlink decoder (15-bit word reassembly from DNTM1/DNTM2) Voice and analog (Phase 3): - 1.25 MHz FM voice subcarrier demod to 8 kHz audio - SCO demodulator for 9 analog sensor channels (14.5-165 kHz) Virtual AGC integration (Phase 4): - TCP bridge client with auto-reconnect and channel filtering - DSKY uplink encoder (VERB/NOUN/DATA command sequences) Top-level receiver (Phase 5): - usb_downlink_receiver hier_block2: one block, complex in, PDUs out - 14 GRC block YAML definitions for GNU Radio Companion - Example scripts for signal analysis and full-chain demo Infrastructure: - constants.py with all timing/frequency/frame parameters - protocol.py for sync word + AGC packet encode/decode - Synthetic USB signal generator for testing - 222 tests passing, ruff lint clean
56 lines
1.2 KiB
YAML
56 lines
1.2 KiB
YAML
id: apollo_agc_bridge
|
|
label: Apollo AGC Bridge
|
|
category: '[Apollo USB]'
|
|
flags: [python]
|
|
|
|
parameters:
|
|
- id: host
|
|
label: yaAGC Host
|
|
dtype: string
|
|
default: 'localhost'
|
|
- id: port
|
|
label: yaAGC Port
|
|
dtype: int
|
|
default: '19697'
|
|
|
|
inputs:
|
|
- label: uplink_data
|
|
domain: message
|
|
optional: true
|
|
|
|
outputs:
|
|
- label: downlink_data
|
|
domain: message
|
|
- label: status
|
|
domain: message
|
|
|
|
templates:
|
|
imports: from apollo import agc_bridge
|
|
make: >-
|
|
apollo.agc_bridge.agc_bridge(
|
|
host=${host},
|
|
port=${port})
|
|
|
|
documentation: |-
|
|
Apollo AGC Bridge
|
|
|
|
Bidirectional bridge between GNU Radio message ports and a Virtual AGC
|
|
(yaAGC) instance over TCP. Connects as a client to the AGC socket
|
|
protocol (4-byte packets on port 19697).
|
|
|
|
Filters for telecom-relevant channels (045 INLINK, 057 OUTLINK,
|
|
034 DNTM1, 035 DNTM2) by default.
|
|
|
|
Auto-reconnects with exponential backoff on connection loss.
|
|
|
|
Ports:
|
|
uplink_data (in) - PDU with (channel, value) to send to AGC
|
|
downlink_data (out) - received AGC packets as PDU
|
|
status (out) - connection state: "connecting", "connected", "disconnected"
|
|
|
|
Parameters:
|
|
host: yaAGC hostname or IP address
|
|
port: yaAGC TCP port number
|
|
|
|
file_format: 1
|