Patent Description:
Interoperability of computing devices with other resources, such as printers, display devices, and other computing devices, further promotes the utility of personal computing devices. However, configuring a computing device to properly interface with such other resources can be difficult. Oftentimes, the identity of the other resources may be unknown. Additionally, the particular configuration settings required to properly interact with such resources may be difficult or impossible to obtain in a timely manner. As such, effecting interoperability between computing devices and other resources can be a challenge for many users.

<CIT> relates to the location of service devices from a portable communication device.

is a simplified flow diagram of at least one embodiment of a method for supporting resource management that may be executed by the resource database server of <FIG> and <FIG>.

While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and will be described herein in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with the present disclosure and the appended claims.

The disclosed embodiments may be implemented, in some cases, in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented as instructions carried by or stored on a transitory or non-transitory machine-readable (e.g., computer-readable) storage medium, which may be read and executed by one or more processors. A machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a form readable by a machine (e.g., a volatile or non-volatile memory, a media disc, or other media device).

Referring now to <FIG>, in one embodiment, a system <NUM> for resource management includes a mobile computing device <NUM> and a resource database server <NUM> in communication with each other over a network <NUM>. The system <NUM> also includes one or more resources <NUM> located at a location <NUM> that may also be capable of communication over the network <NUM>. The system <NUM> may further include a resource provider <NUM> coupled to the network <NUM>. In use, as discussed in more detail below, the mobile computing device <NUM> (or, in some embodiments, the resource database server <NUM>) determines a future context and communicates that future context to the resource database server <NUM>. The resource database server <NUM> determines resources <NUM> that will be available to the mobile computing device <NUM> at a location <NUM> defined by the future context, allowing the mobile computing device <NUM> to configure itself to use those resources <NUM> prior to, or in anticipation of, arriving at the location <NUM>. The illustrative system <NUM> includes a single location <NUM> containing resources <NUM>; however, the system <NUM> may manage resources <NUM> for any number of locations <NUM>.

The disclosed technologies allow the mobile computing device <NUM> to adapt to new contexts and locations seamlessly. That is, in the illustrative embodiments, a user of the mobile computing device <NUM> is not required to manually pre-configure the mobile computing device <NUM> for new locations, which pre-configuration may not even be possible in some circumstances. Additionally, once at the new location, the user may access available resources <NUM> quickly and easily, without wasting time configuring the mobile computing device <NUM>. Further, such seamless and easy configuration may allow a resource provider <NUM> to provide resources <NUM> to a larger number of users.

The mobile computing device <NUM> may be embodied as any type of device for performing the functions described herein. For example, the mobile computing device <NUM> may be embodied as, without limitation, a computer, a smart phone, a tablet computer, a laptop computer, a notebook computer, a mobile computing device, a cellular telephone, a handset, a messaging device, a vehicle telematics device, a network appliance, a web appliance, a distributed computing system, a multiprocessor system, a processor-based system, a consumer electronic device, a digital television device, and/or any other computing device configured to plan for future device context. As shown in <FIG>, the illustrative mobile computing device <NUM> includes a processor <NUM>, an input/output subsystem <NUM>, a memory <NUM>, a data storage device <NUM>, and a communication circuit <NUM>. Of course, the mobile computing device <NUM> may include other or additional components, such as those commonly found in a notebook computer (e.g.,.

various input/output devices), in other embodiments. Additionally, in some embodiments, one or more of the illustrative components may be incorporated in, or otherwise from a portion of, another component. For example, the memory <NUM>, or portions thereof, may be incorporated in the processor <NUM> in some embodiments.

