# Patent

## Title
Enhanced host sleep for WLAN devices

## Abstract

A host assembly is communicatively coupled to a wireless device assembly via a first interface and via a second interface. A first signal is received at the wireless device assembly from the host assembly. The first signal indicates a request for the wireless device assembly to enter a host sleep mode of operation. In response to receiving the first signal, the wireless device assembly transmits a third signal to the host assembly, wherein the third signal indicates entry into the host sleep mode of operation. Subsequent to transmitting the third signal to the host assembly via the first interface, the wireless device assembly enters into the host sleep mode of operation. While in the host sleep mode of operation, the wireless device assembly transmits, via the second interface, the second signal, and, after transmitting the second signal to the host assembly, exits the host sleep mode of operation.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
The present application is a continuation application of U.S. application Ser. No. 11/939,276, now U.S. Pat. No. 8,170,624, entitled “Enhanced Host Sleep for WLAN Device”, filed on Nov. 13, 2007, which claims the benefit of U.S. Provisional Application No. 60/865,331, entitled “Enhanced Host Sleep for WLAN Device,” filed on Nov. 10, 2006. Both of the above-referenced applications are hereby incorporated by reference herein in their entireties.


FIELD OF TECHNOLOGY
The present disclosure relates generally to communication devices, and more particularly, to techniques for improving power saving operation in a wireless network.
DESCRIPTION OF THE RELATED ART
Wireless networks continue to increase in popularly as consumers migrate toward portable computing device and as manufacturers continue to develop wireless devices with greater functionality. Many consumers routinely install into their homes personal wireless networks that do not enjoy substantial range, but offer considerable bandwidth and ease of installation. On a larger scale, cities have begun deploying wireless networks covering large areas.
There are numerous types of wireless networks and network protocols. Wireless local area networks (WLAN) typically include one of the various Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard wireless protocols, first promulgated in 1999. These protocols include IEEE 802.11a, 802.11b, 802.11n, and 802.11g which operate at different spectrum bands and/or different multiplexing or spread spectrum schemes to deliver various bit rates to devices on the network.
These wireless networks may be deployed in any of a variety of topologies. With WLAN networks, in particular, there are generally two network topologies: ad-hoc topologies and infrastructure topologies. An ad-hoc network (also termed an Independent Basic Service Set—IBSS) is a peer-to-peer network in which devices communicate directly with one another, without the need of a central host. An infrastructure network, on the other hand, uses a host (e.g., a base station or an access point) to route all data between the supported devices. Infrastructure networks allow wireless devices (or clients) to join and disconnect from the network with greater ease and are typically employed in more long term network environments, whereas ad-hoc networks are generally more short term, as the name implies. Either network configuration may support any number of devices including laptop computers, handheld computers, printers, storage media, and other network equipment, such as hosts, routers, switches, etc. In some examples, such as with Bluetooth networks, the wireless devices may be handheld communicators like cellular telephones or walkie-talkies.
Wireless devices may operate using many different power sources. Some may use a constant AC power source, while others may operate off battery power, while others may operate off of either. With the variety of power sources for devices on a network, power consumption has become an important aspect of network operation and thus an important aspect of wireless device operation. Many wireless devices deploy some type of power management protocol that will place the device into a power save mode during periods of non use or reduced use. For example, the IEEE 802.11 standards set forth a power save (PS) mode for wireless devices power in which the devices consume a reduced amount of power from a host. By contrast, in an inactive PS mode, also termed an active or normal operating mode, the wireless devices may sleep or wake as necessarily to receive and transmit packet data on the network.
While devices with PS modes are known, controlling the wireless device sleep state does not conserve power in the underlying host for that device. A WLAN secure digital (SD) card for example may have a selectable PS mode, but the underlying host assembly (e.g., processor assembly in a laptop computer, digital camera, etc.) would still be in an operating mode even though at least with respect to its WLAN capabilities the host would be idle. There is therefore a desirability to have separate sleep modes for both a host assembly and the wireless device connected thereto. Further still, it is desirable to coordinate such sleep modes in a manner that allows each of the assemblies (the host and the wireless device) to be kept in their respective sleep modes while still facilitating a coordinated wake up between the two.
SUMMARY OF THE DISCLOSURE
In one embodiment, a method is implemented in a wireless device assembly, the wireless device assembly configured to communicate wirelessly with one or more other devices. The method includes receiving, at the wireless device assembly, a first signal from a host assembly, wherein the host assembly is communicatively coupled to the wireless device assembly (i) via a first interface and (ii) via a second interface. The first signal indicates a request for the wireless device assembly to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly initiates communication with the host assembly via the first interface only after transmitting a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation. The method also includes, in response to the wireless device assembly receiving the first signal, transmitting, via the first interface, a third signal from the wireless device assembly to the host assembly, wherein the third signal indicates entry of the wireless device assembly into the host sleep mode of operation. Additionally, the method includes, subsequent to the wireless device assembly transmitting the third signal to the host assembly via the first interface, having the wireless device assembly enter into the host sleep mode of operation. Further, the method includes, while the wireless device assembly is operating in the host sleep mode of operation, transmitting, via the second interface, the second signal, and exiting, with the wireless device assembly, the host sleep mode of operation after transmitting the second signal from the wireless device assembly to the host assembly.
In another embodiment, a wireless device assembly is configured to communicate wirelessly with one or more other devices. The wireless device assembly comprises a first interface to communicate with a host assembly, a second interface to communicate with the host assembly, a memory, and a processor coupled to the memory. The memory stores instructions, which when executed by a processor, cause the processor to process a first signal received from the host assembly via the first interface, wherein the first signal indicates a request for the wireless device assembly to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly initiates communication with the host assembly via the first interface only after transmitting a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation. Additionally, the memory stores instructions, which when executed by a processor, cause the processor to, in response to the first signal, transmit, via the first interface, a third signal to the host assembly, wherein the third signal indicates entry of the wireless device assembly into the host sleep mode of operation, and, after transmitting the third signal, cause the wireless device assembly to enter the host sleep mode of operation. Also, the memory stores instructions, which when executed by a processor, cause the processor to, during the host sleep mode of operation, transmit, via the second interface, the second signal, and, after the second signal is transmitted via the second interface, cause the wireless device assembly to exit the host sleep mode of operation.
In yet another embodiment, a method is implemented in a host assembly communicatively coupled to a wireless device assembly (i) via a first interface and (ii) via a second interface. The method includes transmitting, from the host assembly to the wireless device assembly, a first signal, wherein the first signal indicates a request for the wireless device assembly to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly initiates communication with the host assembly via the first interface only after transmitting a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation. Additionally, the method includes, in response to the first signal, receiving, via the first interface, a third signal from the wireless device assembly, wherein the third signal indicates entry of the wireless device assembly into the host sleep mode of operation, and, in response to receiving the third signal, blocking access by the wireless device assembly to a bus of the host assembly. The method also includes, during the host sleep mode of operation, receiving, via the second interface, the second signal, and after receiving the second signal, allowing access by the wireless device assembly to the bus of the host assembly.
In still another embodiment, a host assembly comprises a first interface to communicate with a wireless device assembly, a second interface to communicate with the wireless device assembly, a bus coupled to the first interface, a memory, and a processor coupled to the memory. The memory stores instructions, which when executed by a processor, cause the processor to transmit a first signal to the wireless device assembly, wherein the first signal indicates a request to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly initiates communication with the host assembly via the first interface only after transmitting a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation. The memory also stores instructions, which when executed by a processor, cause the processor to process a third signal received, via the first interface, from the wireless device assembly, wherein the third signal is responsive to the first signal and indicates entry of the wireless device assembly into the host sleep mode of operation, and, in response to receiving the third signal, block access by the wireless device assembly to the bus. Further, the memory stores instructions, which when executed by a processor, cause the processor to, during the host sleep mode of operation, process the second signal received via the second interface, and after receiving the second signal, allow access by the wireless device assembly to the bus.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a diagram illustrating a wireless network including a host device establishing the wireless network and a plurality of wireless devices coupled to a base station or access point;
FIG. 2 is a block diagram of a wireless network in an ad-hoc configuration;
FIG. 3 is a block diagram of a wireless device having a host assembly and wireless device assembly connected thereto as may be used in an infrastructure or ad-hoc network configuration;
FIG. 4 is a diagram of an example host sleep mode implementation for a wireless network device in which the wireless device assembly is in an inactive power save mode;
FIG. 5 is a diagram of an example host sleep mode implementation for a wireless network device in which the wireless device assembly is in an active power save mode;
FIG. 6 is a diagram of an example host sleep mode implementation similar to that of FIG. 4 but in which there is no fixed gap time that the wireless device assembly will wait before handshaking with the host assembly;
FIG. 7 is a diagram of an example host sleep mode implementation similar to that of FIG. 5 but in which there is no fixed gap time that the wireless device assembly will wait before handshaking with the host assembly; and
FIG. 8 is a diagram of an example host sleep mode implementation when wakeup interrupt signals are crossed with host sleep mode activation signals.



