# HG changeset patch # User Ran Katz rankatz@gmail.com # Date 1660477131 -10800 # Sun Aug 14 14:38:51 2022 +0300 # Node ID 542344db60eb230eedc8962dc49175daa0ee3a53 # Parent 3eb8629bf6d76415605f6dc9004226c42d1bf55f [tg_uv2p] (revised) Dont set a priority channel if empty or Broadcast-FM. Fixes fifth issue in #9939 Per Dan's suggestion changed implementation to a validation function and an exception to notify user of wrong input
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 @@ -508,10 +508,16 @@ mem_vals.insert(0, 0xFF) user_options.insert(0, "Not Set") options_map = zip(user_options, mem_vals) - - rs = RadioSetting("priority_channel", "Priority Channel", - RadioSettingValueMap(options_map, - _settings.priority_channel)) + if _settings.priority_channel >= 200: + _priority_ch = 0xFF + else: + _priority_ch = _settings.priority_channel + rs = RadioSetting( + "priority_channel", + "Priority Channel \n" + "Note: Unused channels,\nor channels " + "in the\nbroadcast FM band,\nwill not be set", + RadioSettingValueMap(options_map, _priority_ch)) cfg_grp.append(rs)
# Step @@ -679,6 +685,17 @@
return group
+ def _validate_priority_ch(self, ch_num): + if ch_num == 0xFF: + return True + _mem, _bf, _nam = self._get_memobjs(ch_num) + if (_mem.freq.get_raw()[0] == "\xFF") or (_bf.band == "\x0F"): + return False + elif _bf.band == 0x00: + return False + else: + return True + def set_settings(self, settings): for element in settings: if not isinstance(element, RadioSetting): @@ -733,6 +750,18 @@ "when keypad is locked") LOG.debug("Setting %s = %s" % (setting, element.value)) setattr(obj, setting, element.value) + elif setting == "priority_channel": + _check = self._validate_priority_ch(int(element.value)) + if _check: + LOG.debug("Setting %s = %s" % (setting, + element.value)) + setattr(obj, setting, element.value) + else: + raise errors.InvalidValueError( + "Please select a valid priority channel:\n" + "A used memory channel which is not " + "in the Broadcast FM band (88-108MHz),\n" + "Or select 'Not Used'") elif element.value.get_mutable(): LOG.debug("Setting %s = %s" % (setting, element.value)) setattr(obj, setting, element.value)