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:
+15
-17
@@ -27,11 +27,9 @@ unit AndromedaMap;
|
||||
«индикатор → номер LED (ZZZI)». Без логики и без зависимостей от
|
||||
контроллера — этим занимается AndromedaPanel.pas.
|
||||
|
||||
Соответствие протоколу Thetis:
|
||||
• действия кнопок/энкодеров — подмножество EButtonBarActions / EEncoderActions;
|
||||
• номера LED-индикаторов (ZZZI nn) зеркалят дефолтную таблицу Thetis
|
||||
(MakeNewAndromedaDataset): 1=MOX, 3=Tune, 7=CTUN и т.д. Свободные слоты
|
||||
12..17 заняты функциями ewsdr (Split/NB/NR/SNB/ANF/Squelch).
|
||||
Таблицы соответствуют нумерации команд аппаратной панели. Для LED-индикаторов
|
||||
используются номера 1=MOX, 3=Tune, 7=CTUN и т.д.; свободные слоты 12..17
|
||||
заняты функциями EWSDR (Split/NB/NR/SNB/ANF/Squelch).
|
||||
}
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
@@ -44,18 +42,18 @@ type
|
||||
abNone, abMOX, abTune, abBandUp, abBandDown, abModeUp, abModeDown,
|
||||
abMute, abNB, abNR, abSNB, abANF, abVFOSplit, abVFOSwap, abCTUN,
|
||||
abCTCSS, abSquelch, abFilterUp, abFilterDown,
|
||||
abVFOAtoB, // копировать VFO A → B (Thetis eBBVFOAtoB)
|
||||
abVFOBtoA, // копировать VFO B → A (Thetis eBBVFOBtoA)
|
||||
abVFOLock, // блокировка перестройки VFO (Thetis eBBVFOLockOnOff)
|
||||
abStartStop, // старт/стоп SDR (Thetis eBBStartStop)
|
||||
abShift); // модификатор band-keypad (Thetis eBBShift) — обрабатывается в панели
|
||||
abVFOAtoB, // копировать VFO A → B
|
||||
abVFOBtoA, // копировать VFO B → A
|
||||
abVFOLock, // блокировка перестройки VFO
|
||||
abStartStop, // старт/стоп SDR
|
||||
abShift); // модификатор band-keypad — обрабатывается в панели
|
||||
|
||||
// Параметр, управляемый поворотным энкодером панели.
|
||||
TAndEncoder = (
|
||||
aeNone, aeAFGain, aeAGCLevel, aeDrive, aeSquelch,
|
||||
aeFilterWidth, aeFilterHigh, aeFilterLow, aeMulti);
|
||||
|
||||
// Индикатор (LED) панели. Порядок зеркалит EIndicatorActions Thetis.
|
||||
// Индикатор (LED) панели в порядке протокольной нумерации.
|
||||
TAndIndicator = (
|
||||
aiNone, aiMOX, aiTune, aiRIT, aiXIT, aiSplit, aiCTune, aiVFOSync,
|
||||
aiVFOAB, aiVFOLock, aiNB, aiNR, aiSNB, aiANF, aiSquelch,
|
||||
@@ -67,8 +65,8 @@ const
|
||||
AND_MAX_ENCODERS = 20;
|
||||
|
||||
// Раскладка кнопок: индекс = номер кнопки (0-based), значение = действие.
|
||||
// Нумерация совпадает с дефолтом Thetis (MakeNewAndromedaDataset): наш 0-based
|
||||
// индекс = «Pushbutton Number» Thetis − 1. Проверено на реальной панели
|
||||
// Внутренний индекс 0-based на единицу меньше номера кнопки в протоколе.
|
||||
// Нумерация проверена на реальной панели
|
||||
// (см. andromeda_test/AndDecode.pas). Неназначенные / отсутствующий тракт → abNone.
|
||||
AND_BUTTON_MAP: array[0..AND_MAX_BUTTONS-1] of TAndButton = (
|
||||
abMute, // 0 RX1 Mute
|
||||
@@ -121,14 +119,14 @@ const
|
||||
abTune); // 47 TUN
|
||||
|
||||
// Раскладка энкодеров: индекс = номер энкодера (0-based), значение = параметр.
|
||||
// Нумерация = «Encoder Number» Thetis − 1 (дефолт MakeNewAndromedaDataset).
|
||||
// Энкодер #1 в Thetis — AGC Level (слайдер RF), поэтому aeAGCLevel.
|
||||
// Внутренний индекс на единицу меньше номера энкодера в протоколе.
|
||||
// Энкодер #1 управляет AGC Level, поэтому используется aeAGCLevel.
|
||||
// #4/#5 — Filter High/Low: настоящие независимые края (как на железе G2).
|
||||
// aeFilterWidth оставлен в перечислении для раскладок, где нужен один
|
||||
// энкодер «ширина» — в дефолтной раскладке не используется.
|
||||
AND_ENCODER_MAP: array[0..AND_MAX_ENCODERS-1] of TAndEncoder = (
|
||||
aeAFGain, // 0 RX1 AF Gain
|
||||
aeAGCLevel, // 1 RX1 AGC Level (Thetis «RF»)
|
||||
aeAGCLevel, // 1 RX1 AGC Level
|
||||
aeNone, // 2 RX2 AF — нет второго приёмника
|
||||
aeNone, // 3 RX2 AGC
|
||||
aeFilterHigh, // 4 Filter High — верхний край
|
||||
@@ -142,7 +140,7 @@ const
|
||||
aeNone, aeNone, aeNone, aeNone, aeNone, aeNone, aeNone, aeNone);
|
||||
|
||||
// Номер LED (ZZZI nn) для каждого индикатора; 0 = панель этот индикатор не имеет.
|
||||
// 1..11 — дефолт Thetis; 12..17 — функции ewsdr на свободных слотах.
|
||||
// 1..11 — базовая раскладка панели; 12..17 — функции EWSDR.
|
||||
AND_INDICATOR_NUM: array[TAndIndicator] of Integer = (
|
||||
{aiNone} 0,
|
||||
{aiMOX} 1,
|
||||
|
||||
Reference in New Issue
Block a user