DETAILED DESCRIPTION
FIG. 1 is a block diagram of an example wireless network 100, which may represent a short range or long range network and which is described below as being in an infrastructure topology with a base station 102 serving as a base station or access point. In the illustrated example, the base station 102 represents a computer system that would include a dedicated wireless base station, router, or switch, connected to a main computer. However, the base station 102 may represent in other examples a wireless network card or other hardware that may be inserted into a computer system, router, base station, etc. In a WLAN environment, the base station 102 (as well as the connected wireless devices) may be compliant with one of the accepted or contemplated wireless communications protocols, of which IEEE 802.11a, 802.11b, 802.11g, 802.11n, and Bluetooth, are examples. But these are only provided by way of example. The base station 102 may operate under any wireless protocol desired.
The base station 102 is coupled to an Internet backbone 104, which may contain a series of Internet service providers and act as a network gateway so that the base station 102 is able to transmit and receive data over the Internet. The backbone 104 may be at the premises of the base station 102, as in the case of a wireless base station serving as the network host and coupled to a digital subscribe line (DSL) or cable modem acting as a front user end of Internet backbone 104. But in other examples, the base station 102 may represent a more integrated device with both modulation/demodulation capabilities and wireless routing capabilities and connected directly to the service provide headend acting as the backbone 104.
The base station 102 has a transmitter 105 that communicates with numerous wireless devices (or clients) 106A-106C that each may have software, hardware, or firmware based drivers that allow the respective devices to connect to and communicate via the network using the base station 102 as a routing point or access point. By way of example, the wireless devices 106A-106C may represent wireless terminals, personal handheld devices, laptop computers, wireless supported desktop computers, intelligent phones (e.g., GSM based telephones), gaming systems, or other wireless networking devices, such as routers, switches, etc.
As will be explained below, the wireless devices 106A-106C may include a host device, or assembly, that performs the primary processing functions, and a wireless device assembly, which may be plug insertable into the host assembly and which communicates wirelessly with the base station 102. The host assembly has at least two operating modes, a host sleep (HS) mode and a normal operating mode. The wireless device assembly may have an active power save (PS) mode and an inactive PS mode, where in the later the device is asleep and operating under reduced power consumption.
The active PS mode may be such as that defined in the IEEE 802.11 standard. More broadly, however, the term PS mode herein refers to any mode in which the wireless device assembly is controlled for reduced power consumption operation. Each wireless device may be able to control entry and exit into the PS mode based on its own decisional logic, for example, entering a power save mode after a threshold amount of time without data transmission between the host assembly on the wireless device 106A-106C and the base station 102. Each device 106A-106C may be capable of communicating its operating mode to the base station 102 via status data, which may be transmitted and received on periodic basis, during an allotted time window, or in an unscheduled manner at the initiation of the wireless device.
In some examples, the base station 102 may be programmed to alter (or suggest a change to) the operating mode of the wireless device 106A-106C by communicating an active mode or PS mode instruction to the wireless device in response to this device status data. Various schemes for managing power consumption in and data throughput to a wireless device on a WLAN will be known. Some examples include slotted power saving mechanisms for IEEE 802.11 compliant devices, wherein a time-slotted bandwidth window is used to wake up wireless devices in particular time slots only, during which other wireless devices may enter a PS mode. Other examples include intelligent data packeting and buffering that optimizes data transmission efficiency thereby placing wireless devices in an active mode during periods of data transfer, while reducing the amount of time a wireless device spends in an active mode during periods of no data transfer.
The base station 102 is able to communicate information between the Internet backbone 104 and the wireless devices 106A-106C in response to upstream request data initiated by applications executing on the base station 102 or the wireless devices 106A-106C. The executable applications described herein may represent high level software running in an operating system environment, examples of which would include web-browsers and electronic mail clients. However, the applications 108 may alternatively represent low level software code embedded within an operating system or low level software code (including firmware) executing inside hardware or firmware of the base station 102 or the wireless device 106A-106C. For example, with a cable modem type base station, data transmission can be controlled by physical layer (PHY) applications of the OSI model which operate to collect, packetize, and transmit and receive data on the backbone cable internet service. In any event, the applications discussed in the figures below, with regard to either a base station or a wireless device, may represent any code hierarchies that are used for transmission and or receipt of data on a network.
In the illustrated example, the base station 102 is also coupled to a storage media 110, such as an external storage drive, and a peripheral 112, such as a printer, either of which may be accessible to a wireless device on the network 100. In the illustrated example, these devices are external and coupled to the base station 102 through wired connections. The base station 102 may also be coupled to another wireless network 114 via a router 116 which is wirelessly connected to devices 118A and 118B, as shown.
FIG. 2 illustrates an ad-hoc or peer-to-peer network 200 comprising independently communicating devices 202-210 forming the ad-hoc network 200 and capable of communicating directly with one another. The devices 202-210 include host drivers 202A-210A, respectively, each coupled to a wireless assembly 202B-210B to establish and maintain the ad-hoc network 200. In the illustrated configuration, each wireless device 202-210 may have a PS mode with respect to the ad-hoc network 100, i.e., where one or more of the devices would not be able to communicate with other devices, while each wireless device 202-210 could still operate in an active mode with respect to the gateway 212. In an ad-hoc topology, each of the clients 202-210 will operate as a separate node capable of communicating data to the other nodes, and these nodes 202-210 may support local devices connected thereto. In an ad-hoc topology, the local devices may or might not be able to communicate directly with other nodes on the ad-hoc network.
In each of the above examples, each wireless device may include a host assembly that is capable of operating under either an active mode or a host sleep (HS) mode, separate from whether the wireless device assembly is in a PS mode or not. The HS mode allows the host assembly to fully go to sleep or to simply establish that regardless of the operating mode of the wireless device assembly, there must be a wakeup interrupt received at the host from the wireless assembly connected thereto before the host will awake from the S mode and send data.
FIG. 3 illustrates an example implementation of a wireless device 250 that may be used in any of the network configurations of FIG. 1 or 2, for example. The wireless device 250 comprises a host assembly 252 which includes a system on a chip (SoC) assembly that processes packet data received a wireless network. The SoC assembly 254 may include a SoC processor, memory interface, and memory for buffering received packet data for decoding and analysis. Different types of memories may be used for the memory, including double data rate (DDR) memory, flash memory, etc. The memory interface may be provided as an interface corresponding to the memory (e.g., a DDR memory interface, flash memory interface, etc.).
The host assembly 252 may further include additional components, such as a test action port, e.g., joint task action group (JTAG) port (not shown), an input/output interface (e.g., a general purpose input/output (GPIO) interface 256), or a receiver and/or transmitter, e.g., universal asynchronous receiver/transmitter (UART) (not shown).
The host assembly 252 further includes a host driver 258 that interfaces with a secure digital input/output (SDIO) interface 260 connected thereto via a SDIO bus 262. The SDIO interface 260 connects the host assembly 252 to a wireless device assembly 264, which may be a WLAN device capable of communicating over a wireless network with an access point, such as a base station, although in other examples, the WLAN device assembly 264 may function as an access point. In the illustrated example, the assembly 264 includes a central processor or chipset 266 controlling operation of the assembly 264 along with firmware 268 that controls the interfacing and handshaking (to be described further below) between the device assembly 264 and the host assembly 252.
As noted above, the device assembly 264 may operate under an inactive PS mode. The typical cases are as follows. The wireless device assembly 264 is not associated with any access point 102. The device assembly 264 is associated with access point 102 but the host assembly 252 never issues a PS command to device assembly 264. The host assembly 252 has tried to issue a PS command to device assembly 264 but the command is blocked in a host driver for some reason. For example, in an ad-hoc topology when an ad-hoc traffic indication map (ATIM) window is set to 0 indicating that PS mode is not used.
In any of these examples, the host assembly 252 may be able to enter an HS mode in which case the host assembly 252 would still be able to go to sleep or if not asleep yield SDIO bus 262 access to another device, such as another Wi-Fi, Bluetooth, GPS, or other device connected to the bus 262.
In examples herein, the host assembly 252 and the wireless device assembly 264 are able to enter sleep modes (an HS mode or PS mode respectively) and coordinate such entry through a handshaking procedure, which in some examples includes two steps, configuration and activation. Each of these assemblies may also be able to wakeup the other through sending a wakeup interrupt signal of some sort, after which a handshaking procedure is entered.
The wireless device assembly 264, e.g., the firmware 268, may deliver a wakeup interrupt to the host assembly 252 separately through the GPIO interface 256 or other method, for example upon receipt of packet data from the base station indicating that the corresponding wireless device should wake up from its PS mode.
The HS mode of the wireless device assembly 264 may be configured and controlled through a handshaking between the host driver 258 and the firmware 268. For example, the device assembly 264 may be programmed to refrain from completely entering the HS mode or from waking up from the HS mode, until the host assembly 252 has communicated (and the assembly 264 received) a sleep confirmation signal or an activation signal. In this way, full entry to and exit from the HS mode may be achieved by a handshaking whether in an infrastructure or ad-hoc topology.
FIG. 4 illustrates an example implementation of a HS mode for wireless device firmware. An application 302 running on a host assembly generates an initial enable (HS_ENABLE) signal 303, instructing a SDIO/WLAN host driver 304 that an HS mode is to be entered. For example, the application 302 may be programmed to determine when it is desirable for entry into a HS mode based on the activity like network traffic. The host driver 304 then issues a configuration (HS_CONFIG) command 305 to the wireless device assembly firmware 306, indicating that the host assembly 252 desires to enter an HS mode.
When the host driver 304 enters a HS mode the host assembly may relinquish control of the SDIO interface to another device coupled to the host assembly. The host and device handshaking restrains the host driver 304 from immediately activating an HS mode upon receipt of the HS_ENABLE signal 303. Instead, a HS_CONFIG signal 305 is transmitted, and then the firmware 306 configures itself based on the request for an HS mode, and responds to the host driver 304 with a configuration response HS_CONFIG_RESP 307 signal. The host driver 304 then enters the HS mode and issues an activate signal HS_ACTIVATE 308 signal after receiving the HS_CONFIG_RESP signal 307, which activate signal 308 instructs the device assembly firmware 306 that the host driver 304 has entered the HS mode. The device firmware 306 responds with an HS_ACTIVATE_RESP signal 309. The signals 305, 307, 308 and 309 may be considered part of a host sleep mode handshaking communication protocol 310 between the host driver 304 and the wireless device assembly firmware 306.
After the host driver 304 enters the HS mode, the driver 304 communicates to the application 302 that the HS mode has been activated by sending an activation confirmation signal HS_Activated 311.
In the HS mode, the host assembly would block the wireless device assembly from communicating on the wireless interface, e.g., an SDIO interface. In the example of FIG. 3, the wireless device assembly 264 would be precluded from accessing the host assembly bus 262 or the SoC assembly 254 more generally, and the host assembly 252 would be allowed to remain in a PS mode. Instead, the host assembly 252 could allow another network device, such as a GPS, Wi-Fi, or Bluetooth device coupled to the bus 262, to access the bus 262. Also, while in the HS mode, any commands or data from the application 302 executing on the host assembly would be queued because such information would not be communicated to the wireless device assembly as the assembly would be in the HS mode.
If the wireless device assembly wants to communicate with the host driver 304, the firmware 306 must generate an awake (HS_AWAKE) signal 312 and send that signal to the host driver 304. As shown in FIG. 4, the device firmware 306 cannot immediately send its wakeup signal to the host assembly, but must wait for a gap period of time set forth in the HS_CONFIG data signal 305 sent from the host driver 304. The application sends the host driver 304 a disable signal HS_DISABLE signal 313 in response to a wakeup interrupt signal 314 from the device firmware 306, which may be communicated directly through a connection such as a GPIO interface.
The host driver 304 responds to the awake request by sending an HS_AWAKE_CONFIRM signal 315 to the device firmware 306, which confirms the host's receipt of the interrupt command and exit from the HS mode. If such a confirmation signal is not received, then the device firmware 306 may be programmed to repeat the wakeup interrupt signal broadcast after a given period of time. In general the wakeup signals may be initiated by the receipt of packet data over a wireless network. In response to the confirmation signal 315, the device firmware 306 enters a full communication mode and sends a response signal 316 (HS_AWAKE_CONFIRM_RESP) indicating that the device firmware 305 is ready for communication with the host driver 304. The host driver 304 now allows the wireless device to access the network bus, and then sends an HS_CONFIG cancellation signal 317 to the device firmware 306, which confirms receipt of the signal via an HS_CONFIG_RESP signal 318. These signals form a wakeup handshaking protocol 319 for the HS mode. As shown data and commands may now be sent in this mode.
While the device firmware may initiate the handshaking process to disable the HS mode on the host assembly and the PS mode on the wireless device assembly, the host driver 304 may at any time initiate wakeup from the HS mode and wake up the device firmware 306 by sending a disable signal to the device firmware 306 through a SDIO/WLAN interface, a GPIO interface, or other means. The host driver 304 may do this at any time by sending an HS_CONFIG with cancellation signal 320 (similar or like that of signal 317) to the device firmware 306, which confirms receipt by sending an HS_CONFIG_RESP signal 321 back to the host driver 304. That is, in this example, the host has deactivated the HS mode by sending a disable parameter, after which the host 304 may begin sending packet data or other commands to the device firmware 306. In other examples, the device firmware 306 may be programmed to terminate the HS mode upon receipt of packet data or commands directly, without the need for a disable command.
FIG. 5 illustrates a HS mode that may be used when the device firmware is in an active PS mode, i.e., where the device firmware is able to periodically to go to sleep and wake up. As with the other examples described herein, the mode could be used in infrastructure and ad-hoc topologies.
Generally speaking, the wireless device assembly will communicate its operating mode to the host assembly through a status signal such as a PS_AWAKE and PS_SLEEP, which may be periodically sent over an SDIO interface. To affect handshaking, the host driver responds with a confirmation command (e.g., PS_SLEEP_CONFIRM) acknowledging receipt of the status signal (e.g., PS_SLEEP), and in some cases thereby controlling the device firmware's entry into the PS mode by awaiting handshake completion before entry.
The configuration of FIG. 5 is similar to that of FIG. 4 and includes an application 402, a host driver 404, and a wireless device firmware 406. As with FIG. 4, the host device features may be implemented in a host driver, and the wireless device features may be implemented in firmware in that device. Although, implementations may be achieved in any hardware, software, or firmware of either of these network devices. As illustrated, the application 402 transmits an enable HS_ENABLE signal 407 or a deactivation HS_DISABLE signal 408 to the host driver 404 in a similar manner to that of the configuration of FIG. 4. Handshaking between the host driver 404 and the wireless device firmware 406, however, is different than that described in FIG. 4, because in general with the wireless device assembly being in a PS mode or attempting to enter a PS mode, the device firmware 406 does not configure itself in response to the signal from the host driver as occurred in the example of FIG. 3.
To enter an HS mode, the application 402 sends HS_ENABLE signal 407 advising the host driver 404 of the desire to enter the HS mode. The host driver 404 then enters into a handshake with the wireless device firmware 406. The first part of the handshake is a configuration handshake. The host driver 404 sends an HS_CONFIG signal 409 to the device firmware 406, which records that information and acknowledges receipt by sending a response signal HS_CONFIG_RESP signal 410.
The device firmware 406 advises the host of its operating state by sending a PS_AWAKE signal 412 or a PS_SLEEP signal 413 indicating that the device firmware 406 is awake (or awakening) or gone asleep (or going to sleep), respectively, which the firmware 406 may communicate through an SDIO interface. Upon receipt of the PS_SLEEP signal 413, the host driver 404 enters a HS mode and sends a confirmation signal PS_SLEEP_CONFIRM signal 414 confirming the same. The host driver 404 sends an announcement signal to the application 402 as a HS_ACTIVATED signal 415 to advise of entry into the HS mode. These signals form an activation handshake protocol 416.
The HS mode wakeup occurs in a similar manner to that of FIG. 4. A wakeup interrupt signal 417 is sent from the wireless device assembly to the application 402, e.g., through a GPIO, as the SDIO interface is not accessible in an HS mode. The application 402 sends an HS_DISABLE signal 408 to the host driver 404 which unlocks the SDIO bus allowing the WLAN device firmware to access the bus for communication between the host and wireless device assemblies. After sending a wakeup interrupt 417 signal, the device firmware 406 waits a predetermined length of time, set by the HS_CONFIG signal 409, and then sends an awake request HS_AWAKE signal 418 to the host driver 404, which exits the HS mode completely responds with an awake confirmation HS_AWAKE_CONFIRM signal 419, after which the wireless device assembly deactivates the HS mode. The device firmware 406 then sends a confirmation response HS_AWAKE_CONFIRM_RESP signal 420 as part of a confirmation handshake portion. After the confirmation handshake portion has been completed and the HS mode deactivated, the host driver 404 and device firmware 406 enter into a configuration handshake, where the host driver 404 sends a configuration cancellation HS_CONFIG cancellation signal 421 to the device, and the device firmware 406 sends a response HS_CONFIG_RESP signal 422 to the host 404.
The host assembly may initiate wakeup as well by having the application 402 initiate and send the host driver 404 the HS_DISABLE signal 408 without receipt of the interrupt from the wireless device firmware 406. The host driver 404 sends a wakeup signal 424 to the device firmware 406, for example through a GPIO or other interface, which is used because direct access to a wireless device firmware is not allowed when a device is in an active PS mode. The device firmware 406 responds with an HS_AWAKE signal 425 indicating to the host 404 that the HS mode may be deactivated. The host 404 sends an HS_AWAKE_CONFIRM signal 426 indicating that the HS mode has been exited and the device firmware 406 sends an HS_AWAKE_CONFIRM_RESP signal 427. The device firmware 406 and host driver 404 then enter a configuration handshake portion to cancel the configuration changes that resulted from the HS mode. The host driver 404 sends an HS_CONFIG with cancellation signal 428 to the device firmware 406, which responds with an HS_CONFIG_RESP signal 429. Upon cancellation of the HS mode, the device firmware 406 also awake from the PS mode and thus sends the PS_AWAKE signal 412 confirming the same to the host driver 404.
FIG. 6 illustrates a different HS mode, termed an HS extended mode. In FIGS. 4 and 5, the response time until a wakeup interrupt is sent from the host assembly to the wireless device assembly on a GPIO or other interface is predictable and less than the gap configured in the HS_CONFIG command signal. This allows the wireless device assembly to send its awake HS_AWAKE signal to the host directly through the SDIO interface, after the gap time period.
In some embodiments, however, the response time from the host will not be predictable, therefore an enhanced HS mode may be used where, even after sending a wakeup interrupt, the device assembly is prevented from the entering an awake operating mode until the host assembly instructs the device firmware to do so. For example, a gap time data may be set to a special value (e.g., 0xff) that indicates to the wireless device assembly that there is no gap time and that the wireless device assembly must await an interrupt/notification from the host assembly before waking up.
The extended HS mode is implemented when the response time of the wireless device is unknown at the host assembly. Instead of having the host assembly await an awake signal from the wireless device assembly, upon receiving the request to open the WLAN bus, the host assembly polls the wireless device assembly to trigger the device to transmit an awake request. Because the mode of FIG. 6 is similar to that of FIG. 4 like reference numerals will be used for like command signals.
In the examples discussed herein, the gap is set to 0xff (or 255 in decimal value) and is stored in a memory location within the device firmware. The firmware having a gap equal to 0xff is programmed to refrain from sending the HS_AWAKE signal 312′ to the host driver 304′ until a wakeup notification or interrupt signal 502 is received from the host driver 304′. The host driver 304′ may send the wakeup notification or interrupt signal 502 through the SDIO interface (e.g., in the Power bit in the Configuration Register) or through the GPIO interface at any point to awaken the device firmware 306′. But the device firmware 306′ will not awaken, or send its HS mode wakeup signal, until that wakeup interrupt signal is received. In either situation, the same processing may occur for both inactive PS mode and active PS mode.
FIG. 6 illustrates an HS mode with a gap equal to 0xff and with the wireless device firmware 306′ in an inactive PS mode. The HS mode initiation is similar to the operation of the inactive PS mode shown in FIG. 4. Except, in the enhanced mode, after receiving the HS_ACTIVATE signal 308′ from the host driver 304′, the device firmware 306′ pulls down all SDIO lines to avoid current leakage. Furthermore, when the HS mode is active, the device firmware 306′ is prevented from waking up until the host 304′ sends the wakeup firmware signal 502′. That is, there is no automatic gap time countdown, after which the device is allowed to resume wireless communications with the host. When the device firmware 306′ receives the wakeup signal, the devices pulls up all the SDIO lines to place the device assembly into a wireless transmission ready mode, and then the device firmware 306′ is able to initiate HS deactivation handshaking and HS cancellation handshaking as described above.
FIG. 7 illustrates an enhanced HS mode for a wireless device assembly in an active PS mode and operating with a similar process to that of FIG. 5, and thus similar reference numerals are used. Interaction between an application 402′ and the host driver 404′ is as described above. Interaction between the host driver 404′ and the device firmware 406′ is as described above as well, except that the upon receipt of the PS_SLEEP_CONFIRM signal 414′, the HS mode is activated in the wireless device firmware 406′ which pulls down all the SDIO lines to further conserve power consumption. Upon wakeup, the device firmware 406′ is prevented from waking up (no matter than the length of time elapsed) until a wakeup interrupt signal 602 is sent from the host driver 404′ to the device firmware 406′ and in response to the HS_DISABLE signal 407. After the wakeup interrupt signal 602 is received, the device firmware 406′ pulls up the SDIO lines.
FIG. 8 illustrates another example HS mode implementation, but in which wakeup interrupts are received out of order. In a HS mode enable implementation 700, a host driver 702 and wireless device firmware 704 go through a configuration and activation handshake like that discussed in examples above. Yet, in the cross communication scenario illustrated, the device firmware 704 sends a wake interrupt signal 705 before an HS_ACTIVATED signal 706 has been communicated to application 708. In this situation, the application 708 is programmed to ignore the HS_ACTIVATED signal 706. That is the host driver 702 is not put to sleep and does not yield bus access upon receipt of the HS_ACTIVATED signal 706. Instead, that signal 706 is ignored, and the application 708 sends a confirming HS_DISABLE signal 709 to the host driver 702, after which the HS deactivation handshake (signals 710-714) and the HS cancellation handshake (signals 716 and 718) are implemented between the host driver 702 and the device 704.
An HS mode disable configuration 720 is also shown, where a wakeup interrupt signal 722 from the device 706 reaches the host application 708 after the HS_DISABLE command 709 is sent to the host driver 702. The application 708 ignores this wakeup interrupt from the device firmware 704, i.e., any waking up interrupt signal 722 received after a command signal to disable the HS mode should be ignored.
As described, the various techniques described above may be implemented in hardware, firmware, software, or a combination of hardware, firmware, and/or software. When implemented in software, the software may be stored in any computer readable memory such as on a magnetic disk, an optical disk, or other storage medium, in a RAM or ROM or flash memory of a computer, processor, integrated circuit, hard disk drive, optical disk drive, tape drive, etc. Likewise, the software may be delivered to a user or a system via any known or desired delivery method including, for example, on a computer readable disk or other transportable computer storage mechanism or via communication media. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, infrared and other wireless media. Thus, the software may be delivered to a user or a system via a communication channel such as a telephone line, a DSL line, a cable television line, a wireless communication channel, the Internet, etc. (which are viewed as being the same as or interchangeable with providing such software via a transportable storage medium). When implemented in hardware, the hardware may comprise one or more of discrete components, an integrated circuit, an application-specific integrated circuit (ASIC), etc.
While the present invention has been described with reference to specific examples, which are intended to be illustrative only and not to be limiting of the invention, it will be apparent to those of ordinary skill in the art that changes, additions or deletions in addition to those explicitly described above may be made to the disclosed embodiments without departing from the spirit and scope of the invention.

