7.0 KiB
Lab049: аудит исходного незакоммиченного варианта
8 сентября 2026 года. Корень C:/Users/user/Desktop/projects/SDR_Rover,
ветка main, HEAD ac6cc792b896e34f7dd6d291955a0387fdafcf41.
До работы уже существовали незакоммиченные реализация Lab049, тесты,
data/processed/lab049/result.json, документ состояния и запись 036 журнала.
Прежний JSON сохранён; он относится к выровненным кадрам и не является
результатом полного независимого приёмника.
Карта архитектуры
- Базовый Rs задан в
experiments/lab043_hackrf_bpsk.py: 20 000 символов/с. Lab044 и Lab045 наследуют его, Lab047 явно проверяет аппаратную точку. - В Lab043
SAMPLES_PER_SYMBOL = SAMPLE_RATE_HZ // SYMBOL_RATE; Lab047 отдельно фиксирует 400. Lab049 теперь отвергает дробные частоты и нецелое отношение, не округляя вход. - Жёсткие зависимости Lab043:
_refine_frame_start,_matched_filter_taps,_matched_waveform,_preamble_timing_offset,_estimate_cfo_gain,_evaluate_symbols. Lab044:_scale_and_carrier,_preamble_reference_samples. Lab045: длительности TransmissionPlan; Lab046B:_extract_soft_windowи_decode_iq_candidate. Временные шкалы используют Rs, фильтры и индексы — samples/symbol. В локальном поиске также есть фиксированные пределы ±800 и ±2000 выборок; они сохранены. shape_frame_like_lab042, RRC-фильтр ядра, преобразования бит/BPSK, фрагментация, packet/PHY header, FEC, перемежитель, CRC и сборка объекта уже параметрические либо вообще не зависят от Rs.protocol/priority_scheduler.py: строгий приоритет четырёх классов, непрерываемая передача пакета иLATEST_STATEдля ожидающих состояний. Lab034–Lab036 добавили удаление устаревших изображений и изоляцию видеокадров в собственных блоках FEC; это внешнее стирающее кодирование видео, не новый свёрточный FEC Lab045.- Минимальная доработка: адаптер скорости и чтения синтетического IQ к
lab046c_offline_recovery.stream_process_capture, который используется Lab048; разделение ожидания/доставки и активного окна/опустошения очереди. Новый планировщик и измененияprotocol/не потребовались.
Проверка Lab033–Lab041
Сверены сохранённые отчёты этих лабораторий и связанные модули. Lab033 подтверждает строгий приоритет и отдельно считает ожидание начала и завершение передачи. Lab034: frame-aligned FEC изолирует удаляемое изображение, начатый пакет не прерывается. Lab035–Lab036 ограничивают возраст изображения и число ожидающих кадров. Lab037 подтверждает вставку управления между пакетами VIDEO. Lab038–Lab040 добавляют failsafe, аварийную защёлку, повторы и ACK; Lab041 — сеансы/перезапуски. Эти механизмы безопасности в Lab049 не заменены и не заявлены как аппаратно проверенные.
CONTROL взят из последнего Lab041: ControlStateMessage, 36 байт, 20 Гц;
с 32-байтным LinkPacket — 68 байт и 10 880 бит/с до физического кодирования.
TELEMETRY наследуется из Lab037 через Lab038–Lab041: синтетические 64 байта,
10 Гц, с LinkPacket — 96 байт и 7680 бит/с. Отдельного формата физических
измерений телеметрии эти лаборатории не задают.
Воспроизведённые несоответствия
Проверки выполнены независимыми verifier и adversary, без правок с их
стороны и без оборудования.
- Исходный
receive_iq_frame: идеальный кадр 100 ксимв/с проходит CRC, добавление 240 нулевых выборок перед ним даётPHY=False, CRC=NOT_REACHED. Поиск ограничивался двумя символами от известной TX-границы. - Добавление +10 Гц к тому же кадру даёт
PHY=True, CRC=NOT_REACHED; +100 Гц —PHY=False. Остаточная частота не оценивалась. - При 100 ксимв/с старый отчёт CONTROL max 47,980 мс описывал начало, а получение пакета занимает 105,640 мс; пропущены 6 сроков CONTROL. EMERGENCY: 30,240 мс до начала, 87,900 мс до получения — пропущен срок 50 мс.
- При 200 ксимв/с EMERGENCY через 1 мкс после VIDEO доставляется через
57,659 мс, а не за 50 мс. Штатный failsafe до получения пакета остаётся
в
normal. Блокировка 28,83 мс и доставка почти 57,66 мс — разные метрики. - На 20/50/100 ксимв/с в двухсекундном окне не доставлено ни одного TELEMETRY. Единственное сообщение старой таблицы доставляется при последующем опустошении очереди.
Регрессии воспроизводятся командой:
python -m pytest tests/test_lab049_independent_iq.py -q
Исторический receive_iq_frame сохранён для локальных регрессий формы;
основной проход Lab049 его больше не использует. Старые тесты не изменены.
Новый RX получает полный поток, самостоятельно находит начало, оценивает CFO,
фазу и полярность. PRBS7, физические и пакетные форматы, FEC, CRC и порог
Lab047 0.030964473262429237 сохранены.
RF TX = 0. Git add/commit/push/pull/fetch не выполнялись.