mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
fix(tx): профиль по модуляции — детерминированное правило + пробелы вызова
Три связанных правки по отзывам с эфира. 1. Активный профиль однозначно определяется парой «TX-источник + его модуляция»: ячейка таблицы заполнена — её профиль, пуста — базовый (первый в списке). Прежняя «точка возврата» (запомнить, что было активно до автоматики) ломалась в самом частом случае: заходя в FM, оператор обычно УЖЕ имел активным профиль FM с прошлого захода, точка возврата записывала его же, и выход в USB ничего не менял. Плюс она жила только в сессии и после перезапуска не работала вовсе. Поле FTXProfPreAuto удалено. Ручной выбор (дропдаун TX, список настроек, пилюля флага) дополнительно ЗАПОМИНАЕТСЯ за текущей парой — это и есть обещанное «профиль помнится по виду модуляции»: раньше в таблицу писала только пилюля, а выбор дропдауном следа не оставлял. В DMR и FMRAW автоматика активный профиль не трогает вовсе. 2. Смена диапазона и вход/выход трансвертера меняют режим главного в ApplyBandDSP (FMode := B.Mode) МИМО SetMode, поэтому автоматика там не вызывалась и при переходе КВ↔трансвертер оставался профиль прошлого режима. Зовём и оттуда. Заодно: FDSPEngine.SetMode насильно ставит FTXMode в режим главного, а SetMode контроллера следом возвращает режим источника — ApplyBandDSP этого не делала, и передача со слайса после смены диапазона уезжала в чужую модуляцию. 3. Кнопка выбора TX-профиля гаснет, когда режим ИСТОЧНИКА передачи DMR или FMRAW (в DMR передатчика нет, в FMRAW профиль обходится); открытый список закрывается. Гейт по источнику, а не по главному: с главным в DMR можно передавать со слайса. Смена режима на слайсе теперь тоже пересчитывает доступность TX-контролов — это чинит и MOX/TUN/PS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3840,6 +3840,18 @@ begin
|
||||
TuneAllowed := MOXAllowed and (FController.ActiveTXMode <> MODE_FMRAW);
|
||||
BtnMOX.Enabled := MOXAllowed;
|
||||
BtnTUN.Enabled := TuneAllowed;
|
||||
// Выбор TX-профиля: в DMR передатчика нет вовсе, в FM RAW профиль ни на что
|
||||
// не влияет (ApplyTXModeSettings глушит там всю обработку). Гейт по режиму
|
||||
// ИСТОЧНИКА передачи, а не главного приёмника: с главным в DMR можно
|
||||
// передавать со слайса, и там профиль по-прежнему нужен. Run не требуем —
|
||||
// профиль выбирается и оффлайн, как и на вкладке настроек.
|
||||
if BtnTXProfile <> nil then
|
||||
begin
|
||||
BtnTXProfile.Enabled :=
|
||||
not (FController.ActiveTXMode in [MODE_DMR, MODE_FMRAW]);
|
||||
if (not BtnTXProfile.Enabled) and (FTXProfileDropDown <> nil) then
|
||||
FTXProfileDropDown.ClosePopup; // открытый список закрываем сами
|
||||
end;
|
||||
UpdatePSButtons;
|
||||
end;
|
||||
|
||||
@@ -6026,6 +6038,8 @@ begin
|
||||
FController.SetSliceModeBW(CurSliceId, Mode, FilterBW);
|
||||
PushFlagStateAllPans(CurSliceId);
|
||||
LayoutFlagsAllPans;
|
||||
// Режим ИСТОЧНИКА передачи мог смениться — MOX/TUN/PS/профиль гейтятся им.
|
||||
UpdateTXControlAvailability;
|
||||
Exit;
|
||||
end;
|
||||
// Main flag A and the left panel edit the same receiver. Use the public
|
||||
|
||||
Reference in New Issue
Block a user