Following on from my last post about improving the GD-77 CPS, channels export / import improvements I have been working on.
I’ve not got a beta version which I think may work OK.
So if anyone is wants to give it a try, the installer can be downloaded from my google drive using this link
Please make sure you backup your current codeplug file before experimenting with this Beta version.
The functionality improvements are basically the same as I described in my last post.
The Channels screen, export feature now exports all the data associated with a channel, and additionally includes the digital Contact ID and digital Contact Type (Group or Private call), as well as the Rx Group name and the first Zone that contains the channel in question.
The export feature only exports the channels (rows) that you select on this screen, which allows a subset of the channels to be exported separately, e.g. you could select you analogue 70cm channels or analogue 2m channels, or just some digital channels etc.
When importing, the existing channels are not cleared first, which allows new channels to be appended.
If a channel with the same name that is being imported, already exists, the existing channel is updated.
If a channel that is being imported uses a digital Contact that is not in the Digital Contacts list, the contact will be added
If a channel that is being imported uses an Rx Group that does not exist, the Rx Group will be created and the digital Contact assigned to the channel will be added to the Rx Group.
If the Rx Group already exists, but the Contact assigned to the Channel is not in that Rx Group, it will be added to the Rx Group
If the Zone which uses the channel, does not exist, it will be created and the channel will be added to that Zone.
If the Zone already exists but the channel is not already in that Zone, the channel will be added to the Zone.
One thing to be aware of with Zones, is that if the channel was in more than one Zone in the codeplug from which it was exported, only the first Zone name in the list that contain the channel, will be included in the channel data.
Hence when importing, only one Zone will be created
Currently the Zones can’t be exported in their own right as the CPS is lacking several screens, e.g. there is no Rx Group lists screen, or Zones list screen or Scan Lists screen.
When I get time I will create these screens, but its taken me quite a while to get the Beta of the “enhanced” Channels export/import system working, and I have other higher priority things that I need to do in the CPS, like combining the DMR ID and Contacts import, to make best use of the lmiited number of Digital Contacts which have 16 characters per ID, and hence can display the Callsign and Name, unlike the DMR ID system, which only allows 8 characters per ID, hence there is only room to display the Callsign 🙁
I’ve done some testing myself and have not had any major problems, but since I’m generally just clearing my codeplug and importing sections of my previous codeplug, its probably not the best of possible tests.
So I’m keen to get feedback from other people
BTW. One niggle I already came across is that I its impossible to remove all existing Zones or all existing Contacts or Rx Groups, so you can end up with Zone which is empty and unused at the start of the Zone list.
One way to get around this is to rename the Zone to the same name as a Zone in the data you are about to import – but I agree this is not ideal and I’ll need to find a better solution.
However the main problem is the underlying data structure internally in the CPS.
IMHO the internal data in the CPS has a fundamental design problem. All the data storage is almost a direct copy of the binary structure, which is sent to the GD-77. i.e its in a format thats easily readable by the firmware in the GD-77 but is a pain to manipulate in the CPS.
I think the data structure internally to the CPS should have probably been in a form of a mini database with relational links between the different sections. Or perhaps using C# objects which referenced each other.
Rather than the arrays of objects which it actually uses.
This would make the CPS more flexible, and would just require a function to generate the binary data from the CPS object data and vice versa. But this was not the way the programmers at Radioddity chose to implement things, hence the lack of functionality in the CPS 🙁