Yes, but technically MemoryMapBytes is just the flag image, the output of bitwise.parse() is the logical structure object laid on top of the flat memory buffer. In C parlance, the MemoryMapBytes is the result of the malloc() and the memobj (output of bitwise.parse()) is like a `struct mymemobj*` you point at it to get a structured view.
Great, that's what I was thinking it was.
Note I meant "flat image" not "fag image" above.
I think there are two protocols remote and clone, remote looks like NEMA ICF for remote control, there doesn't appear to be a way to set memories using the remote protocol.
Yep, it's common to have both on radios like this.
the clone protocol is the one the old software uses and it just sends a single to dump the entire memory image. From what it looks like sniffing the UART, the same 10K of bytes go back down The software for the M710 is used for cloning and you send one command and 10K bytes of data come back. When you program it, it sends a similar command and all 10K bytes go back down.
Yep, this is how the ICF clone radios work. You send a (properly framed) 0xE2 (clone out) command and then it spews the memory format to you in chunks framed in 0xE4 commands (clone data).
i.e. you send FE, FE, EE, EF, E2, 16, 32, 00, 01, FD and get 10K bytes back then you send FE FE EE EF E3 16 32 00 01 FD + 10K bytes to program the image. What we have now is fairly painful, we have to install dosbox and run an ancient dos program to program the memories.
Yep, this looks exactly like the ICF as implemented by those drivers. Basically every icom clone-type radio in the tree is handled by a single protocol handler in icf.py. If yours behaves the same, you can likely use it to get the entire memory image cleaned of all the framing, and use it to program it back. Please do not try to reimplement it in your driver, and definitely don't store the framing (i.e. SOR, addresses, command, EOR) bits in the memory image.
Also just FYI, the Icom HF radios in the tree don't use this, they get/set the memories over CIV (i.e the remote control protocol) so I would look at some of the regular drivers (i.e ic2820.py) for example. You'll notice they include no upload/download code because it's all handled by the base class (IcomCloneModeRadio).
--Dan