After a brief hiatus, I finally got around to building out the links to the inline links downstairs. I added each device to plcd, and each of the buttons that will control them, then I started into linking them together. I found several issues within NetworkThread as it received the 'link' command. Mostly around how it handled the device IDs. I figured that as the Parametered class stored everything internally as strings, I could shove the text representation of the ID into the parameter and retrieve it as an integer. The only issue with this is that Parametered uses base 10 representations, and device IDs are always represented as base 16. This was causing '1e07a900' to be parsed as '00000001' as it failed when hitting the 'e'. Once this was fixed, I can send a link command from the GUI to plcd and it will build out the link, sometimes. I have found that my software does not handle building multiple links at all (the link command can handle 'link button a to device b, c and d') it does not handle cross links ('link button a to b and link button b to a') but it does handle single links most of the time ('link button a to device b') but the linking process seems to be very timing specific. I might try increasing delays so that each device can get firmly into linking mode before requesting the next device to link.
I finally made the switch for the GUI client, it was previously labelled as a Linux client, now I am using a more generic name as it is cross platform. The majority of the GUI building is in Windows, but I do make test builds and runs under Linux occasionally. There are usually a couple of build issues, mainly because I refuse to let compiler warnings slide and gcc is stricter than the VC++ compiler.
As time has gone by, I have been dedicating more and more buttons to specific purposes, and I have been labeling the buttons using a 2 layer sticker process. I basically print address labels with a grid pattern that corresponds with the button cap size. I cut the label out and after polishing the existing text off the cap stick the label to the button. Then, I take a blank piece of label that's oversized, and stick that on top of the printed label, cut the corners out and wrap the extra label down the sides of the button, cutting to size when finished. This adds wear protection to the printed text, and hopefully prevents the label corners or edges lifting. It looks ok, and appears to be fairly durable, I will add some pictures later. Last night, my wife mentioned she'd prefer to get some custom etched buttons in the places where we are no longer changing things. As the labels were only ever intended to be temporary while we figured locations out, I will have to explore how to word the buttons.