Specifications
Remote Control and Receiver-Transceiver Specifications and Requirements
for Windows Media Center in Windows Operating Systems
85
IAD/Extended Compat ID Descriptor Interaction
If you build an emulation device that is part of a composite USB device, you will need to modify
your Extended Compat ID Descriptor to match the interfaces as defined in your IAD descriptor.
Below is an example of an Extended Compat ID descriptor for a composite device with three
functions and three interfaces. The first function is CIR and uses interface 0. The second function
is something else and uses interface 1. The third function is something else and uses interface 2.
For more information, see the Extended Compat ID Descriptor documentation.
BYTE extendedCompatIDDesc[] = {
0x58, 0x00, 0x00, 0x00, // dwLength
0x00, 0x01, // bcdVersion
0x04, 0x00, // INDEX_CONFIG_DESCRIPOTR
0x03, // bCount - 3 interfaces.
// First interface:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
0x00, // Interface index
0x01, // Reserved
0x55, 0x53, 0x42, 0x43, 0x49, 0x52, 0x00, 0x00, // CompatibleID
0x49, 0x52, 0x32, 0x43, 0x4D, 0x50, 0x54, 0x00, // SubcompatibleID
// Second interface:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
0x01, // Interface Index
0x01, // Reserved
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // CompatibleID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SubcompatibleID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
// Third interface:
0x02, // interface interface index
0x01, // Reserved
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // CompatibleID Null filled
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SubcompatibleID Null filled
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
};
Commands and Responses
The interface between the host computer and the IR emulation device is a command-response
interface. The host sends a series of command bytes, with the first byte determining the type of
command and the length. The IR emulator device responds with a response specific to the
command received. Not all commands elicit a response.
Commands and responses have a consistent format. All communication packets begin with a
lead byte. This byte is divided into a 3-bit port value and a 5-bit length value.
There are three valid port values, as shown in the following table.
Number
Name
Description
100
PORT_IR
Used for IR commands and responses.
111
PORT_SYS
Used for "system" commands and responses
(non-IR device commands).
110
PORT_SER
A legacy port which used to be for a serial port but
is now used only for loopback (flush) messages.










