[chirp_devel] Issue with Baofeng Firmware Version
Dan Smith
Sat Feb 13 18:02:52 PST 2016
> No. These messages cannot be edited by the user. CHIRP is making the
> changes, not the user. I want to prevent this behavior.
Right, I get that CHIRP is breaking things on its own. Ah, I see from
your code that mutable is set false. Got it.
> How that done? This is what is there now.
>
> def _filter(name):
> filtered = ""
> for char in str(name):
> if char in chirp_common.CHARSET_ASCII:
> filtered += char
> else:
> filtered += " "
> return filtered
>
> _msg = self._memobj.firmware_msg
> val = RadioSettingValueString(0, 7, _filter(_msg.line1))
> val.set_mutable(False)
> rs = RadioSetting("firmware_msg.line1", "Firmware Message 1", val)
> other.append(rs)
>
> val = RadioSettingValueString(0, 7, _filter(_msg.line2))
> val.set_mutable(False)
> rs = RadioSetting("firmware_msg.line2", "Firmware Message 2", val)
> other.append(rs)
>
> The "0xFF"s in "firmware_msg.line2" get changed to " " by the filter
> helper and then the changes are written to the image. I need to keep
> the "0xFF" bytes from getting changed.
So it sounds like we should be skipping any immutable fields during
set_settings(). So around here:
> if element.has_apply_callback():
> LOG.debug("Using apply callback")
> element.run_apply_callback()
> else:
> LOG.debug("Setting %s = %s" % (setting, element.value))
> setattr(obj, setting, element.value)
What if we changed that else to "elif setting._mutable:" ?
Then it would never run the "set" on immutable fields, which is probably
what we should have done in the first place.
Does that work?
--Dan
More information about the chirp_devel
mailing list