Parameters with namespaces, new commands and yet another issue with Macros.

As I mentioned previously the Parametered class while very useful also had limitations. Tonight I resolved the lack of namespaces, and developed the concept of the "Fully Qualified" parameter.

When a parameter is set or retrieved from a Parametered class, it is now required to have a namespace. The namespace is attached to the front of the parameter separated by the delimiter (currently '.') to provide the fully qualified parameter name. Once the fully qualified name is determined the parameter is stored or retrieved using the new string.

When the parameters are copied during a command clone or writing a device into the configuration file, the fully qualified name is retrieved and written to the new Command or into the the configuration file. When the configuration file is being read, the attribute is checked for the delimiter and if there is a delimiter present, then the fully qualified name and value pair are stored. By checking for the existence of a delimiter, only parameters that came from the Parametered container are put back into the container.

I also spent a very short amount of time adding the fast on and fast off commands, these are sent when you double tap a controller, in the fan case the intention is to go to full on or full off in response to this.

Once the new commands were done, I wrote the macros to provide the command rewriting and the headache started. When I originally wrote the macro work, it only needed to respond to on and off commands, so the configuration file parsing was rather naive and could only understand the concept of on and off. The macro selection (which one to expand) is also pretty terrible, only being able to compare with on and off. The upshoot of this is that sending the fast on matches both the full on and full off macros leading to the fan turning on for about a second before turning back off again. I will be exploring the Macro handling over the next couple of days and I anticipate a change in how macro's are described, parsed and selected. Overall it will be a much better solution and give more freedom.