The processor <NUM> may be embodied as any type of processor capable of performing the functions described herein. For example, the processor <NUM> may be embodied as a single or multicore processor(s), digital signal processor, microcontroller, or other processor or processing/controlling circuit. Similarly, the memory <NUM> may be embodied as any type of volatile or non-volatile memory or data storage capable of performing the functions described herein. In operation, the memory <NUM> may store various data and software used during operation of the mobile computing device <NUM> such as operating systems, applications, programs, libraries, and drivers. The memory <NUM> is communicatively coupled to the processor <NUM> via the I/O subsystem <NUM>, which may be embodied as circuitry and/or components to facilitate input/output operations with the processor <NUM>, the memory <NUM>, and other components of the mobile computing device <NUM>. For example, the I/O subsystem <NUM> may be embodied as, or otherwise include, memory controller hubs, input/output control hubs, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and/or other components and subsystems to facilitate the input/output operations. In some embodiments, the I/O subsystem <NUM> may form a portion of a system-on-a-chip (SoC) and be incorporated, along with the processor <NUM>, the memory <NUM>, and other components of the mobile computing device <NUM>, on a single integrated circuit chip.

The data storage device <NUM> may be embodied as any type of device or devices configured for short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. The data storage device <NUM> may store information relating to the context of the mobile computing device <NUM>, such as a user calendar and location information. The data storage device <NUM> may also store software or configuration information for using the resources <NUM>.

The communication circuit <NUM> of the mobile computing device <NUM> may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications between the mobile computing device <NUM>, the resource database server <NUM>, and/or other remote devices. The communication circuit <NUM> may be configured to use any one or more communication technology (e.g., wireless or wired communications) and associated protocols (e.g., Ethernet, Bluetooth®, Wi-Fi®, WiMAX, etc.) to effect such communication.

In the illustrative embodiment, the mobile computing device <NUM> includes location circuitry <NUM>. The location circuitry <NUM> may be embodied as any type of circuit capable of determining the precise or approximate position of the mobile computing device <NUM>. For example, the location circuitry <NUM> may be embodied as a global positioning system (GPS) receiver, capable of determining the precise coordinates of the mobile computing device <NUM>. In other embodiments, the location circuitry <NUM> may triangulate the position of the mobile computing device <NUM> using distances or angles to cellular network towers with known positions, provided by the communication circuit <NUM>. In other embodiments, the location circuitry <NUM> may determine the approximate position of the mobile computing device <NUM> based on association to wireless networks with known positions, using the communication circuit <NUM>.

As discussed in more detail below, the mobile computing device <NUM> is configured to transmit and receive data with the other devices of the system <NUM> over the network <NUM>. The network <NUM> may be embodied as any number of various wired and/or wireless networks. For example, the network <NUM> may be embodied as, or otherwise include, a wired or wireless local area network (LAN), a wired or wireless wide area network (WAN), and/or a publicly-accessible, global network such as the Internet. As such, the network <NUM> may include any number of additional devices, such as additional computers, routers, and switches, to facilitate communications between the mobile computing device <NUM> and the other devices of the system <NUM>.

The resource database server <NUM> may be embodied as any type of server computing device, or collection of devices, capable of performing the functions described herein. As such, the resource database server <NUM> may be embodied as a single server computing device or a collection of servers and associated devices. For example, in some embodiments, the resource database server <NUM> is embodied as a cloud database service to perform the functions described herein. In such embodiments, the resource database server <NUM> may be embodied as a "virtual server" formed from multiple computing devices distributed across the network <NUM> and operating in a public or private cloud. Accordingly, although the resource database server <NUM> is illustrated in <FIG> and described below as embodied as a single server computing device, it should be appreciated that the resource database server <NUM> may be embodied as multiple devices cooperating together to facilitate the functionality described below. Illustratively, the resource database server <NUM> includes a processor <NUM>, an I O subsystem <NUM>, a memory <NUM>, a data storage <NUM>, a communication circuitry <NUM>, and/or other components and devices commonly found in a computer server or similar computing device. Those individual components of the resource database server <NUM> may be similar to the corresponding components of the mobile computing device <NUM>, the description of which is applicable to the corresponding components the resource database server <NUM> and is not repeated herein so as not to obscure the present disclosure.

