diff --git a/ChannelStore.pas b/ChannelStore.pas index 55b87f2..09c5db9 100644 --- a/ChannelStore.pas +++ b/ChannelStore.pas @@ -12,6 +12,7 @@ uses const CHANNELS_FILE = 'channels.json'; + CHANNEL_MODE_MAX = 11; // LSB..DMR type TChannel = record @@ -19,7 +20,7 @@ type Name: string; RXFreq: Double; // Hz TXFreq: Double; // Hz - Mode: Integer; // 0=LSB 1=USB 2=DSB 3=CWL 4=CWU 5=FM 6=AM 7=SAM + Mode: Integer; // 0=LSB ... 10=WFM 11=DMR RptDir: Integer; // 0=none 1=minus 2=plus RptOffsetHz: Double; // Hz CTCSSOn: Boolean; @@ -206,7 +207,7 @@ begin Ch.Name := JS(O, 'name', 'Channel'); Ch.RXFreq := JD(O, 'rx_freq', 145500000.0); Ch.TXFreq := JD(O, 'tx_freq', 145500000.0); - Ch.Mode := EnsureRange(JI(O, 'mode', 5), 0, 7); + Ch.Mode := EnsureRange(JI(O, 'mode', 5), 0, CHANNEL_MODE_MAX); Ch.RptDir := EnsureRange(JI(O, 'rpt_dir', 0), 0, 2); Ch.RptOffsetHz:= JD(O, 'rpt_offset', 600000.0); Ch.CTCSSOn := JB(O, 'ctcss_on', False); diff --git a/Settings.pas b/Settings.pas index 0163808..94c790f 100644 --- a/Settings.pas +++ b/Settings.pas @@ -12,6 +12,7 @@ const SETTINGS_FILE = 'hpsdr_settings.json'; CFG_BAND_COUNT = 12; CFG_XVTR_COUNT = 8; // количество XVTR-слотов (трансверторов) + CFG_MODE_MAX = 11; // LSB..DMR; keep persisted-mode validation current CFG_PANS_MAX = 4; // потолок панадаптеров (пан 0 + доп.) — = WDSPEngine.MAX_PANS QO100_SLOT = CFG_XVTR_COUNT - 1; // последний слот зарезервирован под QO-100 // (split-LO транспондер; настраивается на @@ -1518,7 +1519,7 @@ begin X.Entries[i].RXAntenna := EnsureRange(JI(EObj, 'rx_ant', X.Entries[i].RXAntenna), 0, 3); X.Entries[i].LastFreq := JD(EObj, 'last_freq', X.Entries[i].LastFreq); X.Entries[i].LastFreqB := JD(EObj, 'last_freq_b', X.Entries[i].LastFreqB); - X.Entries[i].LastMode := EnsureRange(JI(EObj, 'last_mode', X.Entries[i].LastMode), 0, 7); + X.Entries[i].LastMode := EnsureRange(JI(EObj, 'last_mode', X.Entries[i].LastMode), 0, CFG_MODE_MAX); X.Entries[i].LastFilterIdx := EnsureRange(JI(EObj, 'last_filt', X.Entries[i].LastFilterIdx), 0, 9); X.Entries[i].LastFMSQOn := JB(EObj, 'last_fmsq_on', X.Entries[i].LastFMSQOn); X.Entries[i].LastFMSQLevel := EnsureRange(JI(EObj, 'last_fmsq_lvl', X.Entries[i].LastFMSQLevel), 0, 100);