Specifications
Remote Control and Receiver-Transceiver Specifications and Requirements
for Windows Media Center in Windows Operating Systems
115
For example, a multiple-pattern device that receives CMD_BOOT_SETWAKEPATTERN with
protocol=RC6, Payload=0x0c, and Address=0x02 wakes on four different keys: RC6 Sleep
toggle, RC6 discrete on, Quatro Pulse Sleep toggle, and Quatro Pulse discrete on. However, the
device only wakes on these keys if they have the address set to 0x02. Remotes with other
addresses must not wake the host.
In both cases, the device must examine the values passed with the
CMD_BOOT_SETWAKEPATTERN command and adjust its behavior based on those values.
Wake Programming: CMD_BOOT_WRITEBLOCK
If your firmware space and clock are limited, you can use custom wake firmware for each wake
pattern. This firmware can be installed in the registry on the host, and the device driver can use
the CMD_BOOT_WRITEBLOCK command to send the appropriate wake firmware from the host
to the device. The format of the registry data is entirely opaque to the driver. It sends a specific
block of data to the device when a given wake key is needed by the user.
With two protocols, two possible wake keys, and eight addresses, a given device will need 32
(2*2*8) separate firmware blocks in the registry.
No mechanism is provided to install the firmware into the registry on the host device. If you
choose to use this option, you must provide an installation mechanism to your customers.
If no registry value exists with the correct key, the host will skip the CMD_BOOT_WRITEBLOCK
write sequence. In this case, the device will probably fall back to default behavior and the user
may be left with a Sleep button on their remote control that does not wake the PC.
Firmware Write Sequence
This section describes the entire sequence from beginning to end for programming a new wake
pattern in an emulator device.
User Presses Sleep (formally Power) Button
The host driver tracks the type of Sleep button the user has (protocol, button code, and address).
When the user presses the Sleep button on the remote, the driver inspects the payload and notes
the type of Sleep button the user has. For example, the user has an RC6 remote with discrete
Sleep buttons set to address 3. When the user presses the ―discrete off‖ button, the host driver
notes that it must program the device to wake when it receives the RC6 ―discrete on‖ button with
address 3. The driver doesn‘t do anything with this information until later.
Host Enters Low-Power State
Because the user has pressed the Sleep button, the system enters a low-power state. The device
watches for whichever wake pattern it happens to be watching for. This wake pattern may or may
not be correct. The pattern may be the default wake pattern as chosen by the hardware
manufacturer.
Host Wakes, PNP Event Received by Host
The user wakes the host system. The device driver for the emulation device receives a PNP
event indicating that the device is once again available.










