mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
chore: refine project documentation
This commit is contained in:
+31
-35
@@ -33,8 +33,7 @@ const
|
||||
CFG_BAND_COUNT = 12;
|
||||
CFG_XVTR_COUNT = 8; // количество XVTR-слотов (трансверторов)
|
||||
OC_PIN_COUNT = 7; // количество Open Collector выходов (Penny/Alex)
|
||||
// TX pin action (byte-константы, как TXPinActions в Thetis Penny.cs):
|
||||
// при каком состоянии передачи пин активен.
|
||||
// TX pin action: определяет, при каком состоянии передачи пин активен.
|
||||
OCA_MOX = 0; // только обычный TX (не TUNE, не 2TON)
|
||||
OCA_TUNE = 1; // только TUNE
|
||||
OCA_TWOTONE = 2; // только 2TON
|
||||
@@ -52,7 +51,7 @@ const
|
||||
QO100_SLOT = CFG_XVTR_COUNT - 1; // последний слот зарезервирован под QO-100
|
||||
// (split-LO транспондер; настраивается на
|
||||
// отдельной странице, не в общей XVTR-таблице)
|
||||
// PA gain defaults (dB) — match Thetis HERMES/HPSDR defaults
|
||||
// PA gain defaults (dB) for HERMES/HPSDR hardware.
|
||||
// order: 160m,80m,60m,40m,30m,20m,17m,15m,12m,10m,6m
|
||||
// 12-й слот — пустой в HF-плане (используется только 12-местным VHF/UHF-планом
|
||||
// Pluto, где частота/режим приходят из плана BoardUtils, а не отсюда).
|
||||
@@ -128,7 +127,7 @@ const
|
||||
('6.25k', '10k', '12.5k', '20k', '25k');
|
||||
|
||||
// --- Редактируемая таблица фильтров -------------------------------------
|
||||
// 10 пресетов + VAR1/VAR2 на режим (паритет с Thetis FilterForm). Кромки
|
||||
// 10 пресетов + VAR1/VAR2 на режим. Кромки
|
||||
// ЗНАКОВЫЕ и хранятся ПО РЕЖИМУ: у LSB своя строка (-2800..-100), у USB
|
||||
// своя — поэтому при применении фильтра конвертировать боковую больше не
|
||||
// нужно, и таблица знака в проекте остаётся ровно одна (FilterEdgesFromBW,
|
||||
@@ -249,11 +248,11 @@ type
|
||||
// Mic gain (dB, применяется в WDSP PanelGain1)
|
||||
MicGainDB: Double; // -10..+30
|
||||
// ATT on TX — ослабление RX-ADC во время передачи (защита от утечки TX).
|
||||
// DUC Specific bytes 57/58/59 (StepAtten 0/1/2). Thetis default: 31 dB.
|
||||
// DUC Specific bytes 57/58/59 (StepAtten 0/1/2), default 31 dB.
|
||||
AttOnTX: Integer; // 0..31 dB
|
||||
// Tune (кнопка TUN) — генерация тонального сигнала через WDSP PostGen.
|
||||
// Уровень — отдельный от слайдера Drive, проходит через ту же
|
||||
// per-band калибровку. Thetis defaults: level=10 %, freq=750 Hz.
|
||||
// per-band калибровку. Defaults: level=10 %, freq=750 Hz.
|
||||
TUNLevel: Integer; // 0..100 (% от полной шкалы Drive)
|
||||
TUNFreq: Integer; // Hz, обычно 600..1500 для SSB tune
|
||||
// TX bandpass filter
|
||||
@@ -301,11 +300,11 @@ type
|
||||
TXWfDetector: Integer;
|
||||
TXWfAvgMode: Integer;
|
||||
TXWfAvgTimeMS: Double;
|
||||
// TX Grid (отдельные от RX — Thetis отрисовывает спектр TX в своих границах)
|
||||
// TX Grid задаётся отдельно от RX и использует собственные границы.
|
||||
TXSpecRefLevel: Double; // dBm reference (top of scale), e.g. 0
|
||||
TXSpecRange: Double; // dB range, e.g. 80
|
||||
TXSpecGridStep: Double; // grid step in dB, e.g. 10
|
||||
// PureSignal (WDSP calcc; дефолты = Thetis PSForm, протокол 2)
|
||||
// PureSignal (WDSP calcc, протокол 2)
|
||||
PSMoxDelay: Double; // с — задержка после MOX до сбора feedback (0.2)
|
||||
PSLoopDelay: Double; // с — пауза между итерациями калибровки (0)
|
||||
PSTXDelayNs: Integer; // нс — компенсация задержки TX-тракта (150)
|
||||
@@ -318,7 +317,7 @@ type
|
||||
PSHWPeak: Double; // SetPk (0.2899 для P2, 0.6121 Saturn)
|
||||
PSTTFreq1: Integer; // Гц — тон 1 двухтональника (700)
|
||||
PSTTFreq2: Integer; // Гц — тон 2 двухтональника (1900)
|
||||
// Калибровка фидбек-тракта (Thetis-Enhanced eu2av): на Orion MkII цель 152
|
||||
// Калибровка фидбек-тракта: на Orion MkII цель 152
|
||||
// перегружает входные каскады ADC → IMD-«юбка», оптимум FB≈22 при ATT≈10дБ.
|
||||
PSFBTarget: Integer; // цель уровня feedback info[4]; 0 = авто по плате
|
||||
// (Orion MkII → 22, иначе 152)
|
||||
@@ -331,10 +330,9 @@ type
|
||||
// мы только отдаём ему параметры (DUC Specific байты 5..13, 17). Поэтому
|
||||
// почти всё здесь — свойство устройства, а не «звука», и живёт отдельно от
|
||||
// TTXSettings/TTXProfile (профиль голоса телеграф не переключает).
|
||||
// Раскладка байта 5 — HPSDRProtocol.CW_*; эталон Thetis (console.cs/setup.cs)
|
||||
// и pihpsdr (new_protocol.c:1353).
|
||||
// Раскладка байта 5 задана константами HPSDRProtocol.CW_*.
|
||||
TCWSettings = record
|
||||
Pitch: Integer; // Гц, тон приёма/сайдтона (Thetis default 600)
|
||||
Pitch: Integer; // Гц, тон приёма/сайдтона, default 600
|
||||
// Память сообщений для программной передачи (окно CW Messages, F1..F8).
|
||||
Messages: array[0..CW_MSG_COUNT-1] of string[63];
|
||||
// Манипуляция разрешена вообще (False = телеграф без кейера: MOX + голосом
|
||||
@@ -348,7 +346,7 @@ type
|
||||
Weight: Integer; // 33..66 (50 = точка:пауза 1:1)
|
||||
BreakIn: Boolean; // прошивка сама поднимает PTT на нажатие ключа
|
||||
HangTimeMS: Integer; // сколько держать TX после последнего элемента
|
||||
RampMS: Integer; // форма фронта посылки (Thetis зашил 9 мс)
|
||||
RampMS: Integer; // форма фронта посылки, default 9 мс
|
||||
RFDelayMS: Integer; // задержка РЧ после PTT (byte 13, реле/усилитель)
|
||||
SidetoneHW: Boolean; // тон в наушники САМОГО трансивера (байт 5/6)
|
||||
SidetoneHWLevel: Integer; // 0..127
|
||||
@@ -394,8 +392,7 @@ type
|
||||
// и сетки, калибровка PureSignal) — свойство устройства, от профиля НЕ
|
||||
// зависит: переключение профиля не должно перерисовывать спектр, менять
|
||||
// задержку тракта или ломать калибровку PS.
|
||||
// Разбиение — по образцу таблицы TXProfile у Thetis (database.cs), но без
|
||||
// её хвоста из VAC/DSP-буферов, которых у нас нет.
|
||||
// Профиль не содержит параметры VAC и DSP-буферов, которых в EWSDR нет.
|
||||
TTXProfile = record
|
||||
Name: string[31];
|
||||
// Микрофонный вход (гарнитура / микшер-ESSB — физически разные входы)
|
||||
@@ -428,7 +425,7 @@ type
|
||||
EQFreqs: array[0..10] of Double;
|
||||
// Модуляция AM (несущая — часть «звука», в отличие от девиации FM)
|
||||
AMCarrierLevel: Double;
|
||||
// Мощность (Thetis держит Power/Tune_Power в профиле)
|
||||
// Мощность Power/Tune_Power хранится в профиле.
|
||||
DrivePercent: Integer; // 0..100
|
||||
TUNLevel: Integer; // 0..100
|
||||
end;
|
||||
@@ -478,12 +475,12 @@ type
|
||||
SpecPixels: Integer;
|
||||
end;
|
||||
|
||||
// TCI-сервер (протокол Expert Electronics поверх WebSocket). Авторизации в
|
||||
// TCI-сервер поверх WebSocket. Авторизации в
|
||||
// протоколе нет, поэтому умолчание слушает только петлю: логгеры и цифровые
|
||||
// программы обычно живут на том же ПК, а наружу порт открывается осознанно.
|
||||
TTCISettings = record
|
||||
Enabled: Boolean;
|
||||
Port: Integer; // 1..65535, умолчание 40001 (как у ExpertSDR3)
|
||||
Port: Integer; // 1..65535, по умолчанию 40001
|
||||
BindAddr: string; // '127.0.0.1' или '0.0.0.0'
|
||||
// ★Единственный каталог, куда TCI пишет записи линейного выхода
|
||||
// (LINE_OUT_RECORDER_SAVE). Пусто — <каталог конфигурации>/records.
|
||||
@@ -579,12 +576,11 @@ type
|
||||
|
||||
// OC Control (Open Collector выходы Penny/Alex, byte 1401 HP packet).
|
||||
// Только openHPSDR — у AD936x (Pluto/LibreSDR) такого выхода нет.
|
||||
// Хранятся в JSON-секции "oc" под MAC. Портировано из Thetis
|
||||
// (Console/setup.cs UpdateOCBits + Console/HPSDR/Penny.cs), объём сокращён:
|
||||
// Хранятся в JSON-секции "oc" под MAC. Поддерживается сокращённый набор:
|
||||
// без PA-override/hot-switching внешнего PA (в EWSDR нет такой концепции
|
||||
// на панели) и без split-pins VFO A/B (у EWSDR мультислайсы).
|
||||
// HF-группа — 11 диапазонов (0=160m..10=6m, как в TAlexSettings).
|
||||
// VHF-группа — 8 слотов XVTR (аналог Thetis VHF0-13, но по нашим слотам).
|
||||
// VHF-группа — 8 слотов XVTR по внутренней нумерации EWSDR.
|
||||
TOCPinActions = array[0..OC_PIN_COUNT-1] of Byte; // OCA_* на пин
|
||||
|
||||
TOCSettings = record
|
||||
@@ -599,13 +595,13 @@ type
|
||||
|
||||
// Калибровки (вкладка Calibration): детектор мощности/КСВ Alex-моста,
|
||||
// напряжение/ток питания, S-метр. Модель детектора задаёт константы моста
|
||||
// (Vref/bridge_volt/ADC-offset, как в Thetis computeAlexFwdPower).
|
||||
// (Vref, bridge voltage и ADC offset).
|
||||
TCalibration = record
|
||||
PwrDetModel: Integer; // 0=ANAN-10/100 (3.3V), 1=ANAN-200D, 2=ANAN-7000DLE/Anvelina Pro 3, 3=ANAN-8000DLE/Orion MkII
|
||||
PADetCal: array[0..CFG_BAND_COUNT-1] of Double; // множитель FWD/REV на банд, 0.50..2.00 (1.0 = без коррекции)
|
||||
SupplyVoltCal: Double; // множитель напряжения питания (1.0 = без коррекции)
|
||||
AmpVoffMV: Double; // сдвиг нуля датчика тока, мВ (Thetis default 360)
|
||||
AmpSensMVA: Double; // чувствительность датчика тока, мВ/А (Thetis default 120)
|
||||
AmpVoffMV: Double; // сдвиг нуля датчика тока, мВ
|
||||
AmpSensMVA: Double; // чувствительность датчика тока, мВ/А
|
||||
// Офсет S-метра, дБ — раздельно на диапазон и на слот трансвертера (усиление
|
||||
// тракта разное на 160м и на 10м, а у XVTR своё — конвертер/LNB). Смысл
|
||||
// индекса диапазона задаёт band-план железа (HF у openHPSDR, VHF/UHF у
|
||||
@@ -613,11 +609,11 @@ type
|
||||
SMeterBandDB: array[0..CFG_BAND_COUNT-1] of Double;
|
||||
SMeterXvtrDB: array[0..CFG_XVTR_COUNT-1] of Double;
|
||||
// Офсет спектра/водопада, дБ — та же разбивка. Отдельно от S-метра (как
|
||||
// Display Cal Offset в Thetis): у display-тракта своё окно/детектор, и его
|
||||
// Display Cal Offset: у display-тракта своё окно/детектор, и его
|
||||
// уровень отличается от показаний стрелки на пару дБ.
|
||||
DispBandDB: array[0..CFG_BAND_COUNT-1] of Double;
|
||||
DispXvtrDB: array[0..CFG_XVTR_COUNT-1] of Double;
|
||||
// Частотная калибровка опорника, ppm (Frequency Calibration в Thetis).
|
||||
// Частотная калибровка опорника, ppm.
|
||||
// Смысл: «опора выше номинала на N ppm» ⇒ до правки сигналы показываются
|
||||
// ниже истинной частоты; положительное значение поднимает показания.
|
||||
// Действует на всё железо разом; ручные LOError/TO Error трансвертеров
|
||||
@@ -720,8 +716,8 @@ type
|
||||
// Индекс = слот слайса (0 = слайс B), см. CFG_CAT_SLICE_COUNT.
|
||||
CATSliceEnabled: array[0..CFG_CAT_SLICE_COUNT-1] of Boolean;
|
||||
CATSlicePort: array[0..CFG_CAT_SLICE_COUNT-1] of Integer; // 19091, 19092, …
|
||||
// Auto TX (аналог «Auto Switch TX Slice» в SmartSDR CAT): команда TX по
|
||||
// CAT-порту слайса сама назначает этот слайс источником передачи.
|
||||
// Auto TX: команда TX по CAT-порту слайса сама назначает этот слайс
|
||||
// источником передачи.
|
||||
CATSliceAutoTX: array[0..CFG_CAT_SLICE_COUNT-1] of Boolean;
|
||||
// Аудио слота слайса: имена PortAudio-устройств ('' = общий выход
|
||||
// приложения / общий вход). Имена, а не индексы: порядок перечисления
|
||||
@@ -1710,21 +1706,21 @@ begin
|
||||
T.MicBias := True;
|
||||
T.LineInGainDB := 0.0; // 0 dB
|
||||
T.MicGainDB := 10.0;
|
||||
// ATT on TX — Thetis default 31 dB (полная защита RX-ADC во время передачи)
|
||||
// ATT on TX — default 31 dB (полная защита RX-ADC во время передачи)
|
||||
T.AttOnTX := 31;
|
||||
// Tune — Thetis defaults
|
||||
// Tune defaults
|
||||
T.TUNLevel := 10;
|
||||
T.TUNFreq := 750;
|
||||
// SSB-фильтр по умолчанию
|
||||
T.FilterLow := 200;
|
||||
T.FilterHigh := 3100;
|
||||
T.FilterNC := 1024;
|
||||
T.FilterMP := 1; // Low Latency (как в piHPSDR)
|
||||
T.FilterMP := 1; // Low Latency
|
||||
T.FilterWindow := 1; // BH4 / Blackman-Harris
|
||||
// Compressor — выкл по умолчанию
|
||||
T.CompressorOn := False;
|
||||
T.CompressorGain:= 5.0;
|
||||
// Leveler — вкл, типичные значения piHPSDR/Thetis
|
||||
// Leveler включён с типичными начальными значениями.
|
||||
T.LevelerOn := True;
|
||||
T.LevelerTop := 5.0;
|
||||
T.LevelerDecay := 500;
|
||||
@@ -1767,7 +1763,7 @@ begin
|
||||
T.TXSpecRefLevel := 0.0;
|
||||
T.TXSpecRange := 80.0;
|
||||
T.TXSpecGridStep := 10.0;
|
||||
// PureSignal — дефолты Thetis PSForm (протокол 2)
|
||||
// PureSignal — значения по умолчанию для протокола 2.
|
||||
T.PSMoxDelay := 0.2;
|
||||
T.PSLoopDelay := 0.0;
|
||||
T.PSTXDelayNs := 150;
|
||||
@@ -1868,7 +1864,7 @@ end;
|
||||
class procedure TSettingsManager.DefaultCW(out C: TCWSettings);
|
||||
begin
|
||||
FillChar(C, SizeOf(C), 0);
|
||||
C.Pitch := 600; // Thetis cw_pitch default
|
||||
C.Pitch := 600; // default CW pitch
|
||||
C.FWKeyer := True; // тайминги в FPGA — джиттер PC не влияет
|
||||
C.KeyerMode := 2; // Iambic B
|
||||
C.ReverseKeys := False;
|
||||
@@ -1877,7 +1873,7 @@ begin
|
||||
C.Weight := 50;
|
||||
C.BreakIn := True;
|
||||
C.HangTimeMS := 300;
|
||||
C.RampMS := 9; // Thetis SetCWEdgeLength(9)
|
||||
C.RampMS := 9; // default CW edge length
|
||||
C.RFDelayMS := 0;
|
||||
C.SidetoneHW := True;
|
||||
C.SidetoneHWLevel := 50;
|
||||
|
||||
Reference in New Issue
Block a user