To add some more clarity to this, or everything you didn't want to know about how HT device selection works in an extender....
In the remote there is a table of setup codes, it is organized by device ID. For example, the CBL could be ID 0, TV ID1, VCR ID2, etc.
In this table is stored the setup code that you enter when you are setting up your remote. So when you set the TV to 0560, you store 0560 in entry number 1 (the second entry) in the table.
Now, when you introduce Home Theater mode (this is what the extenders do, and some of the remotes did this natively as well) you have to tell the remote what to do when a key is pressed. To do this, the extender keeps a table of device ID's that are stored for each key set. Again for example, say that the remote has 5 key sets (T, V, C, M and O). To tell the remote what to do when it processes a "Channel" Key you store the device Id into Channel the entry in that table.
The remote also stores tables of keys that are checked after every key press to see which set the current key is pressed. These lists are sometimes stored in the remote when shipped from the factory and are sometimes stored in the extenders if we can't find a list that we like when we're writing the extender.
So, when a key is pressed, the extender code does this:
- First, get the key value and look it up in the key lists. Find the key list ID
Second, use that key list ID to look up the device Id for that key set from key set table
Third, use the device ID to go look up the setup code for the device
Fourth, load the setup code and process the key that was pressed using that setup code
Ok, so now that you see how this works, there are two ways to set these table entries. Let's assume that you want to set the Channel keys to use the CBL setup code that you have stored in the device table. CBL is ID=0 on your remote.
In the Atlas, you would do a C_CBL and this would store the cable device (0) into the Channel entry in the table.
On the RCA, you would need to do a Dev_CBL, Set_C. The first sets a "temporary" device to be CBL (0) and the second command tells the remote to store the temporary device in the channel.
As you have noted, both extenders have ways to set a temporary device, either the X_device commands on the Atlas or the Dev_device commands on the RCA. That temporary device is cleared either by (1) the end of a macro or (2) a Dev_Cancel or an X_Cancel command.
You may ask what is the difference and why would you choose one over the other. The issue boils down to key values.
Every key that you press is defined by an 8-bit key value, so there are 256 unique key values. Actually, there are 254 since $00 and $FF often mean something special and you really don't' want to use those. When writing an extender you need to take into consideration that you need values for every key on the remote, a shifted value for every key on the remote and an X-Shifted value for every key on the remote. The RCA has something like 65 keys so you need nearly 200 key values just for the normal, shifted and x-shifted key values.
On the Atlas style you need to define a lot of keys for the HT setup.. You need to define six keys (i.e. T_TV, V_TV, C_TV, O_TV, M_TV, P_TV) for every device, thus on an 8-device remote 8*6 and then you also need to define 6 keys for the temporary device and an X_Cancel command. This turns out to be 55 key values and in reality to make the code to detect them small they have to be contiguous. This is impossible on some remotes. This is why I switched when writing the RCA extender (i.e. lots of keys and 8 devices)
On the RCA style you need to define one set of "Set_x" keys for each key set (6 in the above example) and one set of "Dev_x" keys for each device and the Dev_Cancel command so that is 6+8+1, or only 15 keys. Much easier to find space for them in the key map.
So to answer your questions:
1: Yes, the Dev_device keys on the RCA set the temporary device, just like the X_device commands do on the Atlas.
2: The Keyset_device commands (i.e. T_TV) set the permanent table for key list device ids. The Set_keyset commands (i.e. Set_T) do this on the RCA, but it does it from the temporary device where the Atlas does it explicitly.
3: Both of the temporary device setting command sets will expire at the end of a macro (i.e. you don't need a "Cancel" on the end of your macros)
As Vicky said, some of the extenders are packaged with a key list, so you can see how little room there really is left to do what we do with extenders. I think the Atlas shipped with an EXCEL file keys.xls. I'm not sure I shipped the RCA with a keys file.[/list]