[chirp_devel] Interleaving banks and memories

Brian Dickman
Sat Oct 8 18:53:49 PDT 2016


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



More information about the chirp_devel mailing list