HomevisionXL schedule development
Named constantsNumerical values in variables don't always have an obvious meaning. For example they may refer to an object number of a certain type or represent a screen in a custom menu system. If a change in the numbering scheme is required at a later time, it is very difficult to identify all locations that need to be changed. To simplify this job, named constants have been introduced. The value of the constant is defined in one place. A change to the value is automatically propagated throughout the schedule. Object references are automatically updated when the objects are reordered (see the HomeVisionXL tools).
Experimental actionsSome actions could benefit from a little bit of experimenting, for instance for determining the optimal delay between sending two infrared signals. It is a bit of a hassle to download a complete schedule for every trial. With the experimental actions screen you can just load one action sequence in an unused part of the controller memory and execute it. If it is not working perfectly just change it, load it, and execute it again. All this can be done without halting the controller, and so hardly causing any interference with the normal controller operation.
On-line action patchingWhen the HomeVision doesn't work exactly as expected the problem is frequently just a small mistake: checking the wrong flag, using a less-than instead of a greater-than comparison or setting an output port low when it should be high. These type of errors can now be fixed without reloading the whole schedule, or even stopping the controller. The "Action patching" entry in the Other menu presents a choice of all objects that can have actions attached. When the desired object has been selected and the "Edit Action" is clicked the program will retrieve the action as it is currently defined in the controller. The user will then have the possibility to edit this action as usual in an action editor screen. As long as the new action doesn't require more memory space than the original version, the action in the controller memory can be updated by clicking the "Patch Action" button. During the patch interval the object is temporarily disabled to make sure the controller doesn't try to execute a mix of old and new code. Also any wait timers used in the action code are stopped and cleared to prevent that invalid code will be executed.
If you are not quite sure about an action and expect that you may need to patch it later, some extra space can be reserved to allow the action to grow. This is accomplished by including a comment somewhere in the action with the following contents:
#Patchspace <size>Where <size> specifies the number of bytes (e.g.: 12) or percentage of the action length (e.g.: 10%) to reserve as additional patch space.