horus-gui/horusgui/modem.py

89 wiersze
2.5 KiB
Python

2020-06-22 11:36:55 +00:00
# Modem Interfacing
import logging
from horusdemodlib.demod import Mode
2020-06-22 11:36:55 +00:00
# Modem paramers and defaults
HORUS_MODEM_LIST = {
2021-09-02 10:39:21 +00:00
"Horus Binary v1/v2": {
2020-06-29 11:42:41 +00:00
"id": Mode.BINARY_V1,
2020-10-05 07:24:15 +00:00
"baud_rates": [50, 100, 300], # Note: 25 Baud removed until issues in underlying modem are fixed.
2020-06-26 13:04:05 +00:00
"default_baud_rate": 100,
"default_tone_spacing": 270,
"use_mask_estimator": True,
"modulation_detail": None
2020-06-26 13:04:05 +00:00
},
"RTTY (7N1)": {
"id": Mode.RTTY_7N1,
2021-09-02 10:39:21 +00:00
"baud_rates": [50, 75, 100, 200, 300, 600, 1000],
"default_baud_rate": 100,
"default_tone_spacing": 425,
"use_mask_estimator": False,
"modulation_detail": "7N1"
},
2020-06-26 13:04:05 +00:00
"RTTY (7N2)": {
2020-06-29 11:42:41 +00:00
"id": Mode.RTTY_7N2,
2021-09-02 10:39:21 +00:00
"baud_rates": [50, 75, 100, 200, 300, 600, 1000],
2020-06-26 13:04:05 +00:00
"default_baud_rate": 100,
"default_tone_spacing": 425,
"use_mask_estimator": False,
"modulation_detail": "7N2"
2020-06-22 11:36:55 +00:00
},
2020-07-08 11:25:11 +00:00
"RTTY (8N2)": {
"id": Mode.RTTY_8N2,
2021-09-02 10:39:21 +00:00
"baud_rates": [50, 75, 100, 200, 300, 600, 1000],
2020-07-08 11:25:11 +00:00
"default_baud_rate": 100,
"default_tone_spacing": 425,
"use_mask_estimator": False,
"modulation_detail": "8N1"
2020-07-08 11:25:11 +00:00
},
2020-06-22 11:36:55 +00:00
}
2021-09-02 10:39:21 +00:00
DEFAULT_MODEM = "Horus Binary v1/v2"
2020-06-22 11:36:55 +00:00
horusModem = None
2020-06-26 13:04:05 +00:00
2020-06-22 11:36:55 +00:00
def init_horus_modem(widgets):
""" Initialise the modem drop-down lists """
# Clear modem list.
2020-06-26 13:04:05 +00:00
widgets["horusModemSelector"].clear()
2020-06-22 11:36:55 +00:00
# Add items from modem list
for _modem in HORUS_MODEM_LIST:
2020-06-26 13:04:05 +00:00
widgets["horusModemSelector"].addItem(_modem)
2020-06-22 11:36:55 +00:00
# Select default modem
2020-06-26 13:04:05 +00:00
widgets["horusModemSelector"].setCurrentText(DEFAULT_MODEM)
2020-06-22 11:36:55 +00:00
populate_modem_settings(widgets)
def populate_modem_settings(widgets):
""" Populate the modem settings for the current selected modem """
2020-06-26 13:04:05 +00:00
_current_modem = widgets["horusModemSelector"].currentText()
2020-06-22 11:36:55 +00:00
# Clear baud rate dropdown.
2020-06-26 13:04:05 +00:00
widgets["horusModemRateSelector"].clear()
2020-06-22 11:36:55 +00:00
# Populate
2020-06-26 13:04:05 +00:00
for _rate in HORUS_MODEM_LIST[_current_modem]["baud_rates"]:
widgets["horusModemRateSelector"].addItem(str(_rate))
2020-06-22 11:36:55 +00:00
# Select default rate.
2020-06-26 13:04:05 +00:00
widgets["horusModemRateSelector"].setCurrentText(
str(HORUS_MODEM_LIST[_current_modem]["default_baud_rate"])
)
2020-06-22 11:36:55 +00:00
# Set Mask Estimator checkbox.
2020-06-26 13:04:05 +00:00
widgets["horusMaskEstimatorSelector"].setChecked(
HORUS_MODEM_LIST[_current_modem]["use_mask_estimator"]
)
2020-06-22 11:36:55 +00:00
# Set Tone Spacing Input Box
2020-06-26 13:04:05 +00:00
widgets["horusMaskSpacingEntry"].setText(
str(HORUS_MODEM_LIST[_current_modem]["default_tone_spacing"])
)