The location <NUM> may be embodied as any physical location, and of any scale. For example, the location <NUM> may be embodied as a room, a building, a campus, or a city. In some embodiments, the location <NUM> may be defined by particular geographical coordinates. As described above, the location <NUM> includes one or more resources <NUM>, which may be embodied as any computing resource usable by the mobile computing device <NUM>. The resources <NUM> may include displays, projectors, printers, network connectors, and other computing resources. For example, one resource <NUM> may be embodied as an Intel® Wireless Display ("WiDi")-enabled display.

The resource provider <NUM> is configured to provide information on the resources <NUM> to the resource database server <NUM>, as discussed in more detail below. The resource provider <NUM> may be controlled or operated by the person or entity responsible for a particular resource <NUM>, such as the resource owner, information technology department, resource manufacturer, etc. As such, the resource provider <NUM> may include components and features similar to the mobile computing device <NUM> and the resource database server <NUM>, such as a processor, I/O subsystem, memory, data storage, communication circuitry, and various peripheral devices, which are not illustrated in <FIG> for clarity of the present description. Further, although the illustrative system <NUM> of <FIG> includes one resource provider <NUM>, it should be understood that any number of resource providers <NUM> may interact with the system <NUM>. In such embodiments, each resource provider <NUM> may be responsible for a subset of the resources <NUM>.

Referring now to <FIG>, in one embodiment, the mobile computing device <NUM> establishes an environment <NUM> during operation. The illustrative embodiment <NUM> includes a context analysis module <NUM>, a resource management module <NUM>, a communication module <NUM>, and context information <NUM>. The various modules of the environment <NUM> may be embodied as hardware, firmware, software, or a combination thereof.

The context analysis module <NUM> is configured to predict the future context and monitor the current context of the mobile computing device <NUM>. As described in more detail below, the context of the illustrative mobile computing device <NUM> defines the physical location of the mobile computing device <NUM>, and may define other contextual aspects of the mobile computing device <NUM>. In some embodiments, those functions may be performed by sub-modules, for example, by a context prediction module <NUM> and a context monitoring module <NUM>.

The resource management module <NUM> is configured to prepare the mobile computing device <NUM> to use resources <NUM> at the location <NUM> defined by the future context, and to enable use of the resources <NUM> at the future context. The resource management module <NUM> may configure settings on the mobile computing device <NUM> or download and configure additional software (e.g., device drivers, applications, etc.) required to use the resources <NUM>. In some embodiments, the resource management module <NUM> may notify the user of the mobile computing device <NUM> of the resources <NUM>. In some embodiments, those functions may be performed by sub-modules, for example, by a user notification module <NUM>.

The communication module <NUM> is configured to communicate with the resource database server <NUM>. The communication module <NUM> sends requests for resource information to the resource database server <NUM>. Those requests may include information on the future context predicted by the context analysis module <NUM>. The communication module <NUM> receives resource information from the resource database server <NUM> in response. The resource information is used by the resource management module <NUM>.

The context information <NUM> stores information relevant to the context of the mobile computing device <NUM>, including information on the current and past context of the mobile computing device <NUM> and information on the user calendar. As described in detail below, the context analysis module <NUM> may use the context information <NUM> to predict the future context of the mobile computing device <NUM>. Such information may be stored in one or more databases, for example, in a context database <NUM> and a user calendar <NUM>.

Referring now to <FIG>, in one embodiment, the resource database server <NUM> establishes an environment <NUM> during operation. The illustrative embodiment <NUM> includes a resource management module <NUM>, a communication module <NUM>, and resource database <NUM>. In some embodiments, the environment <NUM> may also include a context analysis module <NUM> and the user calendar <NUM>. The various modules of the environment <NUM> may be embodied as hardware, firmware, software, or a combination thereof.

The resource management module <NUM> is configured to determine resource information associated with a future context of the mobile computing device <NUM>. The resource information describes resources <NUM> located at a location <NUM> defined by the current context of the mobile computing device <NUM>. The resource management module <NUM> may provide additional software, such as device drivers and/or applications, required to use the resources <NUM> to the mobile computing device <NUM>.

The communication module <NUM> is configured to receive requests from the mobile computing device <NUM> for resource information and to send requested resource information in response. In some embodiments, the communication module <NUM> may receive resource information from one or more resource providers <NUM>.

