PATENT DOCUMENT

Publication Number: US-9282516-B2
Application Number: US-201414321703-A
Country: US
Kind Code: B2

Title: Cooperative power savings among mobile computing devices

Abstract:
Disclosed herein is a technique for enabling mobile computing devices to share observation information using low-energy communication protocols. This observation information can include network connectivity information and GPS location information that is either known to or being sought out by a mobile computing device. When observation information (if any) maintained by a mobile computing device does not satisfy a threshold level of confidence, the mobile computing device can query neighboring mobile computing devices for corresponding observation information that satisfies the threshold level of confidence. Conversely, the mobile computing device can be configured to advertise observation information to the neighboring mobile computing devices when the observation information satisfies the threshold level of confidence. In this manner, the mobile computing devices can collaboratively share information in an attempt to reduce the significant workload that is otherwise required when working in isolation to establish network connectivity and determine GPS location information.

Claims:
What is claimed is: 
     
       1. A method for collaborating with a plurality of nearby computing devices to identify an approach for establishing a type of connectivity, comprising:
 at a mobile computing device, and in response to receiving a request to establish the type of connectivity:
 transmitting, to the plurality of nearby computing devices, a request for observation information associated with the type of connectivity; 
 receiving, from at least one nearby computing device of the plurality of nearby computing devices, a response that includes observation information associated with the type of connectivity, wherein the observation information comprises a confidence level and parameters that can be utilized to establish the type of connectivity; and 
 based on a determination that the confidence level satisfies a threshold: 
 
 establishing the type of connectivity based on the parameters. 
 
     
     
       2. The method of  claim 1 , wherein, when two or more responses are received that include observation information associated with the type of connectivity, the method further comprises:
 comparing the observation information included in each response of the two or more responses to identify an optimal manner by which to establish the type of connectivity. 
 
     
     
       3. The method of  claim 1 , wherein the request for observation information is transmitted when observation information associated with the type of connectivity is not possessed by the mobile computing device. 
     
     
       4. The method of  claim 1 , wherein the response is passively received at the mobile computing device independently from the transmitted request. 
     
     
       5. The method of  claim 1 , wherein each of the request and the response is transmitted using a low-energy communication protocol. 
     
     
       6. The method of  claim 5 , wherein the low-energy communication protocol is implemented using Bluetooth Low Energy (BTLE) or Near Field Communication (NFC). 
     
     
       7. The method of  claim 1 , wherein the type of connectivity comprises a WIFI connection, a cellular network registration connection, a cellular uplink transmission, or a Global Positioning System (GPS) connection. 
     
     
       8. The method of  claim 7 , wherein, when the type of connectivity comprises a Global Positioning System connection, the approach for establishing the type of connectivity involves utilizing the observation information to identify a GPS location in lieu of attempting to obtain a GPS satellite fix. 
     
     
       9. The method of  claim 1 , wherein the at least one nearby computing device provides the response when an activity level at the at least one nearby computing device satisfies a threshold level of activity. 
     
     
       10. The method of  claim 1 , wherein the at least one nearby computing device receives observation information from other nearby computing devices over at least one hop. 
     
     
       11. The method of  claim 1 , wherein the at least one nearby computing device provides the response upon identifying that the at least one nearby computing device satisfies a particular software capability threshold or hardware capability threshold, and periodically provides subsequent responses until a particular exit event occurs. 
     
     
       12. The method of  claim 1 , further comprising, subsequent to carrying out the approach for establishing the type of connectivity:
 storing the observation information; and 
 periodically advertising the observation information to the plurality of nearby computing devices. 
 
     
     
       13. A non-transitory computer readable storage medium configured to store instructions that, when executed by a processor included in a mobile computing device, cause the mobile computing device to collaborate with a plurality of nearby computing devices to identify an approach for establishing a type of connectivity, by carrying out steps that include:
 in response to receiving a request to establish the type of connectivity:
 identifying that observation information associated with the type of connectivity is not known to the mobile computing device; 
 listening for at least one advertisement transmitted by a nearby computing device, wherein the at least one advertisement comprises observation information that is associated with the type of connectivity, and includes a confidence level and parameters that can be utilized to establish the type of connectivity; and 
 upon determining that the confidence level satisfies a threshold:
 establishing the type of connectivity based on the parameters. 
 
 
 
     
     
       14. The non-transitory computer readable storage medium of  claim 13 , wherein the request is generated by an application or a kernel executing on the mobile computing device. 
     
     
       15. The non-transitory computer readable storage medium of  claim 13 , wherein the at least one advertisement is transmitted using a low-energy communication protocol. 
     
     
       16. The non-transitory computer readable storage medium of  claim 15 , wherein the low-energy communication protocol is implemented using Bluetooth Low Energy (BTLE) or Near Field Communication (NFC). 
     
     
       17. The non-transitory computer readable storage medium of  claim 13 , wherein the type of connectivity comprises a WIFI connection, a cellular network registration connection, a cellular uplink transmission, or a Global Positioning System connection. 
     
     
       18. The non-transitory computer readable storage medium of  claim 13 , further comprising, subsequent to carrying out the approach for establishing the type of connectivity:
 storing the observation information; and 
 periodically advertising the observation information to other nearby computing devices. 
 
     
     
       19. A mobile device, comprising:
 a processor; 
 at least one low-energy wireless interface; 
 at least one high-energy wireless interface; and 
 a memory configured to store instructions that, when executed by the processor, cause the mobile device to carry out steps that include:
 identifying a request to establish a connection using the at least one high-energy wireless interface; 
 using the at least one low-energy wireless interface:
 querying nearby mobile computing devices for observation information that is associated with the connection, and 
 receiving, from at least one of the nearby mobile computing devices, observation information that is associated with the connection, wherein the observation information includes a confidence level and parameters that can be utilized to establish the connection; and 
 
 upon determining that the confidence level satisfies a threshold, using the at least one high-energy wireless interface to establish the connection based on the parameters. 
 
 
     
     
       20. The mobile device of  claim 19 , wherein the at least one low-energy wireless interface is configured to implement Bluetooth Low Energy (BTLE) or Near Field Communication (NFC). 
     
     
       21. The mobile device of  claim 19 , wherein the connection comprises a WIFI connection, a cellular network.

