[chirp_devel] [PATCH] [UV-3R] Add Basic Settings

Jim Unroe
Tue Nov 26 14:01:35 PST 2013


I thought that the 3 patches I submitted would be sent together as a set.
Since they weren't here is how they should be applied.

[UV-3R] Add Basic Settings [1 of 3]
[UV-3R] Add Band Limit Settings [2 of 3]
[UV-3R] Add Broadcast FM Presets [3 of 3]

Jim KC9HI


On Tue, Nov 26, 2013 at 4:51 PM, Jim Unroe <rock.unroe at gmail.com> wrote:

> # HG changeset patch
> # User Jim Unroe <rock.unroe at gmail.com>
> # Date 1385499658 18000
> # Node ID 68dcf5898ba38f087d9a543256ef71828c24f650
> # Parent  fc6b4cd40403f4bb3f2b9bc3578366fdf20a85c6
> [UV-3R] Add Basic Settings
> expose basic settings fields in memmap
> add Basic Settings tab
> add Basic Settings and other associated support
> related to #1267
>
> diff -r fc6b4cd40403 -r 68dcf5898ba3 chirp/baofeng_uv3r.py
> --- a/chirp/baofeng_uv3r.py     Sun Nov 17 11:15:47 2013 -0800
> +++ b/chirp/baofeng_uv3r.py     Tue Nov 26 16:00:58 2013 -0500
> @@ -19,6 +19,10 @@
>  import os
>  from chirp import util, chirp_common, bitwise, errors, directory
>  from chirp.wouxun_common import do_download, do_upload
> +from chirp.settings import RadioSetting, RadioSettingGroup, \
> +                RadioSettingValueBoolean, RadioSettingValueList, \
> +                RadioSettingValueInteger, RadioSettingValueString, \
> +                RadioSettingValueFloat
>
>  if os.getenv("CHIRP_DEBUG"):
>      DEBUG = True
> @@ -88,6 +92,29 @@
>    u8 unknown;
>    lbcd tx_freq[4];
>  } tx_memory[99];
> +
> +#seekto 0x07C2;
> +struct {
> +  u8 squelch;
> +  u8 vox;
> +  u8 timeout;
> +  u8 save:1,
> +     unknown_1:1,
> +     dw:1,
> +     ste:1,
> +     beep:1,
> +     unknown_2:1,
> +     bclo:1,
> +     ch_flag:1;
> +  u8 backlight:2,
> +     relaym:1,
> +     scanm:1,
> +     pri:1,
> +     unknown_3:3;
> +  u8 unknown_4[3];
> +  u8 pri_ch;
> +} settings;
> +
>  #seekto 0x0810;
>  struct {
>    lbcd rx_freq[4];
> @@ -113,6 +140,18 @@
>  } names[128];
>  """
>
> +STEPS = [5.0, 6.25, 10.0, 12.5, 20.0, 25.0]
> +STEP_LIST = [str(x) for x in STEPS]
> +BACKLIGHT_LIST = ["Off", "Key", "Continuous"]
> +TIMEOUT_LIST = ["Off"] + ["%s sec" % x for x in range(30, 210, 30)]
> +SCANM_LIST = ["TO", "CO"]
> +PRI_CH_LIST = ["Off"] + ["%s" % x for x in range(1, 100)]
> +CH_FLAG_LIST = ["Freq Mode", "Channel Mode"]
> +POWER_LIST = ["Low", "High"]
> +BANDWIDTH_LIST = ["Narrow", "Wide"]
> +DUPLEX_LIST = ["Off", "-", "+"]
> +STE_LIST = ["On", "Off"]
> +
>  UV3R_DUPLEX = ["", "-", "+", ""]
>  UV3R_POWER_LEVELS = [chirp_common.PowerLevel("High", watts=2.00),
>                       chirp_common.PowerLevel("Low", watts=0.50)]
> @@ -126,6 +165,7 @@
>
>      def get_features(self):
>          rf = chirp_common.RadioFeatures()
> +        rf.has_settings = True
>          rf.valid_tmodes = ["", "Tone", "TSQL", "DTCS", "Cross"]
>          rf.valid_modes = ["FM", "NFM"]
>          rf.valid_power_levels = UV3R_POWER_LEVELS
> @@ -282,6 +322,108 @@
>          self._set_memory(mem, _tmem)
>          self._set_memory(mem, _rmem)
>
> +    def get_settings(self):
> +        basic = RadioSettingGroup("basic", "Basic Settings")
> +        group = RadioSettingGroup("top", "All Settings", basic)
> +
> +        rs = RadioSetting("squelch", "Squelch Level",
> +                          RadioSettingValueInteger(0, 9,
> self._memobj.settings.squelch))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("backlight", "LCD Back Light",
> +                          RadioSettingValueList(BACKLIGHT_LIST,
> +
>  BACKLIGHT_LIST[self._memobj.settings.backlight]))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("beep", "Keypad Beep",
> +
>  RadioSettingValueBoolean(self._memobj.settings.beep))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("vox", "VOX Level (0=OFF)",
> +                          RadioSettingValueInteger(0, 9,
> self._memobj.settings.vox))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("dw", "Dual Watch",
> +
>  RadioSettingValueBoolean(self._memobj.settings.dw))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("ste", "Squelch Tail Eliminate",
> +                          RadioSettingValueList(STE_LIST,
> +
>  STE_LIST[self._memobj.settings.ste]))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("save", "Battery Saver",
> +
>  RadioSettingValueBoolean(self._memobj.settings.save))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("timeout", "Time Out Timer",
> +                          RadioSettingValueList(TIMEOUT_LIST,
> +
>  TIMEOUT_LIST[self._memobj.settings.timeout]))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("scanm", "Scan Mode",
> +                          RadioSettingValueList(SCANM_LIST,
> +
>  SCANM_LIST[self._memobj.settings.scanm]))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("relaym", "Repeater Sound Response",
> +
>  RadioSettingValueBoolean(self._memobj.settings.relaym))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("bclo", "Busy Channel Lock Out",
> +
>  RadioSettingValueBoolean(self._memobj.settings.bclo))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("pri", "Priority Channel Scanning",
> +
>  RadioSettingValueBoolean(self._memobj.settings.pri))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("pri_ch", "Priority Channel",
> +                          RadioSettingValueList(PRI_CH_LIST,
> +
>  PRI_CH_LIST[self._memobj.settings.pri_ch]))
> +        basic.append(rs)
> +
> +        rs = RadioSetting("ch_flag", "Display Mode",
> +                          RadioSettingValueList(CH_FLAG_LIST,
> +
>  CH_FLAG_LIST[self._memobj.settings.ch_flag]))
> +        basic.append(rs)
> +
> +        return group
> +
> +    def set_settings(self, settings):
> +        _settings = self._memobj.settings
> +        for element in settings:
> +            if not isinstance(element, RadioSetting):
> +                self.set_settings(element)
> +                continue
> +            else:
> +                try:
> +                    name = element.get_name()
> +                    if "." in name:
> +                        bits = name.split(".")
> +                        obj = self._memobj
> +                        for bit in bits[:-1]:
> +                            if "/" in bit:
> +                                bit, index = bit.split("/", 1)
> +                                index = int(index)
> +                                obj = getattr(obj, bit)[index]
> +                            else:
> +                                obj = getattr(obj, bit)
> +                        setting = bits[-1]
> +                    else:
> +                        obj = _settings
> +                        setting = element.get_name()
> +
> +                    if element.has_apply_callback():
> +                        print "Using apply callback"
> +                        element.run_apply_callback()
> +                    else:
> +                        print "Setting %s = %s" % (setting, element.value)
> +                        setattr(obj, setting, element.value)
> +                except Exception, e:
> +                    print element.get_name()
> +                    raise
> +
>      @classmethod
>      def match_model(cls, filedata, filename):
>          return len(filedata) == 3648
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://intrepid.danplanet.com/pipermail/chirp_devel/attachments/20131126/94b62ca2/attachment-0001.html 


More information about the chirp_devel mailing list