## Claims

1. A method implemented in a wireless device assembly, the wireless device assembly configured to communicate wirelessly with one or more other devices, the method comprising:
receiving, at the wireless device assembly, a first signal from a host assembly, wherein the host assembly is communicatively coupled to the wireless device assembly (i) via a first interface and (ii) via a second interface, wherein the first signal indicates a request for the wireless device assembly to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly can initiate communication with the host assembly via the first interface only after receiving a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation;
in response to the wireless device assembly receiving the first signal, transmitting, via the first interface, a third signal from the wireless device assembly to the host assembly, wherein the third signal indicates entry of the wireless device assembly into the host sleep mode of operation;
subsequent to the wireless device assembly transmitting the third signal to the host assembly via the first interface, having the wireless device assembly enter into the host sleep mode of operation;
while the wireless device assembly is operating in the host sleep mode of operation, receiving the second signal from the host assembly;
transmitting, via the first interface, a fourth signal to the host assembly, wherein the fourth signal is responsive to the second signal; and
exiting the host sleep mode of operation in response to receiving a fifth signal from the host assembly, wherein the fifth signal is responsive to the fourth signal.

2. A method according to claim 1, wherein the first interface comprises a secure digital input/output (SDIO) interface.

3. A method according to claim 2, wherein the second interface comprises a general purpose input/output (GPIO) interface.