In some embodiments, the resource database server <NUM> may be configured to determine the future context of the mobile computing device <NUM> based on context information received from the mobile computing device <NUM>. In such embodiments, the environment <NUM> of the resource database server <NUM> may include, in addition to the context analysis module <NUM>, the context information <NUM>. As discussed above, the context information <NUM> includes the context database <NUM> and the user calendar <NUM>. Such context information <NUM> may be used by the context analysis module <NUM> as described above with respect to the context analysis module <NUM>.

The resource database <NUM> describes all resources <NUM> at locations <NUM> known to the resource database server <NUM>. The resource management module <NUM> uses the resource database <NUM> to respond to requests from the mobile computing device <NUM>. Part or all of the information of the resource database <NUM> may be provided by one or more resource providers <NUM>. As discussed in more detail below, the resource information may include any type of information usable by the mobile computing device <NUM> to configure itself to communicate with the resources <NUM>.

Referring now to <FIG>, in use, the mobile computing device <NUM> may execute a method <NUM> for resource management. The method <NUM> begins with block <NUM>, in which the mobile computing device <NUM> registers with the resource database server <NUM>. Such registration may include creating a user account on the resource database server <NUM> and associating the mobile computing device <NUM> with the user account. As part of the registration process, the user of the mobile computing device <NUM> may choose to make personal information, such as calendar, contact, or location information, available to the resource database server <NUM>. The user may also elect particular context domains for use with the method <NUM>, for example electing to make work-specific context information available. Registration may be performed ahead of time.

After some time, in block <NUM>, the mobile computing device <NUM> monitors its current context. As an aspect of the current context, the mobile computing device <NUM> may monitor its current location. Of course, the mobile computing device <NUM> may monitor additional or other contextual aspects of the mobile computing device and/or user of the computing device including, but not limited to, power state of the mobile computing device <NUM>, use data related to software applications executed on the mobile computing device <NUM>, movement of the mobile computing device <NUM>, activities of the user, local weather, events located near the current location of the device <NUM> and/or user, and/or other contextual information related to the mobile computing device <NUM> and/or the user of the mobile computing device <NUM>. In some embodiments, in block <NUM> the mobile computing device <NUM> may store the current context information in the context database <NUM> for future reference. The context database <NUM> may be used to derive patterns of activity for the mobile computing device <NUM>. For example, the mobile computing device <NUM> may store in the context database <NUM> the current location, a business located at or near the current location, or the number of times the mobile computing device <NUM> has been located at the current location.

In block <NUM>, the mobile computing device <NUM> determines a future context of the mobile computing device <NUM>, including a future location <NUM> of the mobile computing device <NUM>. In some embodiments, the timeframe of the future context (e.g. next day, next week) may be specified by the user. To determine the future context, the mobile computing device <NUM> may access and analyze any type of data from which an aspect of the future context of the mobile computing device <NUM> may be determined or otherwise inferred. For example, in block <NUM>, the mobile computing device <NUM> analyzes the user calendar <NUM> to predict the future context. Upcoming calendar events in the user calendar <NUM> may include information relevant to a location at which the user is expected to visit in the future timeframe, such as room number, address, geographical coordinates, or the like. Thus the mobile computing device <NUM> may determine its likely future location <NUM> using information stored in the calendar event describing the event location. In other embodiments, the mobile computing device <NUM> may determine the future location <NUM> based on semantic analysis of calendar events. For example, the user calendar <NUM> may include airline flight information, which may be analyzed to determine likely physical location. All of these determinations infer the device location by assuming that the user will take the mobile computing device <NUM> along for the schedule event.

In some embodiments, in block <NUM>, the mobile computing device <NUM> may analyze a historical activity pattern of the user to predict the future context. As described above, the mobile computing device <NUM> may record or otherwise track device context in the context database <NUM>. The mobile computing device <NUM> may analyze the context database <NUM> and the user calendar <NUM> to determine the historical activity pattern of the user. For example, the context database <NUM> may indicate that a business traveler frequently visits a particular facility located in a particular city. When the user calendar indicates <NUM> future travel to that particular city, the mobile computing device <NUM> may predict the future context to include that particular facility based on the user's activity pattern. As another example, the context database <NUM> may indicate that the user frequently visits locations of a national restaurant chain. When predicting travel to a new city, the mobile computing device <NUM> may predict the future context to include locations of the national restaurant chain based on the user's activity pattern.

