mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
feature(pluto): компенсация hardwaregain в уровнях + живое усиление в блоке RF AGC
На Pluto шкала dBm ничего не значила: усиление тракта 0..73 дБ входит в показания напрямую, а в режимах AGC железо крутит его само, и картинка «дышит» вместе с ним. - RadioBackend: виртуальный RxGainNowDb (TELEMETRY_NONE = регулируемого усиления нет, как у openHPSDR с его аттенюатором). - PlutoBackend: в MANUAL отдаёт FGainDb (точно, без опроса железа), в режимах AGC — hardwaregain из телеметрического потока (читается там же, где rssi, ~2 Гц, не блокируя UI). - RadioController: AttenCalDB -> FrontEndCalDB, общее понятие «регулируемое усиление входа»: openHPSDR +FAtten (аттенюатор режет), AD936x -hardwaregain (усиление поднимает). Постоянная часть тракта (LNB, кабель, конвертер) остаётся за таблицами калибровки на диапазон/трансвертер. - UI: в блоке RF AGC при режиме != MANUAL вместо надписи «AGC» — фактическое усиление («~38dB», тильда = измеренное), ползунок ездит сам. Видно, что цифра гуляет, а уровни на спектре стоят. Ограничения: FAST AGC крутит усиление быстрее опроса (2 Гц), для стабильной шкалы нужен MANUAL или SLOW; шумовая полка при смене усиления немного едет — это физика (input-referred NF), компенсацию проверять по сигналу. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -199,6 +199,11 @@ type
|
||||
// RSSI приёмника (дБ). HPSDR — нет такой (использует HP-status), возвращает False.
|
||||
// Недоступные значения = TELEMETRY_NONE.
|
||||
function ReadTelemetry(out TempC, SocTempC, RSSIdB: Double): Boolean; virtual;
|
||||
// Текущее усиление приёмного тракта (дБ), если оно есть в железе и может
|
||||
// меняться само: AD936x hardwaregain (в режимах AGC железо крутит его сам).
|
||||
// Нужно для абсолютной шкалы уровней — контроллер вычитает его из показаний.
|
||||
// HPSDR: усиления нет (есть аттенюатор), возвращает TELEMETRY_NONE.
|
||||
function RxGainNowDb: Double; virtual;
|
||||
|
||||
// ---- Свойства состояния (полиморфные через виртуальные геттеры) ----
|
||||
property Connected: Boolean read GetConnected;
|
||||
@@ -300,6 +305,11 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
function TRadioBackend.RxGainNowDb: Double;
|
||||
begin
|
||||
Result := TELEMETRY_NONE;
|
||||
end;
|
||||
|
||||
procedure TRadioBackend.SetTxAtten(Db: Double);
|
||||
begin
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user