[chirp_devel] [PATCH 2 of 3] [tg_uv2p] (revised) Inhibit keypad lock when in dual watch or crossmode. Fixes forth issue in #9939
Ran Katz
Sun Aug 14 04:49:35 PDT 2022
# HG changeset patch
# User Ran Katz <rankatz at gmail.com>
# Date 1660474607 -10800
# Sun Aug 14 13:56:47 2022 +0300
# Node ID 3eb8629bf6d76415605f6dc9004226c42d1bf55f
# Parent d0caf6c542c5cbe33cfb69e9edd978f4fdbad8e1
[tg_uv2p] (revised) Inhibit keypad lock when in dual watch or crossmode. Fixes forth issue in #9939
Per Dan's suggestions, implemented with an exception (rather than a flag/basd on set_settings order)
diff --git a/chirp/drivers/tg_uv2p.py b/chirp/drivers/tg_uv2p.py
--- a/chirp/drivers/tg_uv2p.py
+++ b/chirp/drivers/tg_uv2p.py
@@ -27,6 +27,7 @@
RadioSettingValueFloat, RadioSettingValueMap, RadioSettings
from textwrap import dedent
+
LOG = logging.getLogger(__name__)
mem_format = """
@@ -703,14 +704,35 @@
LOG.debug("using apply callback")
element.run_apply_callback()
elif setting == "beep_tone_disabled":
- LOG.debug("Setting %s = %s" % (setting, not int(element.value)))
+ LOG.debug("Setting %s = %s" % (setting,
+ not int(element.value)))
setattr(obj, setting, not int(element.value))
elif setting == "busy_lockout":
- LOG.debug("Setting %s = %s" % (setting, not int(element.value)))
+ LOG.debug("Setting %s = %s" % (setting,
+ not int(element.value)))
setattr(obj, setting, not int(element.value))
elif setting == "keyunlocked":
- LOG.debug("Setting %s = %s" % (setting, not int(element.value)))
+ if int(element.value):
+ if (getattr(obj, "rxmode") != 0x02):
+ LOG.debug("Setting %s = %s" % (setting, True))
+ setattr(obj, setting, True)
+ raise errors.InvalidValueError(
+ "Keypad lock not allowed in "
+ "Dual-Watch or CrossMode")
+ LOG.debug("Setting %s = %s" % (setting,
+ not int(element.value)))
setattr(obj, setting, not int(element.value))
+ elif setting == "rxmode":
+ if int(element.value) != 2:
+ if not (getattr(obj, "keyunlocked")):
+ LOG.debug("Setting %s = %s" % (setting,
+ "Normal"))
+ setattr(obj, setting, 0x02)
+ raise errors.InvalidValueError(
+ "Dual-Watch or CrossMode can not be set "
+ "when keypad is locked")
+ LOG.debug("Setting %s = %s" % (setting, element.value))
+ setattr(obj, setting, element.value)
elif element.value.get_mutable():
LOG.debug("Setting %s = %s" % (setting, element.value))
setattr(obj, setting, element.value)
More information about the chirp_devel
mailing list