Specifications

Remote Control and Receiver-Transceiver Specifications and Requirements
for Windows Media Center in Windows Operating Systems
79
the envelope are typically in the 200-900 μsec range. About 95% of remote controls use some
sort of modulated protocol. Emulator devices must support this protocol.
Flow Control
When transmitting IR, it is possible that the host will push IR data faster than the device can emit
it. Instead of buffering this data, the device should return a negative acknowledge (NAK)
handshake to indicate that it is not ready for the additional data yet. For more information, see
section 8.5.1 of the USB 2.0 specification.
Bootloaders
Version 2 emulator devices must have a bootloader mode to support wake programming, which
is a requirement of the Windows Logo Program. The bootloader is a second mode of the
emulator device that the host can use to program the wake pattern. This mode is independent of
the main operating mode and is discussed in the Bootloader Implementation section.
Two Methods for Wake Programming
The V2 emulator interface supports two different methods for wake programming. These
methods are not necessarily mutually exclusive, but most hardware manufacturers will choose
one or the other.
Payload-Based Programming
The first option is to program the wake pattern in your device based on payload. If you choose
this method, you would program your device in response to a CMD_BOOT_SETWAKEPATTERN
request. The CMD_BOOT_SETWAKEPATTERN gives your device the Protocol, Payload, and
Address for the Wake key and it expects your firmware to watch for this key based on these
numbers. This requires your firmware to be able to decode both the RC6 and Quatro Pulse
protocols, and it expects this firmware to be parameterized in such a way that it can change its
behavior based on these numbers.
This option allows a simple communication between the host and device, but requires a more
complicated firmware.
Block-Based Programming
The second option is to program the wake pattern in your device based on a block of firmware. If
you choose this method, you would program your device in response to a
CMD_BOOT_WRITEBLOCK request. The CMD_BOOT_WRITEBLOCK request allows the host
to send an arbitrarily-sized block of firmware to your device for each <protocol,payload,address>
combination. This option is less demanding on the firmware that is in your device, but it requires
you to install multiple firmware blocks into the user‘s registry (one block of firmware for each
possible wake pattern).
This option allows for a simpler firmware implementation, but it requires the hardware
manufacturer to install firmware blocks into the user‘s registry.
USB Device Descriptors
USB device descriptors are defined by the USB consortium. For information about definitions and
usages of these descriptors, see the developer section of the USB 2.0 specification at
http://www.usb.org.