Description:
FIELD 
     The described embodiments set forth a technique for implementing cooperative power savings among mobile computing devices. 
     BACKGROUND 
     Recent years have shown a proliferation in the number of users who carry mobile computing devices (e.g., smartphones and tablets). Typically, users migrate to various locations throughout the day, and, as a result, clusters of handled computing devices tend to continually form and disintegrate. In general, the location of each cluster is static in nature—e.g., a cluster of mobile computing devices will typically exist during business hours for a coffee shop that provides WIFI. This cluster will grow and shrink in size throughout the day so long as patrons continue to visit the coffee shop. Notably, in more recent times, the locations of clusters have also become dynamic in nature, e.g., a cluster of mobile computing devices can form during a commercial airline flight that provides WIFI. In any event, a cluster represents a localized group of mobile computing devices that are continually attempting to achieve a common goal of providing useful features through different types of connectivity (e.g., WIFI, Global Positioning System (GPS), and cellular network connectivity). 
     Presently, mobile computing devices work in isolation to establish the aforementioned types of connectivity. Consider, for example, a user who visits an airport whose main WIFI network is not presently known to the user&#39;s mobile computing device. In this example, the mobile computing device will individually carry out a WIFI scan to identify all WIFI networks in range. Notably, these WIFI scans consume a considerable amount of energy and time, which is wasteful considering the WIFI scans often involve negotiating with WIFI networks that are password-protected and/or will not provide reliable connectivity. This not only degrades battery performance, but also imposes the user with the tedious task of experimenting with different WIFI networks in attempt to achieve connectivity. This is especially unfortunate considering there is likely at least one nearby mobile computing device that has already performed the heavy lifting involved in identifying and connecting to a reliable WIFI network. 
     SUMMARY 
     Representative embodiments set forth herein disclose techniques for enabling mobile computing devices to share “observation information” using low-energy communication protocols (e.g., Bluetooth Low Energy (BTLE)). This observation information can include, for example, network connectivity information and GPS location information that is either known to or being sought out by a mobile computing device. Specifically, when observation information (if any) maintained by a mobile computing device does not satisfy a threshold level of confidence, the mobile computing device can query neighboring mobile computing devices for corresponding observation information that satisfies the threshold level of confidence. Conversely, the mobile computing device can be configured to advertise observation information to the neighboring mobile computing devices when the observation information satisfies the threshold level of confidence. In this manner, the mobile computing devices can collaboratively share information in an attempt to reduce the significant workload that is otherwise required when working in isolation to establish network connectivity and determine GPS location information. 
     One embodiment sets forth a method for collaborating with a plurality of nearby computing devices to identify an approach for establishing a type of connectivity. The method is carried out at a mobile computing device, and includes the steps of, in response to receiving a request to establish the type of connectivity: transmitting, to the plurality of nearby computing devices, a request for observation information associated with the type of connectivity, receiving, from at least one nearby computing device of the plurality of nearby computing devices, a response that includes observation information associated with the type of connectivity, and carrying out the approach for establishing the type of connectivity based on the observation information. According to a first example scenario, the nearby computing devices can represent auxiliary devices (e.g., a tablet computer and a laptop) that complement the mobile device (e.g., a smart phone), where the mobile device and the auxiliary devices belong to a particular individual or group of individuals (e.g., a family). According to a second example scenario, at least one computing device can represent a computing device (e.g., a laptop) that belongs to a first user who is in proximity to a second user who is operating the mobile device. 
     Another embodiment sets forth a non-transitory computer readable storage medium configured to store instructions that, when executed by a processor included in a mobile computing device, cause the mobile computing device to collaborate with a plurality of nearby computing devices to identify an approach for establishing a type of connectivity. In particular, the mobile device carries out steps that include, in response to receiving a request to establish the type of connectivity: identifying that observation information associated with the type of connectivity is not known to the mobile computing device, listening for at least one advertisement transmitted by a nearby computing device, wherein the at least one advertisement comprises observation information that is associated with the type of connectivity, and, upon determining that the received observation information satisfies a threshold level of confidence: carrying out the approach for establishing the type of connectivity based on the observation information. 
     Yet another embodiment sets forth a mobile device that comprises a processor, at least one low-energy wireless interface, and at least one high-energy wireless interface. The mobile device also comprises a memory configured to store instructions that, when executed by the processor, cause the mobile device to carry out steps that include identifying a request to establish a connection using the at least one high-energy wireless interface. In response, the mobile computing device uses the at least one low-energy wireless interface to query nearby mobile computing devices for observation information that is associated with the connection, and receive, from at least one of the nearby mobile computing devices, observation information that is associated with the connection. Finally, the mobile computing device uses the at least one high-energy wireless interface to establish the connection based on the received observation information. 
     Other aspects and advantages of the embodiments described herein will become apparent from the following detailed description taken in conjunction with the accompanying drawings which illustrate, by way of example, the principles of the described embodiments. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The included drawings are for illustrative purposes and serve only to provide examples of possible structures and arrangements for the disclosed inventive apparatuses and methods for providing wireless computing devices. These drawings in no way limit any changes in form and detail that may be made to the embodiments by one skilled in the art without departing from the spirit and scope of the embodiments. The embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements. 
         FIG. 1  illustrates a block diagram of different components of a system that is configured to implement the various techniques described herein, according to some embodiments. 
         FIG. 2  illustrates a block diagram of a more detailed view of particular components of a computing device of  FIG. 1 , according to some embodiments. 
         FIG. 3  illustrates a method for communicating WIFI observation information between computing devices, according to one embodiment. 
         FIG. 4  illustrates a method for communicating cellular observation information between computing devices, according to one embodiment. 
         FIG. 5  illustrates a method for communicating uplink observation information between computing devices, according to one embodiment. 
         FIG. 6  illustrates a method for communicating GPS observation information between computing devices, according to one embodiment. 
         FIG. 7  illustrates a detailed view of a computing device that can be used to implement the various components described herein, according to some embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     Representative applications of apparatuses and methods according to the presently described embodiments are provided in this section. These examples are being provided solely to add context and aid in the understanding of the described embodiments. It will thus be apparent to one skilled in the art that the presently described embodiments can be practiced without some or all of these specific details. In other instances, well known process steps have not been described in detail in order to avoid unnecessarily obscuring the presently described embodiments. Other applications are possible, such that the following examples should not be taken as limiting. 
     A typical mobile computing device—such as a smartphone or a tablet—includes a variety of hardware components that enable the mobile computing device to provide an abundance of features that are beneficial to its user. The hardware components can include, for example, wireless hardware that enables the mobile computing device to interface with WIFI access points, cellular base stations (i.e., Radio Access Towers (RATs)), Bluetooth-enabled computing devices, and NFC-enabled computing devices. The hardware components can also include GPS hardware that enables the mobile computing device to interface with GPS satellites to calculate and provide a current GPS location to the user. Notably, the portable nature of the mobile computing device presents challenges with respect to providing reliable connectivity and GPS location accuracy without draining battery life. In particular, as the mobile computing device migrates between different locations, it must continually adjust to effectively interact with the different network conditions that are present. Unfortunately, and as described in greater detail below, this continual adjustment typically involves carrying out a variety of energy-consuming processes that degrade the overall battery performance of the mobile computing device. 
     One example of an energy-consuming operation involves a mobile computing device periodically performing a scan for WIFI networks that are available. These scans occur often since cellular network coverage/reliability continues to remain spotty at best—at least in the global aspect—and the effective approach for curing this deficiency continues to involve communicating instead through WIFI networks, if any, that are available. In general, it can also be preferable, even when cellular networks are available, to scan and connect to WIFI networks so that data consumption over cellular networks can be reduced, which can provide cost savings to users. Unfortunately, these WIFI scans can result in a substantial deterioration in the overall battery performance of mobile computing device. Moreover, these WIFI scans often yield a list of WIFI networks to which the mobile computing device has not previously connected. Consequently, the mobile computing device must undergo a trial and error process of connecting to different available WIFI networks, which can waste time and energy. For example, WIFI networks often can often be associated with a favorable received signal strength indication (RSSI) despite being unable to provide reliable service to connected devices (e.g., because of backhaul issues). This can often lead to a mobile computing device being tricked into routing data through a WIFI network that provides unfavorable connectivity even when a cellular network that provides favorable connectivity is available. This is unfortunate considering that at least one nearby mobile computing device is likely able to communicate WIFI observation data to the mobile computing device that can assist the mobile computing device in identifying a best approach for achieving connectivity. 
     Accordingly, one embodiment set forth herein involves configuring mobile computing devices to share, using low-energy communication protocols, WIFI observation information with one another in order to enhance the manner in which the mobile computing devices connect to WIFI networks. Specifically, each mobile computing device can be configured to dynamically build and manage WIFI observation information for different environments that are encountered by the mobile computing device. In particular, when a mobile computing device identifies a present environment, the mobile computing device can be configured to identify whether the WIFI observation information for the present environment satisfies a threshold level of confidence. When the mobile computing device determines that the WIFI observation information for the present environment does not satisfy the threshold level of confidence (e.g., a WIFI connection exists but no internet connection can be obtained), the mobile computing device can be configured to transmit, using low-energy communication protocols and to nearby mobile computing devices, a request for corresponding WIFI observation information that satisfies the threshold level of confidence (e.g., a WIFI connection exists and strong internet connection has been obtained). Conversely, when the mobile computing device determines that the WIFI observation information for the present environment does satisfy the threshold level of confidence, the mobile computing device can be configured to transmit, to the nearby mobile computing devices, and advertisement that includes the WIFI observation information. 
     Notably, the foregoing embodiment beneficially enables mobile computing devices with low-confidence WIFI observation information (or none at all) to exploit high-confidence WIFI observation information, if any, possessed by nearby mobile computing devices. This can be particularly useful in situations where a user owns multiple devices that are capable of communicating WIFI observation information between one another. An example scenario can include a user who owns an iPhone™ and an iPad™ by Apple™ where the iPhone™ and the iPad™ are configured to communicate WIFI observation information (as well as the other types of observation information set forth herein) between one another. This can be beneficial for a variety of reasons, especially considering that the iPad™ can be designated as the appropriate device for carrying out energy-intensive tasks like WIFI scanning. As a result, a reduction in the number of WIFI scans can be achieved while simultaneously enabling the mobile computing devices to increase the average connectivity success rate, thereby enhancing the overall user experience in many aspects. 
     Another example of an energy-consuming operation involves the mobile computing device attempting to establish cellular network connectivity when in an Out Of Service (OOS) condition. More specifically, when attempting to obtain cellular network connectivity (by registering with a cellular network), a mobile computing device typically carries out a series of scans in order to analyze network parameters and identify an approach for establishing a connection with at least one RAT that is configured to provide cellular network connectivity. Notably, the somewhat investigational nature of this multi-scan based approach not only renders establishing cellular network connectivity a time-intensive task, but an energy-consuming one as well. This is especially unfortunate considering that clusters of mobile computing devices likely exist within areas where cellular network connectivity is available, and, within each cluster, there likely exists a pattern across the manner in which each mobile computing device establishes and maintains cellular network connectivity. 
     Accordingly, another embodiment set forth herein involves configuring mobile computing devices to share, using low-energy communication protocols, cellular observation information with one another in order to enhance the manner in which the mobile computing devices connect to cellular networks. Specifically, each mobile computing device can be configured to dynamically build and manage cellular observation information for different environments that are encountered by the mobile computing device. The cellular observation information is utilized by the mobile computing device in a manner similar to the WIFI observation information previously described herein. In particular, the mobile computing device is configured to request, from neighboring mobile computing devices and using low-energy communication protocols, high-confidence cellular observation information for a given environment when the mobile computing device possesses corresponding cellular observation information that is low-confidence. Conversely, when the mobile computing device possess high-confidence cellular observation information, the mobile computing device is configured to advertise, to neighboring mobile computing devices, the high-confidence cellular observation information for other mobile computing devices to utilize. In this manner, mobile computing devices that are in an OOS condition—e.g., when being powered-on or deactivating an airplane mode—can interface with neighboring mobile computing devices to potentially identify a more efficient approach for establishing cellular network connectivity. The more efficient approach can potentially include eliminating the need for a mobile device to perform a scan to identify available cellular connectivity when in an OOS condition. This can occur, for example, when high-confidence cellular observation information is available and can be used by the mobile device in lieu of performing the scan, which can provide considerable power savings. 
     Yet another example of an energy-consuming operation involves the mobile computing device attempting to perform an uplink transmission over an established cellular network connection. Typically, when a mobile computing device prepares to perform an uplink transmission, the mobile computing device is configured to reference and implement parameters that are associated with a most recent or a highest-performing uplink transmission that was carried out by the mobile computing device. This approach is flawed in many ways, however, due to the changes that rapidly occur within cellular network environments. For example, uplink conditions may drastically change when the mobile computing device moves from one location to another. Consequently, if a mobile computing device attempts to perform an uplink transmission based on aged uplink transmission parameters, the mobile computing device can, as a consequence, spend time and energy attempting to carry out the uplink transmission in a sub-optimal manner. This is especially unfortunate considering that there likely is a nearby mobile computing device that more recently performed the heavy lifting of identifying an optimal manner in which to carry out an uplink transmission. 
     Accordingly, yet another embodiment set forth herein involves configuring mobile computing devices to share, using low-energy communication protocols, uplink observation information with one another in order to enhance the manner in which the mobile computing devices perform uplink transmissions of data over established cellular network connections. Specifically, each mobile computing device can be configured to maintain an up-to-date record of parameters that yield a most efficient approach for carrying out an uplink transmission. The uplink observation information is utilized by the mobile computing device in a manner similar to both the WIFI observation information and the cellular observation information previously described herein. In particular, the mobile computing device is configured to request, from neighboring mobile computing devices and using low-energy communication protocols, high-confidence uplink observation information for a given environment when the mobile computing device possesses corresponding uplink observation information that is low-confidence. Conversely, when the mobile computing device possess high-confidence uplink observation information, the mobile computing device is configured to advertise, to neighboring mobile computing devices, the high-confidence uplink observation information for other mobile computing devices to utilize. In this manner, mobile computing devices that are preparing to perform an uplink transmission—e.g., when preparing to upload a digital photograph—can interface with neighboring mobile computing devices to potentially identify parameters that will likely enable the mobile computing device to perform the uplink transmission in a reliable and efficient manner. 
     Yet another example of an energy-consuming operation involves the mobile computing device attempting to achieve a full GPS satellite fix when attempting to determine GPS location information. This is a common problem that occurs in dense areas where there is a high level of signal reflection and/or deterioration, which makes it difficult for the mobile computing device to achieve a full GPS satellite fix (i.e., a clear line of sight to four GPS satellites). When this occurs, the mobile computing device consumes a considerable amount of energy by repeatedly attempting to obtain a fix for each of the missing GPS satellites. This is especially unfortunate considering that there likely is at least one nearby mobile computing device that has obtained GPS satellite fixes that can supplement at least one of the missing GPS satellite fixes. 
     Accordingly, yet another embodiment set forth herein involves configuring the mobile computing device to query other mobile computing devices for GPS observation information that can be used by the mobile computing device to increase the accuracy of the GPS location information. In particular, the mobile computing device is configured to share the GPS observation information using low-energy communication protocols in order to enhance the manner in which the mobile computing devices obtain GPS satellite fixes. Specifically, each mobile computing device can be configured to maintain GPS observation information that is utilized by the mobile computing device in a manner similar to the WIFI observation information, the cellular observation information, and the uplink observation information previously described herein. In particular, the mobile computing device is configured to request, from neighboring mobile computing devices and using low-energy communication protocols, high-confidence GPS observation information (e.g., three strong GPS satellite fixes) for a given environment when the mobile computing device possesses corresponding GPS observation information that is low-confidence (e.g., only one GPS satellite fix). Conversely, when the mobile computing device possess high-confidence GPS observation information, the mobile computing device is configured to advertise, to neighboring mobile computing devices, the high-confidence GPS observation information for other mobile computing devices to utilize. According to some embodiments, when the mobile computing device possess high-confidence GPS observation information, the mobile computing device can be configured to keep an internal GPS radio in a “warm” state so that the high-confidence GPS observation information can be up to date and be provided to nearby devices as needed. Moreover, the mobile computing device can be configured to identify when available GPS observation information is associated with a confidence level that satisfies a particular threshold, and forego establishing a GPS satellite fix altogether. According to the foregoing manners, mobile computing devices can collaborate with one another to collectively obtain and process GPS satellite fixes and more accurately determine GPS location information. 
     Accordingly, the foregoing approaches provide techniques for communicating useful information using low-energy communication protocols (e.g., BTLE) to help reduce the amount of time that is normally spent carrying out energy-consuming processes (e.g., WIFI scans, establishment of cellular network connectivity, uplink transmissions, GPS fixes, etc.). A more detailed discussion of these techniques is set forth below and described in conjunction with  FIGS. 1-7 , which illustrate detailed diagrams of systems and methods that can be used to implement these techniques. 
       FIG. 1  illustrates a block diagram of different components of a system  100  that is configured to implement the various techniques described herein, according to some embodiments. More specifically,  FIG. 1  illustrates a high-level overview of the system  100 , which, as shown, includes computing devices  102  that are configured to wirelessly interface with a variety of systems (represented by WIFI  106 , GPS  108 , and cellular  110 ). More specifically, and as described in greater detail herein, each of the computing devices  102  is configured to maintain observation information associated with each of these systems (represented by observations  104 ) and to communicate the observation information between one another using low energy packets  114  (represented by collaboration  112 ). A variety of communication protocols can be used to transmit the low energy packets  114 , including BTLE and NFC protocols. Notably, however, the computing devices  102  set forth herein are not constrained to utilizing low energy protocols to communicate between one another. For example, in some instances, a computing device  102  can achieve power savings by communicating cellular related observation information and GPS related observation information to nearby computing devices  102  over an existing WIFI connection. Moreover, each of the computing devices  102  can be configured to communicate with one another over any number of “hops,” i.e., the observation information can be passed between different computing devices  102 —including computing devices  102  that do not directly utilize the observation information, but nonetheless pass on the observation information to surrounding devices. The manner in which the observation information is communicated over hops can be regulated in any matter, e.g., limiting the observation information to a particular number of hops, limiting the observation information to a total transmission time, and the like. 
     As shown in  FIG. 1 , each low energy packet  114  includes a payload  116  that can be used to transport either an observation information request  118  or an observation information advertisement  120 . The observation information request  118  can include any form of data that can be used to identify the type of observation being requested, e.g., an pre-defined index that represents a particular type of observation within a list of types of observation information. Alternatively, the observation information advertisement  120  can include observation information in any form, e.g., a data object whose structure is known to or can be deduced by computing devices  102  in order to process the data that comprises the observation information advertisement  120 . As described in greater detail below, each computing device  102  can be configured to periodically transmit observation information (via observation information advertisements  120 ) when the observation information satisfies a threshold level of confidence. The periodic transmission of observation information can also be based on an activity level associated with the computing device  102 , which can be based on, for example, motion sensors included in the computing device  102 , a rate at which a user of the computing device  102  interacts with the computing device  102 , and the like. Each computing device  102  can also be configured to transmit an observation request  118  for a particular type of observation information when the observation information, if any, possessed by the computing device  102  does not satisfy a threshold level of confidence. 
       FIG. 2  illustrates a block diagram of a more detailed view  200  of particular components of a computing device  102  of  FIG. 1 , according to some embodiments. As shown in  FIG. 2 , the computing device  102  can include a processor  202 , wireless hardware  204 , and a memory  218 . In particular, the wireless hardware  204  can include a WIFI component  206 , a GPS component  208 , a cellular component  210 , an NFC component  212 , an Ethernet component  214 , and a Bluetooth component  216 . As also shown in  FIG. 2 , the processor  202 , in conjunction with the memory  218 , can execute an operating system (OS  220 ) that includes a variety of applications/kernels  222  for managing the various hardware components included in the computing device  102 . The OS  220  also includes an information manager  224  that is configured to implement the various techniques described herein. 
     A detailed breakdown of the information manager  224  is also illustrated in  FIG. 2 . As shown, the information manager  224  can include a list of trusted computing devices  102 , preferences  226 , and observation information  228 . The trusted computing devices  102  can represent computing devices  102  with which the computing device  102  regularly communicates and relies on for observation information. For example, if the computing device  102  represents a user&#39;s smartphone, the trusted computing devices  102  can include a tablet device that also belongs to the user. This is especially useful since the tablet device likely has a larger battery than the smartphone and can be designated as the responsible party for performing intensive tasks (e.g., WIFI scans) and communicating observation information to the smartphone via low energy packets  114 . The preferences  226  represent a variety of information that dictates the manner in which the information manager  224  operates. For example, the preferences  226  can specify the type of observation information (if any) that is maintained, the rate at which observation information advertisements  120  are transmitted, parameters for identifying when to transmit an observation information request  118 , when to enter into a listening mode for receiving and processing observation information advertisements  120 , and the like. The preferences  226  can also enable the computing device  102  to manage how observation information requests and/or advertisements are handled by the computing device  102 . For example, when the computing device  102  includes a battery that satisfies a threshold level of energy capacity, the computing device  102  can be configured to increase the rate at which observation information advertisements are transmitted, the type of observation information advertisements that are transmitted, and the like. Other overall hardware/software capabilities of the computing device  102  can also influence these factors, e.g., processing capacity, memory capacity, and the like. Moreover, the computing device  102  can be configured to identify a particular exit event upon which to cease the transmission of advertisements, e.g., when a specific condition is satisfied. 
     As further shown in  FIG. 2 , the observation information  228  can include WIFI observation information  230 , cellular observation information  232 , uplink observation information  234 , and GPS observation information  236 . It is noted that the observation  228  is not limited to the types of observation information illustrated in  FIG. 2  and described herein, but can further include other types of observation information that can provide power savings when communicated between the computing devices  102 . 
     Accordingly,  FIGS. 1-2  provide an overview of architectures for the system  100  and the computing device(s)  102 , which, as set forth above, enable the implementation of the various techniques set forth herein.  FIGS. 3-6 , which are described in detail below, illustrate different methods for requesting/advertising observation information  228  between the computing devices  102 . In particular, each method sets forth a different framework that can be used to organize the manner in which a different type of observation information  228  is communicated between the computing devices  102 . 
       FIG. 3  illustrates a method  300  for communicating WIFI observation information  230  between computing devices  102 , according to one embodiment. As shown, the method  300  begins at step  302 , where the information manager  224  within a particular computing device  102  receives a request to establish a WIFI connection in an environment. This request can be generated, for example, when an application/kernel  222  executing on the computing device  102  detects a condition where a WIFI connection does not exist but is desirable (e.g., when attempting to download a large file). At step  304 , the information manager  224  searches a data store—such as the observation information  228  managed by the information manager  224 —for WIFI observation information  230  that is associated with the environment. At a similar time, the information manager  224  also issues, to peer computing devices  102  (if any), a request for WIFI observation information  230  that is associated with the environment. In this manner, the information manager  224  can subsequently compare all WIFI observation information  230  that is available in order to establish a best-case approach for connecting to a WIFI network. 
     Notably, step  308  of  FIG. 3  is optional, and represents a scenario where peer computing devices  102  are present and possess the requested WIFI observation information  230 . In particular, when this scenario occurs, the computing device  102  receives observation information advertisements  120  that include WIFI observation information  230 . At step  310 , the information manager  224  determines whether the WIFI observation information  230  is available. In particular, if the information manager  224  cannot locate WIFI observation information  230  locally within the observation information  228 —and, further, does not receive WIFI observation information  230  from peer computing devices  102 , then the information manager  224  passes the responsibility back to the user and presents a list of connection options. 
     Alternatively, if, at step  310 , the information manager  224  determines that the WIFI observation information  230  is available, then the method  300  proceeds to step  312 , where the information manager  224  identifies the available WIFI observation information  230  that is associated with a highest confidence level. Notably, these confidence levels can be established according to a variety approaches that involve, for example, assigning values to different properties of available WIFI networks and summing them together to effectively identify a WIFI network that is best-fit for the typical computing device  102 . Considerations for each WIFI network can include, for example, whether or not a connection has been successfully established with the WIFI network, whether or not a Domain Name Service (DNS) lookup has been successfully carried out through the WIFI connection, the total uptime of the WIFI connection, the signal strength of the WIFI connection, the average speed of the WIFI connection, imposed limitations on the WIFI connection (e.g., the number of blocked web page categories), and the like. 
     At step  314 , the information manager  224  configures a WIFI connection according to the WIFI observation information  230  that is associated with the highest confidence level. Alternatively, each computing device  102  can be configured to process the different WIFI observation information  230  based on specific needs that the computing device  102 , instead of outright selecting the WIFI observation information  230  that is associated with the highest confidence level. For example, preferences  226  of a particular computing device  102  can specify that the most important aspect of a WIFI connection is the average speed of the WIFI connection as opposed to the total uptime of the WIFI connection, and choose to connect to a particular WIFI network that is known to have the highest average speed. In this manner, each computing device  102  can implement its own flexible approach for utilizing the observation information advertisements  120  that are received by way of the method  300 . 
       FIG. 4  illustrates a method  400  for communicating cellular observation information  232  between computing devices  102 , according to one embodiment. As shown, the method  400  begins at step  402 , where the information manager  224  identifies an OOS condition in an environment. This can occur, for example, when the computing device  102  on which the information manager  224  is executing is powering-on, entering back into an area where cellular service is provided, transitioning out of airplane mode, and the like. At step  404 , the information manager  224  issues, to peer computing devices  102 , a request for cellular observation information  232  that is associated with the environment. 
     At step  406 , the information manager  224  receives, from the peer computing devices  102 , observation information advertisements  120  that include the requested cellular observation information  232 . Notably, step  406  of  FIG. 4  is optional, and represents a scenario where the peer computing devices  102  are present and possess the requested cellular observation information  232 . At step  408 , the information manager  224  determines whether any cellular observation information  232  is received. If, at step  408 , the information manager  224  determines that cellular observation information  232  is received, then the method  400  proceeds to step  410 . Otherwise, the method  400  proceeds to step  414 , where the information manager  224  establishes a cellular connection using a cellular connection technique that is unoptimized. 
     At step  410 , the information manager  224  optimizes the cellular connection technique by identifying, among the cellular observation information  232 , parameters for achieving a cellular connection in a most-efficient manner. This optimization can be carried out, for example, assigning values to different properties of specified in the cellular observation information  232  to develop an approach that is best-fit for establishing a cellular connection in within the environment. Considerations can include, for example, identified RATs to which the peer computing devices  102  are connected, frequency bands that are being used by the peer computing devices  102 , the relative locations of the peer computing devices  102 , and the like. Finally, at step  412 , the information manager  224  establishes a cellular connection using the optimized cellular connection technique. 
       FIG. 5  illustrates a method  500  for communicating uplink observation information  234  between computing devices  102 , according to one embodiment. As shown, the method  500  begins at step  502 , where the information manager  224  receives a request to carry out an uplink transmission, e.g., to send an email that includes attachments. At step  504 , the information manager  224  issues, to peer computing devices  102 , a request for uplink observation information  234 . At step  506 , the information manager  224  receives, from the peer devices, advertisements for the uplink observation information  234 . 
     Notably, step  506  of  FIG. 5  is optional, and represents a scenario where peer computing devices  102  are present and possess the requested uplink observation information  234 . In particular, when this scenario occurs, the computing device  102  receives observation information advertisements  120  that include uplink observation information  234 . At step  508 , the information manager  224  determines whether the uplink observation information  234  is available. In particular, if the information manager  224  does not receive uplink observation information  234  from peer computing devices  102 , then the information manager  224  carries out the uplink transmission using existing techniques. This notion is represented at step  514  of  FIG. 5 . Otherwise, if, at step  508 , the information manager  224  determines that uplink observation info  508  is available, then the method  500  proceeds to step  510 , where the information manager  224  analyzes the uplink observation information  234  to identify a power profile for an optimal manner by which to carry out the uplink transmission. At step  512 , the information manager  224  carries out the uplink transmission according to the identified optimal manner. 
       FIG. 6  illustrates a method  600  for communicating GPS observation information  236  between computing devices  102 , according to one embodiment. As shown, the method  600  begins at step  602 , where the information manager  224  receives a request to determine a current GPS location. At step  604 , the information manager  224  determines that only a partial GPS satellite fix can be obtained, and, therefore, that only a partially accurate current GPS location can be determined. At step  606 , the information manager  224  issues, to peer computing devices  102 , a request for GPS observation information  236 . At step  608 , the information manager  224  receives, from the peer computing device  102 , observation information advertisements  120  that include GPS observation information  236 . Notably, step  608  of  FIG. 6  is optional, and represents a scenario where peer computing devices  102  are present and possess the requested GPS observation information  236 . In particular, when this scenario occurs, the computing device  102  receives observation information advertisements  120  that include GPS observation information  236 . At step  310 , the information manager  224  determines whether the GPS observation information  236  is available. If, at step  610 , the information manager  224  determines that the GPS observation information  236  is not available, then the method  600  proceeds to step  618 , where the information manager  224  continues attempting to obtain a full GPS satellite fix. 
     Otherwise, at step  612 , the information manager  224  attempts to increase the accuracy of the current location using the GPS observation information  236 . At step  614 , the information manager  224  determines whether the accuracy of the current location satisfies a threshold. If, at step  614 , the information manager  224  determines that the accuracy of the current location satisfies the threshold, then the method  600  proceeds to step  616 , where the information manager  224  provides the current location. Otherwise, the method  600  proceeds to step  618  described above, where the information manager  224  continues attempts to obtain a full GPS satellite fix. 
       FIG. 7  illustrates a detailed view of a computing device  700  that can be used to implement the various components described herein, according to some embodiments. In particular, the detailed view illustrates various components that can be included in the computing devices  102  illustrated in  FIG. 1 . As shown in  FIG. 7 , the computing device  700  can include a processor  702  that represents a microprocessor or controller for controlling the overall operation of computing device  700 . The computing device  700  can also include a user input device  708  that allows a user of the computing device  700  to interact with the computing device  700 . For example, the user input device  708  can take a variety of forms, such as a button, keypad, dial, touch screen, audio input interface, visual/image capture input interface, input in the form of sensor data, etc. Still further, the computing device  700  can include a display  710  (screen display) that can be controlled by the processor  702  to display information to the user. A data bus  716  can facilitate data transfer between at least a storage device  740 , the processor  702 , and a controller  713 . The controller  713  can be used to interface with and control different equipment through and equipment control bus  714 . The computing device  700  can also include a network/bus interface  711  that couples to a data link  712 . In the case of a wireless connection, the network/bus interface  711  can include a wireless transceiver. 
     The computing device  700  also include a storage device  740 , which can comprise a single disk or a plurality of disks (e.g., hard drives), and includes a storage management module that manages one or more partitions within the storage device  740 . In some embodiments, storage device  740  can include flash memory, semiconductor (solid state) memory or the like. The computing device  700  can also include a Random Access Memory (RAM)  720  and a Read-Only Memory (ROM)  722 . The ROM  722  can store programs, utilities or processes to be executed in a non-volatile manner. The RAM  720  can provide volatile data storage, and stores instructions related to the operation of the computing devices  102 . 
     The various aspects, embodiments, implementations or features of the described embodiments can be used separately or in any combination. Various aspects of the described embodiments can be implemented by software, hardware or a combination of hardware and software. The described embodiments can also be embodied as computer readable code on a computer readable medium. The computer readable medium is any data storage device that can store data which can thereafter be read by a computer system. Examples of the computer readable medium include read-only memory, random-access memory, CD-ROMs, DVDs, magnetic tape, hard disk drives, solid state drives, and optical data storage devices. The computer readable medium can also be distributed over network-coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. 
     The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the described embodiments. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the described embodiments. Thus, the foregoing descriptions of specific embodiments are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the described embodiments to the precise forms disclosed. It will be apparent to one of ordinary skill in the art that many modifications and variations are possible in view of the above teachings.

Metadata:
Filing Date: 20140701
Publication Date: 20160308
Grant Date: 20160308
Priority Date: 20140701
Inventors: SEN ANANDAMOY
SWAMINATHAN ARVIND
Assignee: APPLE INC
CPC Classifications: [{"code": "H04L65/1073", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W52/0229", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04W84/005", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W84/18", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W84/20", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W52/0229", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04W4/023", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/023", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/80", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L65/1073", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/21", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W84/12", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L65/1069", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L43/0811", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L43/0811", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/008", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/206", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L43/0811", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W52/0229", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L65/1073", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/023", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W84/20", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L65/1006", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W84/18", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W84/005", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04L65/1104", "inventive": true, "first": false, "tree": "[]"}, {"code": "Y02D30/70", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W4/80", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/21", "inventive": true, "first": false, "tree": "[]"}, {"code": "Y02D30/70", "inventive": false, "first": false, "tree": "[]"}]
Family ID: 55018015