mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
feat(oc): OC Control — Open Collector выходы Penny/Alex (эталон Thetis)
Byte 1401 High Priority packet: per-band (HF 160m-6m) и per-slot (XVTR) RX/TX-маски на 7 пинов + TX pin action (MOX/TUNE/2TON и комбинации). Только openHPSDR — у Pluto/AD936x такого выхода нет, вкладка Settings скрывается на этом бэкенде. Настройки — вкладка "OC Control" в SettingsForm. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+25
-6
@@ -591,6 +591,7 @@ type
|
||||
// восстанавливаются позже и должны встать на свои звуковухи.
|
||||
procedure ApplySliceSlotAudio;
|
||||
procedure OnAlexSettingsChange(const A: TAlexSettings);
|
||||
procedure OnOCSettingsChange(const O: TOCSettings);
|
||||
procedure OnXvtrSettingsChange(const X: TXvtrSettings);
|
||||
procedure PushXvtrToWeb;
|
||||
procedure PushRatePresetsToWeb; // backend sample-rate пресеты → web
|
||||
@@ -1234,6 +1235,7 @@ begin
|
||||
// Дефолты TX, Alex и XVTR (на случай если устройство ещё не выбрано).
|
||||
TSettingsManager.DefaultTX(FController.FTXSettings);
|
||||
TSettingsManager.DefaultAlex(FController.FAlexSettings);
|
||||
TSettingsManager.DefaultOC(FController.FOCSettings);
|
||||
TSettingsManager.DefaultXvtr(FController.FXvtrSettings);
|
||||
FController.FCurrentXvtr := -1;
|
||||
|
||||
@@ -4404,7 +4406,7 @@ begin
|
||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||
begin
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel,
|
||||
FController.FTransmitting, True, True);
|
||||
FController.FTransmitting, True, True, FController.FTuning, FController.FTwoTone);
|
||||
FController.FNetwork.SendFullHP;
|
||||
end;
|
||||
end;
|
||||
@@ -4426,7 +4428,7 @@ begin
|
||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||
begin
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel,
|
||||
FController.FTransmitting, True, True);
|
||||
FController.FTransmitting, True, True, FController.FTuning, FController.FTwoTone);
|
||||
FController.FNetwork.SendFullHP;
|
||||
end;
|
||||
end;
|
||||
@@ -4926,7 +4928,8 @@ begin
|
||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||
begin
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq),
|
||||
XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True);
|
||||
XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True,
|
||||
FController.FTuning, FController.FTwoTone);
|
||||
FController.FNetwork.SendFullHP;
|
||||
end;
|
||||
if FController.FCurrentXvtr < 0 then
|
||||
@@ -7608,7 +7611,7 @@ begin
|
||||
end;
|
||||
FController.FDriveLevel := CalcDriveByte;
|
||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True);
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True, FController.FTuning, FController.FTwoTone);
|
||||
end;
|
||||
|
||||
procedure TMainForm.OnPlutoTxMaxAttChange(MaxAttDb: Double);
|
||||
@@ -7643,7 +7646,7 @@ begin
|
||||
end;
|
||||
FController.FDriveLevel := CalcDriveByte;
|
||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True);
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True, FController.FTuning, FController.FTwoTone);
|
||||
end;
|
||||
|
||||
procedure TMainForm.OnTXSettingsChange(const T: TTXSettings);
|
||||
@@ -7686,7 +7689,7 @@ begin
|
||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||
begin
|
||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslateTX(ActiveTXFreqHz), FController.FDriveLevel,
|
||||
FController.FTransmitting, True, True);
|
||||
FController.FTransmitting, True, True, FController.FTuning, FController.FTwoTone);
|
||||
FController.FNetwork.SendFullHP;
|
||||
end;
|
||||
end;
|
||||
@@ -7711,6 +7714,18 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.OnOCSettingsChange(const O: TOCSettings);
|
||||
begin
|
||||
FController.FOCSettings := O;
|
||||
if FController.FNetwork.Connected then
|
||||
FController.FNetwork.SetOCConfig(O);
|
||||
if FController.FDevConnected then
|
||||
begin
|
||||
FController.FSettings.SaveOC(FController.FDevMAC, O);
|
||||
FController.FSettings.Save;
|
||||
end;
|
||||
end;
|
||||
|
||||
// ===========================================================================
|
||||
// XVTR (Transverter) integration
|
||||
// ===========================================================================
|
||||
@@ -8493,6 +8508,7 @@ begin
|
||||
SF.OnTXChange := OnTXSettingsChange;
|
||||
SF.OnAlexChange := OnAlexSettingsChange;
|
||||
SF.OnXvtrChange := OnXvtrSettingsChange;
|
||||
SF.OnOCChange := OnOCSettingsChange;
|
||||
SF.OnWfAGCNFChange := ApplyWfAGCNF;
|
||||
SF.OnADCChange := ApplyADCSettings;
|
||||
SF.OnWebSettingsChange := ApplyWebSettings;
|
||||
@@ -8511,6 +8527,9 @@ begin
|
||||
SF.SetCalibrationBackend(FController.BackendCaps.Kind = bkPluto);
|
||||
SF.LoadAnt936x(FController.Ant936x, FController.FXvtrSettings);
|
||||
SF.LoadXvtrSettings(FController.FXvtrSettings);
|
||||
SF.LoadOCSettings(FController.FOCSettings);
|
||||
// Вкладка OC Control — только openHPSDR, у Pluto/AD936x нет такого выхода.
|
||||
SF.SetOCBackend(FController.BackendCaps.Kind = bkPluto);
|
||||
SF.LoadPASettings(FController.FPAMaxPower, FController.FPABandCal);
|
||||
SF.LoadCalibration(FController.FCal);
|
||||
SF.LoadPlutoTxMaxAtt(FController.FPlutoTxMaxAttDb);
|
||||
|
||||
Reference in New Issue
Block a user