Additionally, in some embodiments, in block <NUM>, the mobile computing device <NUM> may determine the future context based on external context information. For example, the mobile computing device <NUM> may search a public or organizational event calendar to determine the likely future location of the user. In some embodiments, the mobile computing device <NUM> may search the Internet for information relating to the likely future location of the user. For example, the external context information may indicate the date and location of a national conference relating to the user's work. The mobile computing device <NUM> may determine that the user- and thus the mobile computing device <NUM>- may attend the conference, thereby determining the location of the future context.

In block <NUM>, the mobile computing device <NUM> sends a request for resource information to the resource database server <NUM>. In some embodiments, in block <NUM> the request may include information on the predicted future context. Such future context information may be embodied as information describing a particular physical location <NUM> or a group of physical locations <NUM>. In some embodiments, the future context information may include context information from which physical location information may be derived by the resource database server <NUM>.

In block <NUM>, the mobile computing device <NUM> receives the requested resource information from the resource database server <NUM>. The requested resource information describes resources <NUM> at the location <NUM> defined by the predicted future context. The resource information may describe such resources <NUM> using a unique identifier such as a device name, network name, network address, serial number, globally unique identifier (GUID), or the like. Additionally, the resource information may include any type of information usable by the mobile computing device <NUM> to configure itself to communicate, or otherwise interact, with one or more of the resources <NUM> located at the location <NUM>. For example, the resource information may identify device settings, communication protocols, resource identity information, device driver information, passwords, security information, and/or any other type of information useful in establishing interoperability between the mobile computing device <NUM> and the resource(s) <NUM>.

In block <NUM>, in some embodiments the mobile computing device <NUM> may also receive one or more recommendations associated with the location <NUM> defined by the future context. In some embodiments, the recommendations may include a media content recommendation such as a video, song, e-book, or periodical. For example, given a future context involving an airplane trip, the recommendation may include one or more movies according to the scheduled duration of the trip. In some embodiments, the recommendations may include travel information recommendations such as weather information, traffic information, or flight status information.

For example, given a future context including a particular city, the recommendation may include the weather forecast for that city. In some embodiments, the mobile computing device <NUM> may notify the user of any recommendations received from the resource database server, for example through a user interface alert.

In block <NUM>, the mobile computing device <NUM> configures itself to use the resources <NUM> at the location <NUM> defined by the future context. For example, the mobile computing device <NUM> may pre-configure network settings to use a network connection available at the location <NUM> defined by the future context. Similarly, the mobile computing device <NUM> may pre-configure printer settings to use a printer at the location <NUM> or display settings to use a WiDi display device at the location <NUM>. In some embodiments, the mobile computing device <NUM> may configure itself to display media content using resources <NUM> available at the location <NUM>. For example, the mobile computing device <NUM> may download media content or negotiate digital access rights for media content to be accessed with a media player device located at the location <NUM>. In some embodiments, the mobile computing device <NUM> may configure itself to use the resources <NUM> automatically, that is configure itself without direction from the user. In some embodiments, in block <NUM>, the mobile computing device <NUM> may download and configure software to use the resources <NUM>. For example, the mobile computing device <NUM> may download and configure appropriate device drivers to use printers and displays at the location <NUM>. The mobile computing device <NUM> may download such software directly from the resource database server <NUM> or from a third-party source such as the device manufacturer.

In some embodiments, in block <NUM> the mobile computing device <NUM> monitors its current context and uses the resources <NUM> when located at the location <NUM> defined by the future context. The method of block <NUM> is described in detail in connection with <FIG>, below. After completing block <NUM>, the method <NUM> loops back to block <NUM> to continue monitoring the context of the mobile computing device <NUM> and determining the future context. Although illustrated as executing sequentially with the other blocks of method <NUM>, in some embodiments the method of block <NUM> may be executed in any order, including in parallel. For example, the mobile computing device <NUM> may monitor the current context and enable resources at the current location while simultaneously determining the future context.

