On Sat, Feb 23, 2013 at 7:03 PM, Dan Smith <dsmith@danplanet.com> wrote:
> I want to create a selection for the UV-5R that depending the the
> users' selection (either tick like Boolean, or a two choice list),
> one or the other of the following is written.
>
> "\x0E\x0F\x10\x11\x15"
> "\x00\x00\x00\x00\x00"

You mean a RadioSetting? Maybe something like this untested snipped:

 def apply_foobar(setting, obj):
     if setting.value == True:
         obj.foobar = "\x0E\x0F\x10\x11\x15"
     else:
         obj.foobar = "\x00\x00\x00\x00\x00"

 rs = RadioSetting("foobar", "Enable Foobar", RadioSettingBoolean(False))
 rs.set_apply_callback(apply_foobar, self._memobj)


Thanks Dan. That is what I am looking for. I don't have it working yet, though.

Here is my structure...

#seekto 0x0F08;
struct {
  u8 foobar[5];
} test;


Here is my RadioSetting() code...

        def apply_txinhibit(setting, obj):
            if setting.value == True:
                obj.foobar = "\x00\x00\x00\x00\x00"
            else:
                obj.foobar = "\x0E\x0F\x10\x11\x15"

        rs = RadioSetting("test.foobar", "TX Inhibit",
                          RadioSettingValueBoolean(False))
        rs.set_apply_callback(apply_txinhibit, self._memobj.test)
        other.append(rs)


Here is my error...

Setting enable = True
Using apply callback
test.foobar
Exception running RadioJob: invalid literal for int() with base 10: '\x0e'
-- Exception: --
Traceback (most recent call last):
  File "C:\Users\Root\chirp.hg\chirpui\common.py", line 97, in _execute
    result = func(*self.args, **self.kwargs)
  File "C:\Users\Root\chirp.hg\chirp\uv5r.py", line 1160, in set_settings
    self.set_settings(element)
  File "C:\Users\Root\chirp.hg\chirp\uv5r.py", line 1181, in set_settings
    element.run_apply_callback()
  File "C:\Users\Root\chirp.hg\chirp\settings.py", line 288, in run_apply_callba
ck
    return self._apply_callback()
  File "C:\Users\Root\chirp.hg\chirp\settings.py", line 282, in <lambda>
    self._apply_callback = lambda: callback(self, *args)
  File "C:\Users\Root\chirp.hg\chirp\uv5r.py", line 916, in apply_txinhibit
    obj.foobar = "\x0E\x0F\x10\x11\x15"
  File "C:\Users\Root\chirp.hg\chirp\bitwise.py", line 591, in __setattr__
    self.__dict__["_generators"][name].set_value(value)
  File "C:\Users\Root\chirp.hg\chirp\bitwise.py", line 238, in set_value
    self.__items[i].set_value(value[i])
  File "C:\Users\Root\chirp.hg\chirp\bitwise.py", line 381, in set_value
    self._data[self._offset] = (int(value) & 0xFF)
ValueError: invalid literal for int() with base 10: '\x0e'
------
Job Args:   (<chirp.settings.RadioSettingGroup object at 0x03B1A490>,)
Job KWArgs: {}
Job Called from:
  File "chirpw", line 144, in <module>
    gtk.main()
  File "C:\Users\Root\chirp.hg\chirpui\settingsedit.py", line 119, in _save_sett
ing
    self._do_save_setting(widget, value)
  File "C:\Users\Root\chirp.hg\chirpui\settingsedit.py", line 115, in _do_save_s
etting
    self._save_settings()
  File "C:\Users\Root\chirp.hg\chirpui\settingsedit.py", line 71, in _save_setti
ngs
    self._top_setting_group)


I think I will sleep on it and study it some more in the morning.

Jim