diff --git a/htdocs/settings.html b/htdocs/settings.html
index 5e4120c..18dcdc3 100644
--- a/htdocs/settings.html
+++ b/htdocs/settings.html
@@ -24,6 +24,9 @@ ${header}
+
diff --git a/owrx/controllers/settings/decoding.py b/owrx/controllers/settings/decoding.py
new file mode 100644
index 0000000..a40edd9
--- /dev/null
+++ b/owrx/controllers/settings/decoding.py
@@ -0,0 +1,76 @@
+from owrx.controllers.settings import SettingsFormController, Section
+from owrx.form import CheckboxInput, NumberInput, DropdownInput, Js8ProfileCheckboxInput, MultiCheckboxInput, Option
+from owrx.form.wfm import WfmTauValues
+from owrx.form.wsjt import Q65ModeMatrix
+from owrx.wsjt import Fst4Profile, Fst4wProfile
+
+
+class DecodingSettingsController(SettingsFormController):
+ def getTitle(self):
+ return "Demodulation and 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",
+ NumberInput(
+ "digital_voice_unvoiced_quality",
+ "Quality of unvoiced sounds in synthesized voice",
+ infotext="Determines the quality, and thus the cpu usage, for the ambe codec used by digital voice"
+ + "modes.
If you're running on a Raspi (up to 3B+) you should leave this set at 1",
+ ),
+ CheckboxInput(
+ "digital_voice_dmr_id_lookup",
+ "DMR id lookup",
+ checkboxText="Enable lookup of DMR ids in the radioid database to show callsigns and names",
+ ),
+ ),
+ Section(
+ "Digimodes",
+ CheckboxInput("digimodes_enable", "", checkboxText="Enable 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",
+ ),
+ 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"),
+ ),
+ ]
diff --git a/owrx/controllers/settings/general.py b/owrx/controllers/settings/general.py
index 827bc4d..86f0340 100644
--- a/owrx/controllers/settings/general.py
+++ b/owrx/controllers/settings/general.py
@@ -6,18 +6,11 @@ from owrx.form import (
FloatInput,
LocationInput,
TextAreaInput,
- CheckboxInput,
DropdownInput,
Option,
- ServicesCheckboxInput,
- Js8ProfileCheckboxInput,
- MultiCheckboxInput,
)
from owrx.form.receiverid import ReceiverKeysConverter
-from owrx.form.wfm import WfmTauValues
-from owrx.form.wsjt import Q65ModeMatrix
from owrx.form.gfx import AvatarInput, TopPhotoInput
-from owrx.wsjt import Fst4Profile, Fst4wProfile
import shutil
import os
from glob import glob
@@ -117,27 +110,6 @@ class GeneralSettingsController(SettingsFormController):
],
),
),
- Section(
- "Digimodes",
- CheckboxInput("digimodes_enable", "", checkboxText="Enable Digimodes"),
- NumberInput("digimodes_fft_size", "Digimodes FFT size", append="bins"),
- ),
- 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(
"Display settings",
NumberInput(
@@ -146,20 +118,6 @@ class GeneralSettingsController(SettingsFormController):
infotext="Number of decimal digits to show on the frequency display",
),
),
- Section(
- "Digital voice",
- NumberInput(
- "digital_voice_unvoiced_quality",
- "Quality of unvoiced sounds in synthesized voice",
- infotext="Determines the quality, and thus the cpu usage, for the ambe codec used by digital voice"
- + "modes.
If you're running on a Raspi (up to 3B+) you should leave this set at 1",
- ),
- CheckboxInput(
- "digital_voice_dmr_id_lookup",
- "DMR id lookup",
- checkboxText="Enable lookup of DMR ids in the radioid database to show callsigns and names",
- ),
- ),
Section(
"Map settings",
TextInput(
@@ -176,33 +134,6 @@ class GeneralSettingsController(SettingsFormController):
append="s",
),
),
- 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",
- ),
- 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"),
- ),
]
def handle_image(self, data, image_id):
diff --git a/owrx/http.py b/owrx/http.py
index 685b988..7e95c8e 100644
--- a/owrx/http.py
+++ b/owrx/http.py
@@ -9,6 +9,7 @@ from owrx.controllers.settings.general import GeneralSettingsController
from owrx.controllers.settings.sdr import SdrSettingsController
from owrx.controllers.settings.reporting import ReportingController
from owrx.controllers.settings.backgrounddecoding import BackgroundDecodingController
+from owrx.controllers.settings.decoding import DecodingSettingsController
from owrx.controllers.bookmarks import BookmarksController
from owrx.controllers.session import SessionController
from owrx.controllers.profile import ProfileController
@@ -131,6 +132,10 @@ class Router(object):
method="POST",
options={"action": "processFormData"},
),
+ StaticRoute("/settings/decoding", DecodingSettingsController),
+ StaticRoute(
+ "/settings/decoding", DecodingSettingsController, method="POST", options={"action": "processFormData"}
+ ),
StaticRoute("/login", SessionController, options={"action": "loginAction"}),
StaticRoute("/login", SessionController, method="POST", options={"action": "processLoginAction"}),
StaticRoute("/logout", SessionController, options={"action": "logoutAction"}),