Referring now to <FIG>, in use, the mobile computing device <NUM> may execute the method of block <NUM> for monitoring the current context and using the resources <NUM>. The method of block <NUM> begins with block <NUM>, in which the mobile computing device <NUM> monitors the context of the mobile computing device <NUM>. In some embodiments, the mobile computing device <NUM> uses the location circuitry <NUM> to determine the current location of the mobile computing device <NUM>. In block <NUM>, the mobile computing device <NUM> determines whether the location of the current context matches the location <NUM> defined by the future context. The mobile computing device <NUM> may determine whether current location of the mobile computing device <NUM> is within a threshold distance of the location <NUM> defined by the future context. If the current location does not match the location <NUM> defined by the future context, the method of block <NUM> loops back to block <NUM> to continue monitoring current context. If the current location matches the location <NUM> defined by the future context, the method of block <NUM> advances to block <NUM>.

In block <NUM>, the mobile computing device <NUM> enables for use the resources <NUM> at the location <NUM> defined by the future context. Of course, at this point the current location coincides with the location <NUM> defined by the future context. To enable the resources <NUM>, the mobile computing device <NUM> may activate support software for the resources <NUM>, open network connections, forward display output, or otherwise make the resources <NUM> available to the user using the resource information obtain in block <NUM> of method <NUM>. In some embodiments, in block <NUM> the mobile computing device <NUM> may notify the user of the availability of the resources <NUM> at the current context. For example, the mobile computing device <NUM> may present the user with a list of printers, displays, and network connections available at the current location. In some embodiments, the notification may allow the user to selectively activate available resources <NUM>. After completion of block <NUM>, the method of block <NUM> is completed.

Referring now to <FIG>, in use, the resource database server <NUM> may execute a method <NUM> for supporting resource management for the mobile computing device <NUM>. The method <NUM> begins with block <NUM>, in which the resource database server <NUM> registers a mobile computing device <NUM>. Such registration may include creating a user account on the resource database server <NUM> and associating the mobile computing device <NUM> with the user account. As part of the registration process, the user of the mobile computing device <NUM> may choose to make personal information, such as calendar, contact, or location information, available to the resource database server <NUM>. The user may also elect particular context domains for use with the method <NUM>, for example electing work-specific context information. Registration may be performed ahead of time.

In block <NUM>, the resource database server <NUM> receives a request for resource information from the mobile computing device <NUM>. In some embodiments, in block <NUM>, the request may include information on a future context of the mobile computing device <NUM>. Such future context information may be embodied as information describing a particular physical location <NUM> or a group of physical locations <NUM>. In some embodiments, the future context information may include context information from which physical location information may be derived by the resource database server <NUM>.

In some embodiments, in block <NUM>, the resource database server <NUM> may determine the future context of the mobile computing device <NUM>. For example, when the request for information does not include future context information, the resource database server <NUM> may predict the future context information. In some embodiments, the timeframe of the future context (e.g. next day, next week) may be specified by the user of the mobile computing device <NUM>. In some embodiments, in block <NUM>, the resource database server <NUM> may analyze the user calendar <NUM> to determine the future context. The user calendar <NUM> may be stored on the resource database server <NUM>, the mobile computing device <NUM>, or on a different device, such as a cloud data service. As described above, upcoming calendar events in the user calendar <NUM> may include information relevant to location, such as room number, address, geographical coordinates, or the like. Thus the resource database server <NUM> may determine the likely future location <NUM> of the mobile computing device <NUM> using information stored in the calendar event describing the event location. In other embodiments, the resource database server <NUM> may determine the future location <NUM> based on semantic analysis of calendar events. For example, the user calendar <NUM> may include airline flight information, which may be analyzed to determine likely physical location. All of these determinations infer the device location by assuming that the user will take the mobile computing device <NUM> along for the schedule event.