4. A wireless device assembly configured to communicate wirelessly with one or more other devices, the wireless device assembly comprising:
a first interface to communicate with a host assembly;
a second interface to communicate with the host assembly;
a memory; and
a processor coupled to the memory;
wherein the memory stores instructions, which when executed by a processor, cause the processor to
process a first signal received from the host assembly via the first interface, wherein the first signal indicates a request for the wireless device assembly to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly can initiate communication with the host assembly via the first interface only after receiving a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation,
in response to the first signal, transmit, via the first interface, a third signal to the host assembly, wherein the third signal indicates entry of the wireless device assembly into the host sleep mode of operation,
after transmitting the third signal, cause the wireless device assembly to enter the host sleep mode of operation,
during the host sleep mode of operation, process the second signal received from the host assembly via the second interface,
transmit, via the first interface, a fourth signal to the host assembly, wherein the fourth signal is responsive to the second signal, and
cause the wireless device assembly to exit the host sleep mode of operation in response to receiving a fifth signal from the host assembly, wherein the fifth signal is responsive to the fourth signal.

5. A wireless device assembly according to claim 4, wherein the first interface comprises a secure digital input/output (SDIO) interface.

6. A wireless device assembly according to claim 5, wherein the second interface comprises a general purpose input/output (GPIO) interface.

