Apparently the firmware wizards at Leixen have decided to update the featureset in the VV-898S/E, and the new 1.05 firmware adds a crazy vfo-based bank system to the memories. Basically, instead of a single unbanked set of 200 memories, now there are 100 memories each assigned to VFO A and VFO B. To keep things really interesting, these memories are interleaved.
The old layout had all 200 memory's data structs all in series, then all 200 memory's name/labels all in series after that. Roughly speaking, it looks like:
struct mem_data memories[200]; struct mem_name names[200];
The new layout has "memory data 1A (first memory for VFO A)", then "memory data 1B (first mem VFO B)", then 2A, 2B, etc. Then it starts all over with the same interleaving of label/names.
I don't think this would actually work, but the way I vizualize it right now is something like:
struct mem_interleaved_data { mem_data a, mem_data b }; struct mem_interleaved_name { mem_name a, mem_name b };
struct mem_interleaved_data memories[100]; struct mem_interleaved_name mem_names[100];
My question is: will I need to do indexed banks in order to resolve the interleaving, or is there a way to resolve the interleaving with nested structs? I could certainly make a struct that contains both the A and B for a given memory index, but I'm not sure how I would resolve those down to single banks for each VFO.
Can I "re-seek" in a memory map? Create ante-padded structures for A memories, re-seek and use fore-padded structs for B memories?
I've been looking around at other drivers but haven't found an obviously similar case yet.
Thanks, -- Brian