Another quick post, mainly to get some feedback.
Now that the open source GD-77 being written by Kai, DG4KLU, is progressing and can receive on both FM and DMR. One of the other things on my, rather large, To Do list is to write a CPS to support Kai’s firmware.
Currently I’ve added some functions, so that the official codeplug, which is already in the GD-77’s memory, can be partially used by anyone who would like to help with the testing.
However the official codeplug has multiple problems, and the final solution will be to have a new CPS for Kai’s firmware, which is designed with the features which Amateur Radio operators need.
So after a few false starts, I have started to build a new CPS from scratch, but to save time re-inventing the wheel, I’m going to initially use some of the screen layouts from the Community CPS.
Jumping in at the deep end, I’ve copied the layout information for the Channels screen into the new CPS, and re-arranged the layout a little, so that the screen is not as tall.
One thing which people will immediately notice in the screengrab below, is that there are a lot of items in this screen which are not in the Community or the official CPS.
This is because they are present in both the official and Community CPS, but were hidden in both these CPS’s
However, since I’m starting almost from scratch again, I thought it was probably worth making all items visible so that we can see whether any of the hidden fields are actually of any use.
Note. I don’t know what things like “Tx Reference Frequency” were intended to do, and I think that the values of these items was probably ignored by the official GD-77 firmware.
So the first task is to determine which of the many items on this screen are needed, and also whether other items, specific to Amateur Radio use are missing.
Some things which are in the official CPS, which I think probably have no use in Amateur Radio are the Privacy and Privacy Group settings. Since as far as I know, transmitting using encryption is specifically forbidden under the terms of most Amateur Radio licences (though some countries may have exceptions to this).
I’m not sure what the Emergency System setting does or whether its used. I’ve definitely not seen it used on DMR in Australia.
One way forward may be just to specify the minimum usable set of features, especially since Kai’s software currently does not support 75% of the options on this screen, and over time add options as they become available in the firmware.
Key to this upgradability is to move away from the old codeplug data format, where the same binary data which is sent to the radio was also used as the codeplug file saved to disk.
Instead, I’m going to save to disk using XML, because this will allow additional options to be added as time goes by, and yet still allow the CPS to read an existing codeplug XML file – as long as I don’t radically change the structure.
I will also include a format version in the XML itsself, as this would future proof the CPS in case I need to make a more radical change.
Also, using XML makes it much easier for third party tools for read and write the data.
The other thing which I am dealing with from the beginning is support for Linux.
The existing Community CPS does not run on Linux ether using WINE or MONO. I’ve investigated why the existing CPS’s don’t work, but there are a multitude of reasons, and I found it was not practical to modify the Community CPS to run on Linux.
However, because I am starting from scratch, I can test the EXE on Linux, at each stage of the development and ensure it still works OK.
Note. I’m still going to write this using C# in Microsoft Visual Studio, using the DotNet framework, because this is what the Community CPS and official CPS is written in, but I will take care not to use any features which are incompatible with Linux.
This may mean that the “tree view” component, used on the left side of the CPS can’t be used, since I saw some errors in the Community CPS on Linux that seemed to be caused by the tree-view.
But I’m not sure whether a tree-view is necessary. And even if it is, there is an official Microsoft tree-view component, which is part of DotNet, which can be used instead, albeit I don’t think it looks as good.
Anyway, before diving straight in, and starting to write the new CPS, I’m going to download the CPS for a few other radios, and see if there are any better ways to display the data etc.
I have a feeling that its going to take quite a long time to write the new CPS, especially since I’m also writing the GUI and the codeplug interface for Kai’s firmware, but I know there are a few other people out there with C# Visual Studio programming experience, so with a bit of luck I may be able to get some help with this.