29 June 2016

Profile editor

One of the most powerful aspects of the Flex controller design is that the layout is completely soft - it can be changed at will, just by loading a new profile. I always envisaged that any particular physical layout could have multiple different profiles for specific application - contests, DXing, DXpeditions, etc. and, of course, the profile concept also means that any hardware layout can be accommodated without needing to resort to programming.

All well and good, but over time, the profile file has become quite complex as ever more features have been added and it has long been clear to me that manually editing it was not where its future lay.

I've spent the last few days writing a Windows app, appropriately called Profile Manager. This promises to change everything, making it trivial to try out new hardware layouts and create new profiles for a given hardware set up. It's now good enough that I'm happy to share the concepts here.

Profile Manager representation of my Mk 1 controller
The basic principle is that each possible control has an icon that can be placed anywhere on the screen, thus representing the physical layout of the controller. Controls that are not needed can be hidden and the window can be adjusted in size to represent its physical counterpart.

All controls: switches, rotary encoders, VFOs and the LCD display can be individually configured for a particular profile. The controls are then linked up to their functions via pop-up windows when a control is selected. This makes it very easy to visualise what the final product will look like and, of course is very simple to use.

The switch configuration pop-up window
Once the design is completed, a profile file is created by the program for direct uploading to the controller. I haven't quite decided how to do this yet - ideally I would use FTP over Ethernet but there is a bit of an issue with that because the controller usually has a dynamic IP address. The less appealing, but simpler alternative is to upload using the RS232 port on the Arduino.

Of course an existing profile can be cloned and then altered to suit and saved as a new profile. This makes the profile manager really quite powerful, making trial layouts easy to build and test. Once uploaded, the controller has the ability to select one of the multiple profiles in a matter of seconds.

Creating a mini controller layout
I had a lot of fun developing this profile manager app! Firstly, it's nice to get back to PC application development in the highly productive environment of Delphi XE. It's also been stimulating to see the original concept develop over the past few days into a much more capable app than I had originally envisaged. The Windows code and the profile files it produces have now got somewhat ahead of the controller code, so that's where I need to focus next.


  1. That sounds and looks brilliant John: covers off my Q last week perfectly, and makes sense to me for scalability and also the potential to trigger a "swapmarket" for popular configs between users....
    I will be using W7 an W10 so hopefully will not be too sensitive to OS when it is released to Joe Public.
    73, Ian

  2. I hadn't thought of a swapmarket! Whatever next? The windows app is developed under W7 but it will be just fine on W10 and, I expect, long into the future.

    73, John, 'WGV