# Справочник режимов `soniks-client-new` передаёт режим модуляции строкой `--mode`. Диспетчер ищет её в таблице `SATNOGS_FLOWGRAPH_MODES` (`flowgraph_dispatcher/flowgraph_dispatcher.py`) и по ней выбирает скрипт флоуграфа и правила обработки аргументов. ## Таблица режимов Значения флагов: `бодрейт` : режим принимает `--baud`. Если `нет`, переданный `--baud` **молча отбрасывается**. `фрейминг` : диспетчер сам подставляет `--framing` из последней колонки, затирая то, что прислал клиент. Если `нет`, значение клиента уходит во флоуграф как есть. `кадры` : диспетчер поднимает подписчика кадров на порту `--zmq-base-port`. Если `нет`, JSON-файлов кадров не будет — только аудио, водопад и (по флагу) IQ. | `--mode` | Скрипт флоуграфа | Бодрейт | Фрейминг | Кадры | |---|---|:-:|:-:|:-:| | `AFSK` | `satnogs_afsk1200_ax25.py` | нет | нет | да | | `APT` | `satnogs_noaa_apt_decoder.py` | нет | нет | нет | | `BPSK` | `satnogs_bpsk.py` | да | `ax25` | да | | `BPSK PMT-A3` | `satnogs_argos_bpsk_ldr.py` | да | нет | да | | `CW` | `satnogs_cw_decoder.py` | да → `--wpm` | нет | да | | `DUV` | `satnogs_amsat_fox_duv_decoder.py` | нет | нет | да | | `FM` | `satnogs_fm.py` | нет | нет | нет | | `FSK` | `satnogs_fsk_ax25.py` | да | `ax25` | да | | `FSK AX.100 Mode 5` | `satnogs_fsk_ax100_mode5.py` | да | `ax100_mode5` | да | | `FSK AX.100 Mode 6` | `satnogs_fsk_ax100_mode6.py` | да | `ax100_mode6` | да | | `GENESIS FSK` | `satnogs_genesis_fsk.py` | да | нет | нет | | `GFSK` | `satnogs_fsk_ax25.py` | да | `ax25` | да | | `GFSK Pkst` | `satnogs_fsk_phasma_decoder.py` | да | `ax25` | да | | `GFSK Rktr` | `satnogs_reaktor_hello_world_fsk9600_decoder.py` | да | нет | да | | `GFSK/BPSK` | `satnogs_qubik_telem.py` | да | нет | да | | **`GFSK_GEOSCAN`** | **`satnogs_geoscan_gfsk_decoder.py`** | да | нет | да | | `GMSK` | `satnogs_fsk_ax25.py` | да | `ax25` | да | | **`GMSK USP`** | **`satnogs_usp_fsk_decoder.py`** | да | нет | да | | `MSK` | `satnogs_fsk_ax25.py` | да | `ax25` | да | | `MSK AX.100 Mode 5` | `satnogs_fsk_ax100_mode5.py` | да | `ax100_mode5` | да | | `MSK AX.100 Mode 6` | `satnogs_fsk_ax100_mode6.py` | да | `ax100_mode6` | да | | `SSTV` | `satnogs_fm.py` | нет | нет | нет | | `SSTV_PD120` | `satnogs_sstv_pd120_demod.py` | нет | нет | нет | | `UNKNOWN` | `satnogs_unknown_transmission.py` | да | нет | нет | Выделены режимы, добавленные форком. ## Особые случаи Соответствие «режим → флоуграф» — **многие к одному**, и в нескольких местах диспетчер отклоняется от таблицы: `FSK`, `GFSK`, `GMSK`, `MSK` → один и тот же `satnogs_fsk_ax25.py` : Все четыре — квадратурная демодуляция с восстановлением тактовой частоты Мюллера—Мюллера и декодером AX.25. Разница между модуляциями поглощается фильтрами, отдельных флоуграфов под них нет. `FSK` на 50000 или 400000 бод → `satnogs_fsk_phasma_decoder.py` : Подмена скрипта происходит **после** того, как `--baudrate` уже подставлен, так что PHASMA получает исходный бодрейт. Ни в каком журнале это не отражается. `GFSK Pkst` → дополнительно `--frame-size=192` : Подставляется, только если задан `--baud`. Без бодрейта размер кадра не передаётся и флоуграф использует своё значение по умолчанию. `CW` → `--wpm` вместо `--baudrate` : Клиент передаёт скорость передачи в словах в минуту через тот же `--baud`; диспетчер переименовывает параметр. `SSTV` → `satnogs_fm.py` : Изменение форка: режим `SSTV` теперь просто записывает аудио, а не декодирует изображение. Прежнее поведение доступно под отдельным режимом `SSTV_PD120`. Неизвестный режим : Любая строка не из таблицы приводит к `UNKNOWN` (`satnogs_unknown_transmission.py`) с бодрейтом 48000, если `--baud` не задан. Наблюдение не падает — записывается широкополосный сигнал. ## Флоуграфы вне таблицы Собираются и устанавливаются, но не соответствуют ни одному режиму, то есть из клиента недостижимы: - `generic/iq_receiver.grc` — только IQ и водопад, с отключаемой доплер-компенсацией; - `generic/example_flowgraph.grc` — минимальный шаблон для новых флоуграфов. Запускать их можно вручную, как обычные скрипты (`satnogs_iq_receiver.py --help`). ## Добавление режима См. [](dev/adding-flowgraph.md): недостаточно положить `.grc` — нужны записи в `SATNOGS_FLOWGRAPH_SCRIPTS`, `SATNOGS_FLOWGRAPH_MODES` и в списке `set(flowgraphs …)` соответствующего `CMakeLists.txt`.