US 7711868 B2
An auxiliary computing device wakes an associated main computer system to obtain data as needed, on-demand and/or in anticipation of demand. The wakeup operation is ordinarily temporary to fetch data, whereby only a small amount of power is consumed by the main computer system. In one implementation, a control channel between the auxiliary device and the main computer system is used to signal a wakeup. A main data channel is used to obtain the data, whereby the auxiliary device has access to a larger amount of data than it can cache. Moreover, the components of the main computer system may be leveraged, such as to use the main computer system's digital rights management mechanisms. Additional data may be intelligently requested by the auxiliary device while the main computer system is powered up, e.g., to buffer media, and/or request a synchronization of calendar data, email data, and so forth.
1. In a computing environment having a main computer system and an auxiliary device communicatively coupled to the computer system, a method for waking the main computer system, the method comprising:
the auxiliary device maintaining a data cache, the data cache having been transferred from the main computer and stored within the auxiliary device;
after having transferred the data cache to the auxiliary device, the main computer entering a sleep state;
processing data from the data cache for output via the auxiliary device;
the auxiliary device performing auxiliary functionality while the main computer system is in the sleep state;
detecting a need for other data at the auxiliary device, the other data being stored within or accessible by the main computer system;
the auxiliary device determining that the other data is not contained within the stored data cache;
the auxiliary device waking the main computer system from the sleep state into a state in which the main computer system is capable of accessing and communicating the other data; and
the auxiliary device receiving the other data from the main computer system.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
11. The method of
12. At least one computer-readable storage medium having computer-executable instructions which when executed perform the method of
The invention relates generally to computer systems, and more particularly to an improved system and method for communicating information between computing devices.
U.S. patent application Ser. Nos. 10/429,930 and 10/429,932 are generally directed towards the concept of computer systems having auxiliary processing and auxiliary mechanisms that provide some auxiliary computing functionality. For example, a small LCD on the lid or side of a laptop computer can provide its owner with useful information, such as a meeting location and time, even when the main computer display is not easily visible, such as when a laptop computer's lid is closed and/or the main computer is powered down. Controls such as buttons may be provided to allow the user to interact with the auxiliary device to view different types of data, such as to view additional appointments among calendar data, read email messages, read directions, play media, and so forth.
Somewhat similar to an auxiliary LCD screen built into a mobile host computer, a mobile telephone, a music playing device, a pocket-sized personal computer, a personal digital assistant and so forth can serve as an auxiliary device to a main computer when coupled to it physically and/or via a wireless (e.g., Bluetooth or infrared) link, as long as the device is programmed to allow its display and/or other functionality to be used with data originating at the main computer system. In general, any device with I/O capabilities that can interface in virtually any way with a computer system can potentially serve as an auxiliary computing device.
One significant advantage to having an auxiliary device for a main computer system is that some information may be made available even while the main computer is fully turned off or is within one of various sleep states, (e.g., possibly those sleep states standardized by the ACPI, or Advanced Configuration and Power Interface, specification). To understand why this is advantageous, consider that when the main computer is operating, a significant amount of power is consumed. Power consumption is a significant issue when dealing with mobile personal computers such as laptops and tablet-based computing devices, because users desire long battery life between recharges. In general, the longer the PC is in a fully-powered state (e.g., corresponding to S0 in ACPI), the shorter the battery life. An auxiliary device conserves power by allowing the user to leave the main computer off when accessing certain types of information. Other benefits of auxiliary displays include rapid access to information, e.g., a laptop does not have to have its lid opened to present a user with information, exit a sleep state, spin up a disk and so forth.
However, an auxiliary device associated with a main computer that is not fully-powered is limited to operating with data cached from the last time the main computer system was on and/or any data obtained independent of the main computer system. As a result, the cached data may be stale, and/or the cached data may be insufficient for some task the user wants to perform, such as because of limited memory on the auxiliary device. What is needed is a way for an auxiliary device to access data from the main computer system, while doing so in a manner that conserves the power of the main computer system.
Briefly, the present invention provides a system and method for an auxiliary computing device to wake an associated main computer system to obtain data as needed. The need for data at the auxiliary device may be on-demand and/or in anticipation of demand. The waking of the main computer system is ordinarily temporary, whereby only a relatively small amount of power is consumed by the main computer system, e.g., an amount generally corresponding to a duty cycle of waking the main computer system to some power state that is sufficient to obtain the data.
In one implementation, signal data over a control channel between the auxiliary device and the main computer system may be used to wake the main computer system when the auxiliary device has a need for data. When the main computer system is awakened to a power state that is sufficient to obtain and send the data, a main data channel is used to request and receive the data. The main computer system then returns to a lower-power sleep state, whether by its own mechanism or as instructed by the auxiliary device. By automating the process of waking the main computer system to fetch relevant data and restoring the main computer system back into a lower power state, the auxiliary device can effectively have current data as well as have access to a much larger amount of data than the auxiliary device can locally cache.
Moreover, the complete power of the main computer system's operating system and/or application programs may be leveraged, such as to use the main computer system's digital rights management mechanisms to access protected media data. Thus, the main computer system is used to obtain the data, leveraging rather than bypassing the powerful main computer system including the operating system, programs and other components as appropriate.
In addition to fetching data that is needed, additional data may be intelligently requested by the auxiliary device while the main computer system is powered up. For example, while playing audio, the auxiliary device may wake the main computer system to receive a next set of audio tracks. At the same time, the auxiliary device may request calendar data, email data, and so forth, in a further intelligent pre-fetching operation, even though this data was not specifically needed. Such additional data already may have been scheduled for synchronization; if so, obtaining it in conjunction with a need-based demand for other data can reset the next scheduled time, thereby further reducing power consumption.
Other advantages will become apparent from the following detailed description when taken in conjunction with the drawings, in which:
Exemplary Operating Environment
The personal computer system 120 included a processing unit 121, a system memory 122, and a system bus 123 that couples various system components including the system memory to the processing unit 121. The system bus 123 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read-only memory (ROM) 124 and random access memory (RAM) 125. A basic input/output system 126 (BIOS), containing the basic routines that help to transfer information between elements within the personal computer 120, such as during start-up, is stored in ROM 124. The personal computer 120 may further include a hard disk drive 127 for reading from and writing to a hard disk, not shown, a magnetic disk drive 128 for reading from or writing to a removable magnetic disk 129, and an optical disk drive 130 for reading from or writing to a removable optical disk 131 such as a CD-ROM or other optical media. The hard disk drive 127, magnetic disk drive 128, and optical disk drive 130 are connected to the system bus 123 by a hard disk drive interface 132, a magnetic disk drive interface 133, and an optical drive interface 134, respectively. The drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules and other data for the personal computer 120. Although the exemplary computer system described herein employs a hard disk, a removable magnetic disk 129 and a removable optical disk 131, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read-only memories (ROMs) and the like may also be used in the exemplary computer system.
A number of program modules may be stored on the hard disk, magnetic disk 129, optical disk 131, ROM 124 or RAM 125, including an operating system 135 (such as Windows® XP), one or more application programs 136 (such as Microsoft® Outlook), other program modules 137 and program data 138. A user may enter commands and information into the personal computer 120 through input devices such as a keyboard 140 and pointing device 142. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner or the like. These and other input devices are often connected to the processing unit 121 through a serial port interface 146 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or universal serial bus (USB). A monitor 147 or other type of display device is also connected to the system bus 123 via an interface, such as a video adapter 148. In addition to the monitor 147, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. An auxiliary display/device 200 is an additional output device, and may, for example, be connected to the system bus 123 via an auxiliary display interface 155.
An auxiliary display may also connect to a main computing device 120 through a serial interface or by other interfaces, such as a parallel port, game port, infrared or wireless connection, universal serial bus (USB) or other peripheral device connection. An input device 201 in
The personal computer 120 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 149. The remote computer 149 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer 120, although only a memory storage device 150 has been illustrated in
When used in a LAN networking environment, the personal computer 120 is connected to the local network 151 through a network interface or adapter 153. When used in a WAN networking environment, the personal computer 120 typically includes a modem 154 or other means for establishing communications over the wide area network 152, such as the Internet. The modem 154, which may be internal or external, is connected to the system bus 123 via the serial port interface 146. In a networked environment, program modules depicted relative to the personal computer 120, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
It should be noted that the computer system need not be fully operational for an auxiliary device to work in accordance with the present invention. Indeed, an auxiliary device may still work when the computer is powered down, at least to a default extent or to an extent configured by a user, such as when the computer system is in a sleep state or a hibernate mode, and/or when the user has not yet logged on or is otherwise locked out of the system via security mechanisms.
The auxiliary display/device 200 may supplement the main display and may also serve as a surrogate display when the main display is shut down or otherwise not operational (e.g., disconnected), to give the user some information. For example, information such as how to power up the main display might be helpful, as would a room number and/or directions to a meeting on an auxiliary display device connected to a mobile computer that the user can view when the main display is off and/or not easily visible (e.g., the lid of a laptop is closed). The auxiliary device may play audio and/or video, show images, show calendar information, show emails and so forth.
To enable and control communication in these powered-down modes, firmware may exist, stored in non-volatile memory, which when loaded and operated on by a secondary processor, enables the auxiliary display, along with other auxiliary components to be used, as long as some power is available. Note that as used herein, the terms “firmware” and “device hardware” are essentially equivalent, and can be generally considered as representing the auxiliary memory, the code therein and/or the auxiliary processor on which it runs.
As should be apparent from
An auxiliary device may provide functionality even without a screen, or when its screen is powered down. For example, an auxiliary device may play audio, collect data (e.g., for later transfer back to the main computer system), perform calculations and so forth. Also, the display may comprise one or more LEDs or the like rather than a full screen. Thus, although many benefits and advantages arise from having an auxiliary display screen, and thus an auxiliary device may be referred to herein as an auxiliary display, a display is not required. In general, an auxiliary display, as referred to herein, may be composed of essentially anything that can be sensed, including any visual, audible, and/or tactile representations.
Wake to Pre-Fetch Data for an Auxiliary Device
As will be understood, the present invention provides an auxiliary device 200 for a user to simply and rapidly interact with auxiliary information. In keeping with the present invention, the main computer system (e.g., the computer system 120 of
In accordance with various aspects of the present invention, when additional data is needed by the auxiliary device 200, the auxiliary device 200 wakes the main computer system 120 and obtains the additional data, after which the main computer system 120 typically returns to a sleep state. Although visible data, audio program data and notifications will be used herein to illustrate the auxiliary presentation of information, it should be understood that the present invention is not limited to outputting any particular types of data. It will also be appreciated that the auxiliary display 200 may be operative using any number of known types of displays such as a set of notification lights, a 2-line alphanumeric display, a monochrome display, or a color display. Note that as used herein, for simplicity “auxiliary display device” will generally refer to the auxiliary display screen and/or the actuators associated with that screen as well as any other hardware, firmware or software in the device, however it should be understood that the screen and actuators may be independent mechanisms, and/or that there may not be actuators requiring physical contact to input data. Further, note that the auxiliary display device 200 may be considered as possibly containing indicators (e.g., individual LEDs) instead of or in addition to a pixel-type display screen.
Further, as will be understood, there are many types of devices that can serve as an auxiliary display device, including those that do not necessarily have displays but can provide some output such as a sound or light. Although a number of examples are used herein, including displays on laptop lids, mobile phones, pocket-sized personal computers, digital image-based picture frames, kitchen displays, televisions, media players, clocks including alarm clocks, watches and so forth, the present invention is not limited to any of these examples, but rather anticipates the use of any device capable of outputting sensory information, even when referred to as an auxiliary “display.” For example, other types of devices include auxiliary devices embedded within or using the main display of a consumer electronics device, (such as a refrigerator, home theater receiver, DVD player, and so forth), wall displays, automotive, transportation or other vehicular units (e.g., using displays already in a car/train/plane as an auxiliary display), keyboards or other input devices of the main computer system, PDAs (including non-cellular telephone PDAs), and the like.
Similarly, the present invention is not limited to any particular mechanism for coupling the auxiliary display to another computer system, and thus is not limited to the wired or wireless examples used herein. The connection may be relatively close or relatively distant, essentially anywhere, such as a virtual private connection over the Internet.
In keeping with an aspect of the present invention, the use of the API set 304 exposes only an “auxiliary display system” to the clients; there is no direct access to individual devices. As a result, for an independent software vendor, after registering a program component as a client application 306 (via the API set 304), content may be sent to any auxiliary device using another call to the same API set 304, regardless of the device's actual type and capabilities. Although the user experience may differ, the program need not adapt to the auxiliary device that is present. Note that while an application program can obtain capability information about the auxiliary device, and may choose to act differently based on the capabilities, the application program need not do so in order to use the device. This is because the architecture handles further communications, freeing the application program from complex tasks including tailoring data to any particular device.
The API layer 304 is written on a portable device API set 310, which communicates with the device's driver process via user-mode driver framework 312. The portable device API set 310 maps the auxiliary display into a category of portable devices and it allows enumeration of the device's capabilities. This is encapsulated within the user-mode driver, however, and not necessarily exposed to the client application 306.
In general, the client application 306 sends notifications directly to the auxiliary device 300 (and/or device 301). The auxiliary device is capable of displaying notifications, as well as generating its own notifications based on the data provided from the main computer system. Other (optional) components shown in
In general, each auxiliary device vendor provides a corresponding auxiliary device driver 324, although if the device is built in a certain way, the device driver may be supplied by the provider of the auxiliary display platform. More particularly, as described below, certain types of auxiliary devices are considered “enhanced” devices because they are configured with certain firmware that among other things is generally compatible with any information that can be received via the API set 304. For such devices, the device driver 325 may be generic, (and thus may be provided by the auxiliary display platform provider), generally operating to perform some straightforward tasks, such as to convert the API-received information to a proprietary format understood by the auxiliary device firmware. For other auxiliary devices, referred to herein as “basic” devices, the driver needs to be compatible with the device's capabilities, and thus the auxiliary device vendor needs to provide a driver customized to that device or class of devices.
In any event, the user mode driver framework provides a device driver interface (DDI) for coupling device drivers (e.g., 324 and 325) to the auxiliary display platform. The drivers then forward (and return) data corresponding to the API-received information to an appropriate hardware interface (transport) for communication to the auxiliary display device. For example, in
Further note that as represented in
As also shown in
In the example implementation represented in
The offline caching manager 372 comprises an assembly, written on top of the TinyCLR 376, which manages the cache of data items stored on the device. This component also performs some memory management, dealing with the fact that system application programs may provide more data than the device can store. If the firmware modifies the data cache, this component tracks that information, and posts events to the application program on the system to let it know either immediately if the main computer system is online, or if not online, when the machine comes back online. The cache manager 372 may be exposed to the driver 360 via an interface.
Above the HAL are drivers 477 1-477 2, although there may be more (or fewer) drivers. Above the drivers, other device software includes the common language runtime (CLR), such as the TinyCLR 376, which comprises a relatively smaller scale implementation of the NET common language runtime environment. Managed code that runs on the common language runtime will run on whatever platform the common language runtime runs on, which is made possible by the HAL (hardware abstraction layer) for that platform, e.g., a HAL for a platform based on an ARM7 chip. Because the majority of the firmware is written in managed code, it is also independent of the type of hardware on which it runs. By controlling a majority of the device firmware and including the HAL and CLR in the architecture, device manufacturers may reuse existing software without any change, which is important to provide a high quality, consistent experience between various types of devices that serve as auxiliary displays.
The application program 402 may be an application program that works with cached data. Certain applications that cannot be written in managed code, such as for performance reasons, can be written in native code such as C or C++ and essentially extend the CLR. For example, high-speed media buffering may not be able to be accomplished fast enough if copied from application program-level buffers through the CLR to lower-level digital signal processing buffers. To avoid such a copying expense, native code in the CLR may fill a single set of buffers. The auxiliary shell program 370 and framework libraries 374 are also shown in
As described herein, content may be thus downloaded to a cache on the auxiliary device, and the auxiliary device itself will then handle the content as desired. Note that this allows for disconnected usage, as well as having multiple applications running on the system provide content, generally with one application being run at a time to access the cached content on the auxiliary display.
In accordance with various aspects of the present invention, to conserve power, the main computer system 120 may be maintained in a reduced-power sleep state, and only awakened as needed to supply an auxiliary device (e.g., the device 301) with data. Note that the auxiliary device 301 may have an independent power source, or may share the same power supply with the main computer system, such as in the scenario of an LCD auxiliary display built into the lid of a laptop computer. Regardless, even if shared, the auxiliary device 301 typically consumes far less power than the main computer system 120 does when entered into a sleep state, e.g., a state in which most of the main computer system's component devices are shut down. The awakening of the main computer system 120 only when needed by the auxiliary device 301 results in significantly less power being consumed than when those component devices are operational.
In one implementation, the auxiliary architecture generally described above with reference to
Via the cached data, the auxiliary device 301 may perform auxiliary computing functionality while the main computer system 120 is in a sleep state. At some later time, the auxiliary computer system 301 may need more information than is currently cached. A typical example is when the auxiliary device is processing relatively large amounts of data rapidly, such as when playing media from a relatively limited-size cache. However other typical examples include handling a request for even small amounts of data that are not cached on the auxiliary device for whatever reason, such as updated calendar data, the next email message, and so forth.
In accordance with the present invention, when such a data need occurs, the auxiliary device 301 wakes the main computer system 120. To this end, and as generally represented in
Note that the request for data to refill (some or all of) the cache may not be based on an actual need, but rather an anticipated need, and that the request may be for more data than is actually needed. For example, a stream of audio data may be requested well in advance of the time that the audio data is actually going to be processed into output audio, that is, to buffer the data in advance to provide uninterrupted audio. Similarly, if a user requests calendar data or an email message, other data close to the requested data (e.g., calendar data around the requested date, emails received around the same time, and so forth) may be requested in anticipation of likely demand. A similar timestamp is not the only criterion for anticipating demand, e.g., the user may be filtering email messages or calendar by some other criterion such as the sender identity, and intelligent pre-fetching can obtain those sender's emails. Those skilled in the art will recognize that any caching algorithm/mechanism may be used, and the present invention is not limited to any particular way or ways to cache data, including any exemplified herein.
In one implementation generally represented in
By way of example, when a close physical connection exists, an SMBUS (already used for wake events such as opening the laptop's lid) may be coupled to the auxiliary device 501 as the control channel via which the auxiliary device in general may control the sleep state of the main computer system 120. An advantage to using SMBUS is that with contemporary main computing architectures based on ACPI, the wake mechanism 552 is already built into the main computer system 120, by which the sleep state may be controlled, including to place the main computer system 120 into a sleep state in which most of the components such as a network card, modem, USB controller and so forth are powered down. A disadvantage to this solution is that some physical connection to SMBUS is required, which does not work well with many types of auxiliary display devices that are designed to couple and decouple from the computer system for remote usage, such as mobile telephones, remote audio players and digital picture frames; this is the situation whether coupled by wired protocols (e.g., USB devices and so forth) or wireless protocols (e.g., Bluetooth, AM/FM, 802.11 or 802.16, infrared and so forth).
For such separable devices, another way to communicate wakeup information to the main computer system's wake mechanism is provided. This may be wireless or wired, and/or over the same connection that serves as the main data channel. In other words, the control channel to the wake mechanism may be separate from the data channel, but may be over the same type of connection.
For example, a USB connection, Bluetooth connection, telephone connection, infrared signal, relevant network activity and so forth may be used to wake the main computer system, independent of whether the wake connection (control channel) was also the same connection used as the main data channel used to communicate data between the main computer system 120 and the auxiliary device (labeled 601 in this example). Note that if one of these mechanisms is used for the control channel with current ACPI-based architectures, the main computer cannot be put into a sleep state that would turn off the control channel, e.g., the USB controller, Bluetooth radio, network card and/or modem, as appropriate. Notwithstanding, the present invention still saves power in such a scenario, and moreover, is not limited to any contemporary (e.g., ACPI-based) architecture with respect to its sleep states; computing architectures likely will be extended to allow other types of wake mechanisms.
For example, a main computer system architecture may be configured (including by the user) to enter a sleep state in which the wake mechanism was the only component consuming power, yet could be woken by a (e.g., non-SMBUS) signal to in turn wake the entire machine. Note that even though the control channel may not be SMBUS, the wake mechanism may receive such wake-related signals and then use a connection to SMBUS to wake the machine. Further, an auxiliary device may wake its main computer system even if not previously coupled to it when the main computer system went to sleep, as long as the control channel is operational and the wake mechanism is on (or can be powered such as by proximity sensing). A self-powered mechanism such as a radio that wakes up or remains in a very low power state (such as a low-powered Bluetooth stack waiting to detect an auxiliary device), may be used to wake the machine, as may having a low-powered controller that detects a physical coupling of an auxiliary device to the main computer system.
In any event, when the main computer system is awake, the needed data is communicated over the data channel to the auxiliary device, (or vice-versa). For data requested by the auxiliary device, as much data as needed may be cached, plus possibly more when smart caching is used to anticipate need.
Another aspect of the present invention is that the auxiliary device may leverage the full capabilities of the main computer system when awake. For example, the auxiliary device (e.g., 301) need not have its own hard drive to control relatively large amounts of data, but rather may use the main computer system's hard drive as needed. Further, the auxiliary display 301 may use the full digital rights management components of the main computer system 120. As can be readily appreciated, when coupled to the main computer system 102, a powerful media player thus may be built into an auxiliary device 301 without the expense of a hard drive and digital rights management components, which are a significant expense in such portable devices today. At the same time, as long as the auxiliary device 301 has a relatively reasonable amount of buffer space, the main computer system 120 may be mostly asleep, providing a media player with a relatively long-life power source. Fetching calculations or operations in advance are helpful. By way of example, consider a list of songs, even if randomized beforehand. If the list is known in advance and the auxiliary device can handle a plurality of tracks, there is no need to fetch per track, instead fetching as much as possible to minimize the amount of waking needed (unless the user interacts and alters the ordering).
As can be readily appreciated, the amount of power saved corresponds to the duty cycle of waking the main computer system 120; i.e., the less percentage of time the CPU is awake, the disk is spinning and so forth, the more power that is saved. Thus, the main computer system 120 may be configured to maintain some power to its main memory or other caches when in some sleep state, or use some amount of non-volatile storage such as flash memory, so as to spin up the disk drive less frequently, yet still provide the needed data on demand. The less hardware that is powered, the more power that is saved as well, e.g., some minimum to retrieve the needed data that avoids powering the display, network cards, LEDs and/or the like whenever possible is generally desirable.
In accordance with another aspect of the present invention, not only may data related to a request be fetched in response to actual or anticipated demand, but unrelated data that is deemed likely to be needed may be fetched at a time that the main computer system has been awakened for the needed data. Consider an example in which an auxiliary device 301 playing audio has awoken the main computer system 120 to fetch some amount of data, and there is still room in the cache, (which may be by design). Other data unrelated to the audio data requested may also be fetched at such a time, since the main computer system 120 is operational to some extent to provide data. Note that the data requests may be ordered, such as to fetch what is needed first, then get extra data if otherwise allowed or possible, e.g., within a time window, if memory is available, if the network is available to the computer system 120, and so forth.
By way of example,
When the data has been retrieved, the auxiliary device may use the control channel to put the main computer system back into a sleep state. Since the computer system 120 is awake and communicating with the auxiliary device over the data channel, it can communicate data to the device so that sleep state data is known to the auxiliary device. For example, the main computer system 120 would not be put back into a sleep state if the user has now begun using the main computer system 120, which may be a common occurrence if the user notices the device is awake such as by hearing the disk drive spin up. To this end, the main computer system may sense e.g. the opening of the lid switch, mouse activity, keyboard activity, or touch-screen or electromagnetic digitizer activity (e.g. if a tablet-based PC) in order to provide this information to the auxiliary display device. Also, the main computer system may return to a sleep state on its own. Other, non-SMBUS wake mechanisms may communicate with the main computer system when awake (e.g., via an API call) to obtain such information.
Essentially any suitable mechanism and/or criteria may be used to detect when the data has been retrieved and no more is forthcoming or allowed, whereby the main computer system may be returned to a sleep state. A common occurrence will be when each application program signals that it is done providing its requested data. For other situations, a timeout mechanism may be used to handle programs and the like that do not properly respond, a memory full condition may disallow further data, and other components such as a heat sensor, low battery life detector and so forth may be used to control the power state of the main computer system. Signal strength data may be used to cancel a request, e.g., do not wait for any network data if there no network connection.
Note that application programs, including those that will provide data beyond what is currently needed, may register resource-related metadata corresponding to certain criteria that need to be met before waking the main computer system to request their types of data. For example, if a program needs a certain resource (e.g., network connectivity, a fingerprint reader and so forth) and that resource's unavailability state is known to the auxiliary device, the device can decide not to request that program's data, which may result in not waking the main computer system because no data is needed. Further, note that regardless of any application program's registration of needed resources, the auxiliary device can independently choose not to wake the main computer system based on some criterion related to the main computer's system's state and/or even the state of the auxiliary device, such as the battery level of either, or some other state such as the presence or absence of wireless networking. Thus, although the device may have a need and/or opportunity for more data, the data need not be requested until some threshold likelihood with respect to the ability to get the data is achieved and/or it otherwise is logical to do so. Such registration of applications for resources may range from very limited details to full details.
Further, a resource state change can cause a wake to occur. For example, if a previous data synchronization failed because of no network connectivity (e.g., no wi-fi signal), whether failed by the application program running on the main computer system or because the synchronization was not even attempted by the auxiliary device, when connectivity is detected, the presence of the signal may be used as a basis for waking the main computer system.
As can be seen from the foregoing, the present invention provides for an auxiliary device to wake a main computer system to obtain data based on actual or anticipated need, and then cycle the main computing device back to a sleep state. This conserves power on the main computing device, while letting the auxiliary device leverage the full capabilities of the main computer system as needed. The present invention thus provides numerous benefits and advantages needed in contemporary computing.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.