mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
2a16304b916a103f093fd13b09534a5c4b57ab90
EWSDR встаёт на порт как ExpertSDR3: клиент (MSHV, логгер, скиммер) подключается по WebSocket, получает при рукопожатии полный снимок состояния и дальше живёт на уведомлениях. Приёмник TCI — это СЛОТ СЛАЙСА (B..G → 1..6), а не панадаптер: слайс у нас и есть «приёмник» целиком, со своей модой, фильтром, АРУ и потоками. Транспорт держится трёх правил (doc/TCI.md §1.1): отправка не блокирует, клиента освобождает только тик-поток, Stop прокачивает Synchronize. Ими вылечены реальные отказы — клин на остановке и смерть процесса от SIGPIPE. Вошло: - команды и уведомления TCI 2.0 против PDF-спеки; не реализован только TX_FOOTSWITCH (его шлёт сервер, разбор — в doc/TCI.md §3.1 и §4); - бинарные потоки: IQ, аудио приёмника, TX-аудио от клиента и запись линейного выхода в WAV — писатель одним потоком с очередью, файл публикуется атомарно; - KEYER: чужая манипуляция играется очередью элементов по абсолютным дедлайнам, а не пробросом сетевых фронтов — сеть в эфир не попадает; - арбитраж §3.5 (захват параметра на 200 мс) для того, что клиенты действительно перетягивают; отказ браузерным клиентам по Origin; - пейсинг TX-аудио: всплески своего сигнала на передаче лечатся выдачей по TX_CHRONO, а не общим тиком 20 мс (проверено на железе); - CAT: TX-тракт и телеграф, единая дверь SetTXSettings, ревизия всего набора стендом test/cat — «нечисловое поле = индекс 0» сидело ещё в семнадцати командах; - обрыв манипуляции CW — поколение обрыва вместо флага: пакет, пришедший следом, больше не отменяет уже отданный обрыв; - платформенное: монотонные часы (на них живут дедлайны планировщика TX), сборка win64, своя обёртка последовательного порта — под macOS RTL-модуля Serial нет. Стенды: test/tci (276), test/cat (50), test/platform, test/serial — на подставном радио, без железа и без единого виджета. На железе проверено: приём и передача с TCI-клиента, потоки, рекордер, пейсинг. Не проверено: KEYER живым ключом по сети, прогон на живом маке. TCI пока не заведён в граф демона ewsdrd — намеренно, см. doc/TCI.md §4. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M37eCTZZ9aqppKWkZRxXkP
Languages
Pascal
96.3%
Python
3%
Shell
0.6%