Jim,
In that case, what I suggested won't work. Especially if the mapping is non-uniform, that is, the freq steps are all integer multiples of the smallest step.
Maybe you just need to divide the index by 16 when you access STEP_LIST:
RadioSettingValueList(STEP_LIST, STEP_LIST[self._memobj.vfoa.step/16])
Or maybe a dictionary rather than an array would work better: STEP_LIST = {0x0: 2.5, 0x10: 5.0, 0x20: 6.25, … }
It's hard to tell what the best method would be, without seeing all of the related code. And no, I'm not asking to join the UV-5R driver team. :)
-Les
On 13 Jan 2013, at 16:14, Jim Unroe rock.unroe@gmail.com wrote:
Les,
OK. Let me try to say it another way
My STEP_LIST is a sequence of the available steps: 2.5, 5.0, 6.25, 10.0 etc.
The structure vfoa.step that I am reading from and writing to corresponds to 0x00, 0x10, 0x20, 0x30 etc.
So I'm thinking that somehow I read the value, divide by 16 and then display it in the settings tab. Then if the user changes the setting, it get multiplied by 16 and get written back.
Do I make sense?
Jim
On Sun, Jan 13, 2013 at 6:04 PM, Les Niles les@2pi.org wrote: If STEP_LIST is a sequence of the radio memory values 0x0, 0x10, 0x20, etc., then map(lambda x: x/16, STEP_LIST) will return a sequence [0, 1, 2, …] Is that what you're looking for?
-Les
On 13 Jan 2013, at 6:29, Jim Unroe rock.unroe@gmail.com wrote:
On Sat, Jan 12, 2013 at 8:38 PM, Andrew Errington erringtona@gmail.com wrote:
What do you need to do? If you are writing software and you need to convert 0, 1, 2, 3 ... 14 to 0x00, 0x10, 0x20, 0x30 ... 0xE0 then just multiply by 16.
0 x 16 = 0 = 0x00 1 x 16 = 16 = 0x10 2 x 16 = 32 = 0x20 3 x 16 = 48 = 0x30 . . . 14 x 16 = 224 = 0xE0
Is that what you need to do, or do I misunderstand your question?
Andrew,
I want to use this in a scenario similar to this to create a menu setting item for 'step'
rs = RadioSetting("vfoa.step", "VFO A Tuning Step", RadioSettingValueList(STEP_LIST, STEP_LIST[self._memobj.vfoa.step])) vfopresets.append(rs)
The structure 'vfoa' has 'step' in it but the above doesn't work (out of range) because of the difference between the 0, 1, 2, 3 ... 14 vs. the 0x00, 0x01, 0x02, 0x03 ... 0xE0 (or 0, 16, 32, 48 ... 224).
This is probably simple to implement but right now I can't see the forest for the trees.
73, Jim