TOAD vs Discrete Codes
The goal of LinuxMCE media is to let the homeowner press 1 button, such as 'watch tv', and have LinuxMCE automatically turn on all the necessary a/v equipment and adjust all the settings automatically. Sometimes the manufacturers of a/v equipment had the foresight to build into their products a mechanism for a smart home system, like LinuxMCE, to control their devices automatically. These devices have a computer connection like RS232 or Ethernet. They will always work exceptionally well in a LinuxMCE home. LinuxMCE can command the a/v to do anything.
Very few a/v manufacturers put this type of control in their devices, and therefore LinuxMCE must control the equipment by sending infrared codes just like you do when you hit the button on your remote control. The problem is that some a/v devices were designed in such a way that only a human operator can control them. For example, to select an input on many TV's the operator must press an 'input select' button on the remote control and watch the display on the TV until they see the input they want. If LinuxMCE needs to set your TV to 'INPUT #3', it's impossible for LinuxMCE to 'watch' the screen and know when the TV is at the right input. Fortunately, some manufacturers added what are called 'discrete codes' to their TV. This means that there is an infrared command that will cause the TV to go directly to Input #3, for example, no matter what input it is currently on. There may not be a button for Input #3 on the remote--you may still have to use the toggle 'input select' button--but the TV has a special code that will cause it to go directly to that input. Sony brand TV's are an example. Even though there is only a toggle 'input select' button on the remote, there are infrared commands that LinuxMCE can send to make the TV go directly to the desired input. These are called 'discrete codes'.
The same thing is true with turning the device on and off. Some remote controls have dedicated 'on' and 'off' buttons. But others have only a 'power' button that toggles the state, and the manufacturer expects you, the user, to watch what's on the TV and decide if it's on or off.
If you are going to buy new a/v equipment we recommend that you only buy devices that have computer-type controls, like RS232, or, at least, recognize discrete codes. There are several web sites like http://www.remotecentral.com that have a lot of information on this subject and recommendations for equipment that have discrete codes.
If your device does not recognize discrete codes, it is referred to in the industry as a TOAD (Toggle Only Analog Device). It just recognizes commands that toggle it's state, such as the input or power. LinuxMCE will still control these devices but due to their nature, it is impossible to control them perfectly. For example, you will need to go to the A/V Properties page and list all the inputs that your device has in the right order. LinuxMCE will then 'remember' what input it last left the device on, and send the appropriate number of toggle commands. If LinuxMCE last turned the device to Input #1, and you now want to watch something on Input #4, LinuxMCE will send the input select command 3 times. This is not a perfect system. If someone manually changed the input, or if the device ever didn't recognize a code, it could get out of sync. LinuxMCE may think it's on one input when it's really on another.
The same thing is true for the power. If your device has only a toggle power button, LinuxMCE will remember if you left the device on or off so it knows when to send the toggle power command. But if LinuxMCE gets out of sync, it could be turning the TV off when it really thinks it's turning it on. For the power setting, at least, your LinuxMCE Pro dealer has lots of tricks they can use to work around this problem. There are sensors that LinuxMCE can read to determine if the TV is on or off, for example.