7. A method implemented in host assembly communicatively coupled to a wireless device assembly (i) via a first interface and (ii) via a second interface, the method comprising:
transmitting, from the host assembly to the wireless device assembly, a first signal, wherein the first signal indicates a request for the wireless device assembly to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly can initiate communication with the host assembly via the first interface only after receiving a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation;
in response to the first signal, receiving, via the first interface, a third signal from the wireless device assembly, wherein the third signal indicates entry of the wireless device assembly into the host sleep mode of operation;
in response to receiving the third signal, blocking access by the wireless device assembly to a bus of the host assembly;
during the host sleep mode of operation, transmitting, via the second interface, the second signal to the wireless device assembly;
receiving, via the first interface, a fourth signal from the wireless device assembly wherein the fourth signal is responsive to the second signal; and
after receiving the fourth signal, allowing access by the wireless device assembly to the bus of the host assembly.

8. A host assembly, comprising:
a first interface to communicate with a wireless device assembly;
a second interface to communicate with the wireless device assembly;
a bus coupled to the first interface;
a memory; and
a processor coupled to the memory;
wherein the memory stores instructions, which when executed by a processor, cause the processor to
transmit a first signal to the wireless device assembly, wherein the first signal indicates a request to enter a host sleep mode of operation, wherein while the wireless device assembly is in the host sleep mode of operation, the wireless device assembly can initiate communication with the host assembly via the first interface only after receiving a second signal via the second interface, wherein the second signal indicates a request to exit the host sleep mode of operation,
process a third signal received, via the first interface, from the wireless device assembly, wherein the third signal is responsive to the first signal and indicates entry of the wireless device assembly into the host sleep mode of operation,
in response to receiving the third signal, block access by the wireless device assembly to the bus,
during the mode of operation, transmit the second signal to the wireless device assembly via the second interface,
process a fourth signal received from the wireless device assembly via the first interface, wherein the fourth signal is responsive to the second signal, and
after receiving the fourth signal, allow access by the wireless device assembly to the bus.