from owrx.controllers.settings import SettingsFormController, SettingsBreadcrumb from owrx.form.section import Section from owrx.form.input import CheckboxInput, NumberInput, DropdownInput, Js8ProfileCheckboxInput, MultiCheckboxInput, Option, TextInput from owrx.form.input.wfm import WfmTauValues from owrx.form.input.wsjt import Q65ModeMatrix, WsjtDecodingDepthsInput from owrx.form.input.converter import OptionalConverter from owrx.wsjt import Fst4Profile, Fst4wProfile from owrx.breadcrumb import Breadcrumb, BreadcrumbItem class DecodingSettingsController(SettingsFormController): def getTitle(self): return "Demodulation and decoding" def get_breadcrumb(self) -> Breadcrumb: return SettingsBreadcrumb().append(BreadcrumbItem("Demodulation and decoding", "settings/decoding")) def getSections(self): return [ Section( "Demodulator settings", NumberInput( "squelch_auto_margin", "Auto-Squelch threshold", infotext="Offset to be added to the current signal level when using the auto-squelch", append="dB", ), DropdownInput( "wfm_deemphasis_tau", "Tau setting for WFM (broadcast FM) deemphasis", WfmTauValues, infotext='See this Wikipedia article for more information', ), ), Section( "Digital voice", TextInput( "digital_voice_codecserver", "Codecserver address", infotext="Address of a remote codecserver instance (name[:port]). Leave empty to use local" + " codecserver", converter=OptionalConverter(), ), CheckboxInput( "digital_voice_dmr_id_lookup", 'Enable lookup of DMR ids in the ' + "radioid database to show callsigns and names", ), CheckboxInput( "digital_voice_nxdn_id_lookup", 'Enable lookup of NXDN ids in the ' + "radioid database to show callsigns and names", ), ), Section( "Digimodes", NumberInput("digimodes_fft_size", "Digimodes FFT size", append="bins"), ), Section( "Decoding settings", NumberInput("decoding_queue_workers", "Number of decoding workers"), NumberInput("decoding_queue_length", "Maximum length of decoding job queue"), NumberInput( "wsjt_decoding_depth", "Default WSJT decoding depth", infotext="A higher decoding depth will allow more results, but will also consume more cpu", ), WsjtDecodingDepthsInput( "wsjt_decoding_depths", "Individual decoding depths", ), NumberInput( "js8_decoding_depth", "Js8Call decoding depth", infotext="A higher decoding depth will allow more results, but will also consume more cpu", ), Js8ProfileCheckboxInput("js8_enabled_profiles", "Js8Call enabled modes"), MultiCheckboxInput( "fst4_enabled_intervals", "Enabled FST4 intervals", [Option(v, "{}s".format(v)) for v in Fst4Profile.availableIntervals], ), MultiCheckboxInput( "fst4w_enabled_intervals", "Enabled FST4W intervals", [Option(v, "{}s".format(v)) for v in Fst4wProfile.availableIntervals], ), Q65ModeMatrix("q65_enabled_combinations", "Enabled Q65 Mode combinations"), ), ]