8 Commits

Author SHA1 Message Date
Maxim
4bf1a6df7b docs: group-FEC 16+2 задокументирован, рабочая точка соука -p 4000 (§12.7)
- README §12.7 — журнал этапа (расчёт 16+2, таблица прогонов, находка overrun)
- README §10 — перенумерация: п.6=group-FEC, ARQ/FDD→п.7, туннель→п.8, видео→п.9
- README §9 — техдолг #6 обновлён (group-FEC закрывает симплекс-потери)
- docs/BENCHMARK.md, CLAUDE.md, test_file_link.sh — соук-точка -p 4000
- transmitter.c — снят -Wdiscarded-qualifiers на crc_generate_key (const-каст)
2026-07-15 09:48:26 +03:00
Maxim
23b60c6fa2 group-FEC 16+2: стирающее восстановление кадров без обратного канала (§10 п.6)
Групповой FEC над GF(256), RAID-6-стиль: 16 кадров данных + P(⊕) + Q(Σgⁱ·dᵢ)
закрывают до 2 стёртых кадров на группу. Потеря (пропуск seq или битый CRC) —
это стирание с известной позицией, поэтому 2 паритета оптимальны (overhead 12.5%,
~99% передач 10 МБ байт-в-байт при PER 0.26%).

- src/group_fec.{c,h}: GF(256) polynom 0x11d, gf_encode/gf_recover + self-test
  (make gftest, нативный cc). Восстановление 1 стирания через P или Q, 2 — P+Q.
- transmitter.c: флаг -G, вынесен tx_frame(); копит группу, шлёт k данных +
  P/Q с флагами в hdr[11]. Мета паритета: k′ + длина хвостового кадра.
- receiver.c: групповой ассемблер в потоке C, автодетект по hdr[11], финализация
  группы на смене базы seq и на выходе потока. Счётчики Rec/GrpF в статистике.
- hdr[11] (был резерв): bit7 режим, bit6 паритет, bit5 Q, bits4-0 idx. RS/CRC
  слой прозрачен — геометрия кадра не тронута, PHY-бенчмарк не требуется.
- test_file_link.sh: GROUPFEC=1 по умолчанию (TX -G, RX автодетект).

README §12.7 + перенумерация роадмапа — отдельным коммитом после верификации.
2026-07-15 09:18:17 +03:00
Maxim
7b28ac8bd3 docs: 3-стадийный RX завершён — рабочая точка -p 3000 (§12.6)
Результаты свипа/соука 3-стадийного конвейера:
- FQ drops=0 на всех паузах (вкл. -p 0) — RS на ядре 1 не узкое место
- рабочая точка -p 6000 → -p 3000 (вдвое), соук 10 МБ чист (PER 0.26%)
- throughput 90 → 120 КБ/с = ×1.36 (исправлено с ошибочных ×4–5/×2:
  эфир кадра 5.33 мс доминирует над паузой)
- эмпирическое колено ~2500 против модели p_min 1333 (джиттер, запас 2×)
README §12.6; BENCHMARK p_min факт; test default
PAUSE=3000, TIMEOUT под 120 КБ/с. Исправлены ссылки §10 п.5→п.6 (ARQ
переехал при перенумерации). PHY не менялся.
2026-07-14 15:07:23 +03:00
Maxim
99ce074886 теперь пауза 6000 мкс вместо 0, и таймаут пересчитан под реальную скорость (~80 КБ/с) 2026-07-14 10:36:16 +03:00
Maxim
bd511f0d9c доработка теста 2026-07-14 09:34:49 +03:00
Maxim
4cfeb38686 доработка в части приема и передачи 2026-07-14 09:14:39 +03:00
Maxim
d5edaf140e Сделать скрипты исполняемыми (x-бит в индексе; Windows его не отслеживает)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 11:00:57 +03:00
Maxim
0f207b146d Initial commit: OFDM-радиолиния на двух Pluto+ (PHY/link, код на ARM)
- src: transmitter, receiver, ofdm_bench, common (libiio local: + liquid-dsp)
- scripts: кросс-сборка зависимостей, деплой scp -O, e2e-тест с md5
- docs: бенчмарк CPU (выбор rate 1.92 MSPS), грабли FDD/регуляторика
- все текстовые файлы нормализованы в LF (.gitattributes принудительно):
  CRLF в toolchain.env/makefile ломал source и make на Linux
- .vscode: IntelliSense в режиме linux-gcc-arm, заголовки из .xarm/include

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 11:00:38 +03:00