This function puts the HP palmtop into a very low power state in which the display is off and the CPU is not running. The HP palmtop remains in deep sleep until a Wake Up event occurs. Several potential wake up events are disabled prior to entering deep sleep. Some wake-ups will be transparent to the user, resulting in a brief wake up followed by an immediate return to deep sleep. This is intended to avoid spurious wake ups due to electrical noise, and/or ESD. When a wake up occurs, the machine services the wake up and exits back to the calling program.
The HP palmtop will remain awake during several states, including:
RX WAKEUP: If 4 valid chars are received before two invalid chars (framing, parity, overrun, break) then the HP palmtop will wake up. There is a time_out consisting of a loop counter that gets reset every time a valid char is received. If a time out is received before getting 4 valid chars or getting 2 errors, the unit is put back into deep sleep. Note that by the time that the code which performs the wakeup check is executed, several characters (baud rate dependent) will probably have been lost due to overrun errors. This unavoidable error is counted as the first of the 2 allowed errors.
RING WAKEUP: The RING line (RI = Bit6) of the UART is debounced. The ring is considered stable if it lasts about 0.4 seconds. If there is a stable ring, the unit wakes up.