In some embodiments, in block <NUM>, the resource database server <NUM> may analyze a historical activity pattern of the user to predict the future context. The resource database server <NUM> may analyze the context database <NUM> and the user calendar <NUM> to determine the historical activity pattern of the user. For example, as described above, the context database <NUM> may indicate that a business traveler frequently visits a particular facility located in a particular city. When the user calendar <NUM> indicates future travel to that particular city, the resource database server <NUM> may predict the future context to include that particular facility based on the user's activity pattern. As another example, the context database <NUM> may indicate that the user frequently visits locations of a national restaurant chain. When predicting travel to a new city, the resource database server <NUM> may predict the future context to include locations of the national restaurant chain based on the user's activity pattern.

In some embodiments, in block <NUM>, the resource database server <NUM> may determine the future context based on external context information. For example, the resource database server <NUM> may search a public or organizational event calendar to determine the likely future location of the user. In some embodiments, the resource database server <NUM> may search the Internet for information relating to the likely future location of the user. For example, as described above, the external context information may indicate the date and location of a national conference relating to the user's work. The resource database server <NUM> may determine that the user- and thus the mobile computing device <NUM>- may attend the conference, thereby determining the location of the future context.

In some embodiments, in block <NUM>, the resource database server <NUM> receives resource information from a resource provider <NUM>. As described above, the resource provider <NUM> may be controlled by the owner of the resources <NUM>, and may provide information to allow travelers and others to use the resources <NUM>. For example, the owner of a coffeeshop providing wireless Internet access may provide information on network connections to the resource database server <NUM> in order to encourage visitors. Although illustrated in <FIG> as executing sequentially as part of the method <NUM>, the resource database server <NUM> may receive the resource information at other times, including in a parallel process. Resource information may be stored in the resource database <NUM> for later retrieval or may be retrieved from the resource provider <NUM> as needed.

In block <NUM>, the resource database server <NUM> determines resource information based on the future context of the mobile computing device <NUM>. The resource database server <NUM> may search the resource database <NUM> for all resources <NUM> located at the location <NUM> defined by the future context. For example, the resource database server <NUM> may search for resources <NUM> located within a threshold distance from the predicted future location <NUM> of the mobile computing device <NUM>. As described above, the resource database <NUM> may include resource information provided by one or more resource providers <NUM> as well as information provided directly by the resource database server <NUM>.

In block <NUM>, the resource database server <NUM> sends the requested resource information to the mobile computing device <NUM>. As described above, the resource information describes the computing resources <NUM> located at the location <NUM> and may include any type of information usable by the mobile computing device <NUM> to configure the mobile computing device <NUM> for interoperability with the resources <NUM>. The resource information may describe the resources <NUM> using a unique identifier such as a device name, network name, network address, serial number, globally unique identifier (GUID), or the like.

In block <NUM>, in some embodiments the resource database server <NUM> may send a recommendation associated with the location <NUM> defined by the future context to the mobile computing device <NUM>. The resource database server <NUM> may determine the recommendation by analyzing external data sources based on the future context. As described above, in some embodiments, the recommendations may include a media content recommendation such as a video, song, e-book, or periodical. For example, given a future context involving an airplane trip, the recommendation may include one or more movies according to the scheduled duration of the trip. In some embodiments, the recommendations may include travel information recommendations such as weather information, traffic information, or flight status information. For example, given a future context including a particular city, the recommendation may include the weather forecast for that city.

Claim 1:
A resource database server (<NUM>) to support resource management on a mobile computing device (<NUM>), the resource database server (<NUM>) configured to:
receive a request for resource information from the mobile computing device;
determine the resource information associated with a location defined by a future context of the mobile computing device in response to receiving the request, wherein the resource information includes information usable by the mobile computing device to connect to a display at the location defined by the future context, and wherein the resource information further includes information useable by the mobile computing device to configure itself to interoperate with the display; and
send the requested resource information along with a device driver for a resource located at the location defined by the future context to the mobile computing device.