real_freq = 0
for byte in self._memobj.vfoa.freq:
real_freq = (real_freq * 10) + byte
real_freq /= 100000
I think if you change this to the following it will do what you want:
real_freq /= 1000.0
You need at least one side to be a float to get a float in return. Then I think that this will work:
val1a = RadioSettingValueFloat(136, 512, real_freq)
val1a.set_callback(my_validate)
rs = RadioSetting("footest", "VFO A Frequency", val1a)
workmode.append(rs)
Since you have to do this twice, I'd like you to make it a helper function, like this:
def convert_bytes_to_freq(bytes): real_freq = 0 for byte in self._memobj.vfob.freq: real_freq = (real_freq * 10) + byte return real_freq / 1000.0
Then you can do this:
val1b = RadioSettingValueFloat(136, 512, convert_bytes_to_freq(self._memobj.vfoa.freq))
On the set side, you'll need to do the opposite of the above, potentially with a special-case for those two values (I forget how that code is organized). I imagine getting the "get" side working first is your priority, so we can work on that after you're happy with this.