Patent Description:
There are many instances in which a device switches between communicating using a first type of network, such as Wi-Fi, and a second type of network, such a cellular network. For example, the device may initially be communicating using the first type of network. The device may then detect an interruption with the first type of network, such as when the device loses the connection. In response, the device may begin to communicate using the second type of network. In many circumstances, it may be beneficial for the device to switch between the network connections even without detecting the interruption. For example, based on a location of the device, the second type of network may include a better quality connection, such as with faster throughput, than the first type of network. However, if the device has yet to detect an interruption with the first type of network, the device may continue to communicate using the first type of network instead of switching to the second type of network.

In some cases, parentheticals are utilized after a reference number to distinguish like elements. Use of the reference number without the associated parenthetical is generic to the element.

<CIT> discloses a system which determines that a client device is located in an interior of a premises in which multiple wireless network access points are deployed in a wireless network. The system then obtains a dataset of wireless network signal strength values corresponding to signal coverage areas associated with the wireless network access points within the premises and generates a wireless network mapping corresponding to a layout of the interior which evaluates overlapping signal coverage areas against connectivity rules defining operations for connecting a client device to the wireless network as a function of the locations.

As discussed above, there are many instances in which a device switches between communicating using a first type of network, such as Wi-Fi, and a second type of network, such as a cellular network. For example, the device may initially be communicating using the first type of network. The device may then detect an interruption with the first type of network, such as when the device loses the connection. In response, the device may begin to communicate using the second type of network. In many circumstances, it may be beneficial for the device to switch between the network connections even without detecting the interruption. Based on a location of the device, the second type of network includes a better quality connection, such as with faster throughput, than the first type of network. However, if the device has yet to detect an interruption with the first type of network, the device may continue to communicate using the first type of network instead of switching to the second type of network.

As such, this disclosure describes, at least in part, techniques for selecting network protocols. For instance, system(s) may receive data from sources (e.g., user devices, sensors, network devices, etc.), where the data represents at least radio frequency (RF) information for different network protocols. For example, the RF information may be associated with a first network protocol, such as Wi-Fi, and a second network protocol, such as a cellular network protocol (e.g., <NUM>, <NUM>, <NUM>, etc.). The system(s) may then use the data to generate heatmaps for the network protocols. The system(s) generate a first heatmap representing the first network protocol and a second heatmap representing the second network protocol. The system(s) then provide the heatmaps to a user device, such as at a time of initial network attachment with the user device and/or at a later time. Using the heatmaps, the user device is able to select between using the first network protocol or the second network protocol. The user device uses the heatmaps to determine which network protocols provide the best quality connections at various locations. Based on the determinations, the user device establish connections using the network protocols.

For more details, the system(s) may initially receive the data from the sources, where the data represents the RF information. The sources may include, but are not limited to, user devices, network devices (e.g., access points), sensors, and/or any other device that is capable to measuring and/or reporting the RF information. The RF information may include measurements representing the radio characteristics detected and/or reported by the sources at various locations within an environment (e.g., a home, an apartment, a building, a business, etc.). The characteristics may include, but are not limited to, signal strengths (e.g., received signal strength indication (RSSI), reference signal received power (RSRP), reference signal received quality (RSRQ), etc.), signal to noise ratios (SNRs), throughputs, data packet drop rates, data packet retry rates, and/or any other network characteristics. The system(s) may then use the data to generate heatmaps for the different network protocols.

For example, the system(s) may generate a first heatmap associated with the first network protocol (also referred to as a "first type of network"), such as the Wi-Fi protocol, and a second heatmap for the second network protocol (also referred to as a "second type of network"), such as the cellular network protocol (e.g., <NUM> protocol). In some examples, the heatmaps represent the signal strengths at various locations within the environment. For example, the first heatmap may represent the average signal strengths at the various locations within the environment for the first network protocol and the second heatmap may represent the average signal strengths at the various locations within the environment for the second network protocol. Additionally, or alternatively, in some examples, the heatmaps represent other characteristics (e.g., the throughputs, the data packet drop rates, the data packet retry rates, etc.)) at the various locations within the environment. For example, the first heatmap may represent the average throughput at the various locations within the environment for the first network protocol and the second heatmap may represent the average throughout at the various locations within the environment for the second network protocol.

In some instances, the system(s) may generate the heatmaps for a specific environment. For example, the system(s) may generate the heatmaps for a home, an apartment, a building, a business, and/or any other type of environment. In some instances, the system(s) may generate different heatmaps for different areas of the environment. For a first example, the system(s) may generate respective heatmaps for each floor of the environment. For a second examples, the system(s) may generate respective heatmaps for each room of the environment. In some instances, the system(s) may then use the heatmaps to determine recommendations associated with the network protocols.

For instance, the system(s) may use the heatmaps to determine which network protocols to use at various locations within the environment. For example, the system(s) may determine that the user devices should use the first network protocol at first location(s) within the environment and the second network protocol at second location(s) within the environment. In some instances, the system(s) make the recommendations based on one or more of the characteristics. For a first example, the system(s) may recommend the network protocols that provide the highest signal strengths at the various locations within the environment. For a second example, the system(s) may recommend the network protocols that provide the fastest throughputs at the various locations within the environment. Still, for a third example, the system(s) may recommend the network protocols that provide the lowest data packet drop rates at the various locations within the environment.

In some instances, the system(s) may also use the heatmaps to determine which network devices (e.g., access points) to connect to at various locations within the environment. For example, the system(s) may determine that the user devices should connect to a first network device at first location(s) within the environment, a second network device at second location(s) within the environment, a third network device at third location(s) within the environment, and/or so forth. In some instances, the system(s) make the recommendations based on one or more of the characteristics. For a first example, the system(s) may recommend the network devices that provide the highest signal strengths at the various locations within the environment. For a second example, the system(s) may recommend the network devices that provide the fastest throughputs at the various locations within the environment. Still, for a third example, the system(s) may recommend the network devices that provide the lowest data packet drop rate at the various locations within the environment.

In some examples, the system(s) may determine one or more of the recommendations for different types of devices. For a first example, the system(s) may use the heatmap data to recommend the first network protocol for a first type of user device and recommend the second network protocol for a second, different type of user device. For a second example, the system(s) may use the heatmap data to recommend a first network device for a first type of user device and recommend a second, different network device for a second, different type of user device. In such examples, the system(s) may make the recommendations even when the user devices are located at the same location. As described herein, types of user devices may include, but are not limited to, computers, laptops, mobile devices, tablets, robots, and/or any other type of device.

The user devices may then use heatmap data representing the heatmaps to select network protocols while within the environment. For instance, a user device may receive the heatmap data, such as when the user device enters the environment. In some instances, the system(s) may send the heatmap data to the user device. For example, the system(s) may send the user device an Extensible Markup Language (XML) content file, a JavaScript Object Notation (JSON) content file, and/or any other type of content file that includes the heatmap data. Additionally, or alternatively, in some instances, the system(s) may send the user device an identifier, such as a Uniform Resource Identifier (URI), associated with downloading the heatmaps. The user device may then display an indication of the identifier. While displaying the indication of the identifier, the user device may receive an input selecting the identifier from a user. In response, the user device may use the identifier to download the heatmap data from one or more devices (e.g., from the system(s), from one or more other system(s), etc.).

The user device may then use the heatmap data to select network protocols while within the environment. In some instances, the user device selects the network protocols based on the locations associated with the user device within the environment. For a first example, the user device may analyze the heatmap data in order to determine which network protocol provides the highest signal strength at the location of the user device and select that network protocol. For a second example, the user device may analyze the heatmap data in order to determine which network protocol provides the faster throughputs at the location of the user device and select that network protocol. Still, for a third example, the user device may analyze the heatmap data in order to determine which network protocol provides the lowest data packet drop rate at the location of the user device and select that network protocol. While these are just a couple example techniques of the user device using the heatmap data to select a network protocol, in other examples, the user device may use one or more additional and/or alternative techniques for selecting network protocols.

In some examples, the user device may select the network protocols and/or the network devices based on the type of user device that is associated with the user device. For example, a first type of user device may use the heatmap data to select the first network protocol while a second type of user device may use the heatmap data to select the second network protocol. This may be because the first type of user device selects the network protocol that is most beneficial for the first type of user device, such as providing the best RSSI, while the second type of user device selects the network protocol that is most beneficial for the second type of user device, such as providing the fastest throughput. In such examples, the user devices may receive heatmap data that corresponds to the types of user device. For example, the system(s) may receive data from a user device and use the data to determine that the user device includes a type of user device. The system(s) may then use that determination to send, to the user device, heatmap data that is generated for that type of user device.

In some instances, the user device may use one or more sensors to determine the locations of the user device while within the environment. For example, the user device may receive location data from a Global Positioning System (GPS) sensor, where the location data represents the locations of the user device while within the environment. Additionally, or alternatively, in some instances, the user device may receive, from the system(s), location data representing the locations of the user device while within the environment. For example, the system(s) may receive from the user device and use the data to determine the locations of the user device (e.g., such as by using triangulation to determine the locations). The user device may then receive the location data from the system(s).

In some instances, the system(s) may update the heatmaps while the user device is within the environment. For example, the system(s) may continue to receive the data representing the RF information from the sources and update the heatmaps using the new RF information. In some instances, the system(s) may also update the recommendations based on the updated heatmaps. The system(s) may then send, to the user device, additional heatmap data representing the updated heatmaps. This way, the user device is able to use the updated heatmaps, which represent current characteristics of the network protocols within the environment, to select between the network protocols while within the environment.

In some instances, the user device (and/or the system(s)) may select network protocols for future periods of time while the user device is within the environment. For example, the user device (and/or the system(s)) may determine a current location of the user device, a direction at which the user device is moving, and a future location of the user device based on the current location and the direction of movement. The user device (and/or the system(s)) may then determine, using one or more of the processes described above, that the user device should communicate using a specific network protocol at that future location. As such, if the user device is currently communicating using the network protocol, then the user device may continue to communicate using the network protocol. However, if the user device is currently using a different network protocol, then the user device may switch to communicating using the network protocol. In some examples, the user device performs the switch when the user device is located at the future location. In other examples, the user device performs the switch before being located at the future location. This way, the user device is already using the best quality network protocol when arriving at the future location.

By performing the processes described herein, the user devices are able to better select network protocols for communicating while within an environment. For example, instead of measuring characteristics associated with each network protocol at a location within the environment and then selecting a network protocol based on the characteristics, a user device is provided with global characteristics for the entire environment. The user device is then able to select network protocols based on the global characteristics as well as select network protocols for future locations at which the user device will be located while moving throughout the environment.

Although the examples described herein may refer to an electronic device and/or system(s) as participating in the techniques for selecting network protocols, the techniques can generally be applied to any device or role, including an enterprise workforce scenario. Further, the techniques are generally applicable for any network of devices managed by any entity where virtual resources are provisioned. In some instances, the techniques may be performed by software-defined networking (SDN), and in other examples, various devices may be used in a system to perform the techniques described herein. The user devices by which the techniques are performed herein are a matter of implementation, and the techniques described are not limited to any specific architecture or implementation.

The techniques described herein provide various improvements and efficiencies with respect to network communications. For instance, the techniques described herein may reduce the amount of computational resource use, storage, dropped data, latency, and other issues experienced in networks due to lack of network resources, overuse of network resources, issues with timing of network communications, and/or improper routing of data. By improving network communications across a network, overall performance by servers and virtual resources may be improved. Additionally, by improving the communication across the network, user experiences are also improved since the user are provided with the best quality network connections.

Certain implementations and embodiments of the disclosure will now be described more fully below with reference to the accompanying figures, in which various aspects are shown. However, the various aspects may be implemented in many different forms and should not be construed as limited to the implementations set forth herein. The disclosure encompasses variations of the embodiments, as described herein.

<FIG> illustrates an example environment <NUM> in accordance with the present network protocol selecting concepts. The example environment <NUM> may include a cloud computing network <NUM> (e.g., network), a user device <NUM>, and one or more electronic devices <NUM>. Parentheticals are utilized after a reference number to distinguish like elements. Use of the reference number without the associated parenthetical is generic to the element. For example, <FIG> includes two instances heatmaps <NUM>(<NUM>)-(<NUM>) (which may also be referred to as just "heatmaps <NUM>").

In some examples, the environment <NUM> comprises a data center or cloud-computing network comprising servers and other network components (e.g., routers, switches, etc.) stored across multiple data centers located across geographic areas. In these instances, the cloud-computing environment may be a distributed network through which devices interact with service provided by the cloud computing network. The cloud computing network may provide on-demand availability of computing system resources, such as data storage, computing power (e.g., CPU, GPU, etc.), networking, databases, etc., without direct active management by users. In some examples, the cloud computing network may be managed and maintained by a service provider such that users do not have to invest in and maintain the computing infrastructure for their computing resource needs.

The user device <NUM> and/or electronic device(s) <NUM> may be communicatively coupled among one another and/or to various other devices via cloud computing network <NUM>. Within the example environment <NUM>, the user device <NUM>, the electronic device(s) <NUM>, and/or other devices may exchange communications (e.g., packets) via a network connection(s) to cloud computing network <NUM>, indicated by double arrow <NUM>. For instance, network connections <NUM> may be transport control protocol (TCP) network connections or any network connection (e.g., information-centric networking (ICN)) that enable the devices to exchange packets with other devices via cloud computing network <NUM>. The network connections <NUM> represent, for example, a data path between the user device <NUM> and the electronic device(s) <NUM>. For example, the user device <NUM> may be a computer, laptop, mobile device, tablet, etc., while the electronic device(s) <NUM> may be configured to provide data and/or network services to the user device <NUM>. The electronic device(s) <NUM> may or may not be a producer, a point of generation and/or origination of the data. For instance, the data may originate elsewhere for the electronic device(s) <NUM> to be able to provide to the user device <NUM>. Additionally, or alternatively, the data may pass through other network devices (e.g., router, switch) on a path from the electronic device(s) <NUM> to the user device <NUM>. It should be appreciated that the term "network connection" may also be referred to as a "network path. " The use of a cloud computing network in this example is not meant to be limiting. Other types of networks are contemplated in accordance with multi-party cloud authentication concepts.

In the example of <FIG>, the electronic device(s) <NUM> may send heatmap data <NUM> representing the first heatmap <NUM>(<NUM>) and the second heatmap <NUM>(<NUM>) to the user device <NUM>. The first heatmap <NUM>(<NUM>) may be associated with a first network protocol and the second heatmap <NUM>(<NUM>) may be associated with a second network protocol. For example, the first heatmap <NUM>(<NUM>) may be associated with a Wi-Fi protocol and the second heatmap <NUM>(<NUM>) may be associated with a cellular network protocol, such as <NUM>. However, in other examples, the first heatmap <NUM>(<NUM>) and/or the second heatmap <NUM>(<NUM>) may be associated with any other type of network protocol. While the example of <FIG> illustrates the heatmap data <NUM> as representing actual heatmaps <NUM>, in other examples, the heatmap data <NUM> may represent characteristics associated with RF information (which is illustrated in the examples of <FIG>).

As shown, the heatmaps <NUM> represent an environment <NUM> (e.g., a home, an apartment, a building, a business, etc.) and/or portion (e.g., floor, room, etc.) of the environment <NUM> for which the user device <NUM> is located. For instance, and in the example of <FIG>, the heatmaps <NUM> may represent a floor of a building for which the user device <NUM> is located, where the floor includes various rooms that are represented by the dashed lines. As shown, the first heatmap <NUM>(<NUM>) includes locations of various network devices <NUM> (although only one is labeled for clarity reasons) associated with the first network protocol, such as access points, within the environment <NUM>. Additionally, the second heatmap <NUM>(<NUM>) includes locations of various network device <NUM> (although only one is labeled for clarify reasons) associated with the second network protocol, such as Citizens Broadband Radio Service Devices (CBSDs), within the environment <NUM>. The heatmaps <NUM> also illustrate characteristics associated with the network protocols at various locations within the environment <NUM>.

For a first example, the heatmaps <NUM> may illustrate the signal strengths (e.g., average signal strengths) for the different network protocols at various locations within the environment <NUM>. In such an example, the lighter portions of the heatmaps <NUM> may indicate no or low signal strengths while the darker portions of the heatmaps <NUM> may indicate high signal strengths. For a second examples, the heatmaps <NUM> may illustrate the throughputs for the different network protocols at various locations within the environment <NUM>. In such an example, the lighter portions of the heatmaps <NUM> may indicate no or low throughputs while the darker portions of the heatmaps <NUM> may indicate high throughputs. Still, for a third example, the heatmaps <NUM> may illustrate data packet loss rates at various locations within the environment <NUM>. In such an example, the lighter portions of the heatmaps <NUM> may indicate high data packet loss rates while the darker portions may indicate no or low levels of data packet loss rates. While these are just a couple of examples of characteristics that the heatmaps <NUM> may represent, in other examples, the heatmaps may represent additional and/or alternative characteristics.

In some instances, the electronic device(s) <NUM> may send the heatmap data <NUM> to the user device <NUM>. For example, the electronic device(s) <NUM> may send the user device <NUM> an XML content file, a JSON content file, and/or any other type of content file that includes the heatmap data <NUM>. Additionally, or alternatively, in some instances, the electronic device(s) <NUM> may send the user device <NUM> an identifier, such as a URI, associated with downloading the heatmaps <NUM>. Based on receiving the identifier, the user device <NUM> may then display an indication of the identifier. While displaying the identifier, the user device <NUM> may receive an input selecting the identifier from a user. In response, the user device <NUM> may use the identifier to download the heatmap data <NUM> from one or more devices (e.g., from the electronic device(s) <NUM>, from one or more system(s), etc.).

The user device <NUM> may use the heatmap data <NUM> to select between the first network protocol and the second network protocol. For instance, the user device <NUM> may include a location component <NUM> that determines a location associated with the user device <NUM> within the environment <NUM>. In some examples, the user device <NUM> determines the location using sensor(s) <NUM>. For example, the sensors <NUM> may include a location sensor, such as a GPS sensor, that generates location data <NUM> representing the location within the environment <NUM>. Additionally, or alternatively, in some examples, the user device <NUM> may receive, from the electronic device(s) <NUM>, location data <NUM> representing the location. In such examples, the electronic device(s) <NUM> may determine the location of the user device <NUM> using one or more techniques, such as triangulation.

A network component <NUM> of the user device <NUM> may then use the heatmap data <NUM> along with the location data <NUM> to select the network protocols. For a first example, the network component <NUM> may analyze the heatmap data <NUM> in order to determine which network protocol provides the highest signal strength at the location of the user device <NUM> and select that network protocol. For a second example, the network component <NUM> may analyze the heatmap data <NUM> in order to determine which network protocol provides the faster throughputs at the location of the user device <NUM> and select that network protocol. Still, for a third example, the network component <NUM> may analyze the heatmap data <NUM> in order to determine which network protocol provides the lowest data packet drop rate at the location of the user device <NUM> and select that network protocol. While these are just a couple example techniques of the network component <NUM> using the heatmap data <NUM> to select a network protocol, in other examples, the network component <NUM> may use one or more additional and/or alternative techniques for selecting network protocols.

For an example of selecting a network protocol, the network component <NUM> may analyze the location data <NUM> and, based on the analysis, determine that the user device <NUM> is located at a location within the environment <NUM>, which is represented by indicators <NUM>. The network component <NUM> may then analyze the heatmap data <NUM> representing the first heatmap <NUM>(<NUM>) and, based on the analysis, determine that there is low signal strength associated with the first network protocol at the location. Additionally, the network component <NUM> may analyze the heatmap data <NUM> representing the second heatmap <NUM>(<NUM>) and, based on the analysis, determine that there is high signal strength associated with the second network protocol at the location. As such, the network component <NUM> may determine that the user device <NUM> should communicate using the second network protocol. In response, the user device <NUM> may continue to communicate using the second network protocol if the user device <NUM> is already communicating using the second network protocol or the user device <NUM> may establishing a connection using the second network protocol if the user device <NUM> is not already communicating using the second network protocol.

As discussed above, in some examples, the electronic device(s) <NUM> may provide the user device <NUM> with recommendations for selecting network protocols. The recommendations may indicate the type of network protocol, the network device for establishing the connection, and/or the like. In some examples, the heatmap data <NUM> may include the recommendations. For example, the electronic device(s) <NUM> may determine the recommended network protocol and/or the recommend network device at the various locations within the environment <NUM> and/or based on the type of the user device <NUM>. The electronic device(s) <NUM> may then generate the heatmap data <NUM> to include these recommendations. Additionally, or alternatively, in some examples, the electronic device(s) <NUM> may use similar processes as the user device <NUM> to determine the recommended network protocol and/or the recommended network device based on the current location of the user device <NUM> and/or the type of the user device <NUM>. The electronic device(s) <NUM> may then send, to the user device <NUM>, recommendation data <NUM> representing the recommendations.

In some instances, the electronic device(s) <NUM> may continue to receive data representing RF information and update the heatmaps <NUM> based on the new RF information. If the electronic device(s) <NUM> update the heatmaps <NUM> while the user device <NUM> is located within the environment <NUM>, then the electronic device(s) <NUM> may send, to the user device <NUM>, additional heatmap data <NUM> represented the updated heatmaps <NUM>. This way, the user device <NUM> uses the most updated heatmap data <NUM> to select the network protocols while within the environment <NUM>.

As further illustrated in the example of <FIG>, the user device <NUM> includes processor(s) <NUM>, network interface(s) <NUM>, and memory <NUM> As used herein, a processor may include multiple processors and/or a processor having multiple cores. Further, the processors may comprise one or more cores of different types. For example, the processors may include application processor units, graphic processing units, and so forth. In one instance, the processor may comprise a microcontroller and/or a microprocessor. The processor(s) may include a graphics processing unit (GPU), a microprocessor, a digital signal processor or other processing units or components known in the art. Alternatively, or in addition, the functionally described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), application-specific standard products (ASSPs), system-on-a-chip systems (SOCs), complex programmable logic devices (CPLDs), etc. Additionally, processor(s) may possess its own local memory, which also may store program components, program data, and/or one or more operating systems.

Memory may include volatile and nonvolatile memory, removable and non-removable media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program component, or other data. The memory includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, RAID storage systems, or any other medium which can be used to store the desired information and which can be accessed by a computing device. The memory may be implemented as computer-readable storage media ("CRSM"), which may be any available physical media accessible by the processor(s) to execute instructions stored on the memory. In one basic instance, CRSM may include random access memory ("RAM") and Flash memory. In other instances, CRSM may include, but is not limited to, read-only memory ("ROM"), electrically erasable programmable read-only memory ("EEPROM"), or any other tangible medium which can be used to store the desired information and which can be accessed by the processor(s).

<FIG> illustrates a component diagram with an example environment in which techniques for generating the heatmaps <NUM> may be employed, in accordance with the present concepts. The example environment <NUM> may include the cloud computing network <NUM> (e.g., network), the electronic device(s) <NUM>, user devices <NUM>(<NUM>)-(<NUM>) (also referred to as "user devices <NUM>"), network devices <NUM>(<NUM>)-(<NUM>) (also referred to as "network devices <NUM>"), and a sensor <NUM>. Parentheticals are utilized after a reference number to distinguish like elements. Use of the reference number without the associated parenthetical is generic to the element. For example, <FIG> includes six instances of user devices <NUM> and four instances of network devices <NUM>.

The network devices <NUM> may include, but are not limited to, access points, CBSDs, and/or any other device that is capable of receiving and sending data. In some instances, the network devices <NUM>(<NUM>)-(<NUM>) are associated with a first network protocol, such as a Wi-Fi protocol, and the network devices <NUM>(<NUM>)-(<NUM>) are associated with a second network protocol, such as a cellular network protocol (e.g., <NUM>). For example, the first network device <NUM>(<NUM>) may receive, from the second user device <NUM>(<NUM>), first data <NUM>(<NUM>) representing RF information measured by the second user device <NUM>(<NUM>). Additionally, the second network device <NUM>(<NUM>) may receive, from the third user device <NUM>(<NUM>), second data <NUM>(<NUM>) representing RF information measured by the third user device <NUM>(<NUM>). In some instances, the first network device <NUM>(<NUM>) and the second network device <NUM>(<NUM>) may send third data <NUM>(<NUM>) representing RF information between one another. The first network device <NUM>(<NUM>) may then send, to the electronic device(s) <NUM>, fourth data <NUM>(<NUM>) representing collected RF information from user devices <NUM> while the second network device <NUM>(<NUM>) may send, to the electronic device(s) <NUM>, fifth data <NUM>(<NUM>) representing collected RF information from the user devices <NUM>.

For another example, the third network device <NUM>(<NUM>) may receive, from the fourth user device <NUM>(<NUM>) and the fifth user device <NUM>(<NUM>), sixth data <NUM>(<NUM>) representing RF information measured by the fourth user device <NUM>(<NUM>) and seventh data <NUM>(<NUM>) representing RF information measured by the fifth user device <NUM>(<NUM>), respectively. Additionally, the fourth network device <NUM>(<NUM>) may receive, from the sixth user device <NUM>(<NUM>), eighth data <NUM>(<NUM>) representing RF information measured by the sixth user device <NUM>(<NUM>). In some instances, the third network device <NUM>(<NUM>) and the fourth network device <NUM>(<NUM>) may send ninth data <NUM>(<NUM>) representing RF information between one another. The third network device <NUM>(<NUM>) may then send, to the electronic device(s) <NUM>, tenth data <NUM>(<NUM>) representing collected RF information from user devices <NUM> while the fourth network device <NUM>(<NUM>) may send, to the electronic device(s) <NUM>, eleventh data <NUM>(<NUM>) representing collected RF information from the user devices <NUM>.

As further illustrated in the example of <FIG>, the first user device <NUM>(<NUM>) may send, to the electronic device(s) <NUM>, twelfth data <NUM>(<NUM>) representing RF information measured by the first user device <NUM>(<NUM>). In some instances, the first user device <NUM>(<NUM>) sends the twelfth data <NUM>(<NUM>) to the electronic device(s) <NUM> via a cellular network provider. Furthermore, the sensor <NUM> may measure RF information within the environment <NUM>. The RF information may be associated with the first network protocol and/or the second network protocol. The sensor <NUM> may then send, to the electronic device(s) <NUM>, thirteenth data <NUM>(<NUM>) representing the RF information.

In the example of <FIG>, in addition to the data <NUM>(<NUM>)-(<NUM>) (also referred to as "data <NUM>") representing the RF information, the data <NUM> may represent the locations of the user devices <NUM> that are measuring the RF information. For example, the first user device <NUM>(<NUM>) may be sending both the data <NUM>(<NUM>) representing the RF information measured by the first user device <NUM>(<NUM>) as the first user device <NUM>(<NUM>) is moving throughout the environment as well as data <NUM>(<NUM>) representing the locations (e.g., the geo-locations) of the first user device <NUM>(<NUM>).

The electronic device(s) <NUM> may then use the data <NUM> to generate the heatmaps <NUM>. For example, the electronic device(s) <NUM> may analyze the data <NUM> to determine the RF information for various locations within the environment <NUM>. As discussed above, the RF information may include measurements representing the radio characteristics detected and/or reported by the user devices <NUM> and/or the sensor <NUM>. The characteristics may include, but are not limited to, signal strengths (e.g., RSSI, RSRP, RSRQ, etc.), SNRs, throughputs, data packet drop rates, data packet retry rates, and/or any other network characteristics. The electronic device(s) <NUM> may then generate the heatmaps <NUM> based on the analysis.

For example, and with regard to the first network protocol, the electronic device(s) <NUM> may determine the average of the characteristics at various locations within the environment <NUM>. The electronic device(s) <NUM> may then generate the first heatmap <NUM>(<NUM>) associated with the first network protocol to represent the average of the characteristics. For example, if the first heatmap <NUM>(<NUM>) is associated with signal strengths within the environment <NUM>, then the first heatmap <NUM>(<NUM>) may represent the average signal strengths at the various locations within the environment <NUM>. The electronic device(s) <NUM> may perform similar processes for generating the second heatmap <NUM>(<NUM>) associated with the second network protocol. Additionally, and as discussed above, the electronic device(s) <NUM> may continue to receive new data <NUM> from the devices <NUM> and/or the sensor <NUM>. The electronic device(s) <NUM> may then use the new data <NUM> to update the heatmaps <NUM>.

Although the example of <FIG> illustrates six user devices <NUM>, fourth network devices <NUM>, and one sensor <NUM>, in other examples, there may be any number of user devices, network devices, and/or sensors sending data to the electronic device(s) <NUM>. Additionally, although the example above describes generating the heatmaps <NUM> to represent the average of the characteristics, in other example, the heatmaps <NUM> may represent the minimum of the characteristics, the median of the characteristics, the maximum of the characteristics, and/or the like.

<FIG> illustrates an example of first heatmap data <NUM> (which may include, and/or represent, the heatmap data <NUM>), in accordance with the present concepts. As shown, the first heatmap data <NUM> may represent location information, such as a location <NUM>, a latitude <NUM>, a longitude <NUM>, and an altitude <NUM>. The location <NUM> may indicate the area of the environment <NUM>. The area may include, but is not limited to, the floor, the room, and/or the like. The latitude <NUM>, the longitude <NUM>, and the altitude <NUM> may represent coordinates within the environment <NUM>. In some instances, the coordinates are associated with the location <NUM>. For example, the coordinates may be associated with various locations on the floor of the environment <NUM>. In other instances, the coordinates are global. For example, the coordinates may be associated with GPS coordinates.

The first heatmap data <NUM> may further represent RF information associated with network protocols. For instance, and in the example of <FIG>, the first heatmap data <NUM> may represent a Wi-Fi RSSI <NUM> and a Wi-Fi SNR <NUM> at the various locations within the environment <NUM>. The first heatmap data <NUM> may further represent a <NUM> RSRP <NUM>, a <NUM> RSPQ <NUM>, and a <NUM> SINR <NUM> at the various locations within the environment <NUM>. Moreover, the first heatmap data <NUM> may represent a mobile network operator (MNO) RSRP <NUM>, a MNO RSQP <NUM>, and a MNO SINR <NUM> at the various locations within the environment <NUM>. While the first heatmap data <NUM> in the example of <FIG> represents network protocols that include Wi-Fi, <NUM>, and MNO, in other examples, the first heatmap data <NUM> may represent additional and/or alternative network protocols.

<FIG> illustrates an example of second heatmap data <NUM>, in accordance with the present concepts. In some examples, the second heatmap data <NUM> is sent with and/or included within the first heatmap data <NUM>. In other examples, the second heatmap data <NUM> is separate from the first heatmap data <NUM>. As shown, the second heatmap data <NUM> may represent additional RF information associated with the network protocols. For instance, and in the example of <FIG>, the second heatmap data <NUM> may represent an average throughput <NUM> associated with the Wi-Fi protocol, a Wi-Fi data packet drop rate <NUM>, and a Wi-Fi data packet retry rate <NUM>. The second heatmap data <NUM> may further represent an average throughput <NUM> associated with <NUM>, a <NUM> data packet drop rate <NUM>, and a <NUM> data packet retry rate <NUM>. Moreover, the second heatmap data <NUM> may represent the average throughput <NUM> associated with the MNO.

<FIG> illustrates an example of third heatmap data <NUM>, in accordance with the present concepts. In some examples, the third heatmap data <NUM> is sent with and/or included within the first heatmap data <NUM> and/or the second heatmap data <NUM>. In other examples, the third heatmap data <NUM> is separate from the first heatmap data <NUM> and/or the second heatmap data <NUM>. As such, the third heatmap data <NUM> may represent a recommendation <NUM> for network protocols at the various locations within the environment <NUM>. The third heatmap data <NUM> may further represent a target network device <NUM> for establishing a network connection. While these are just a couple of examples of recommendations that may be provided by the electronic device(s) <NUM>, in other examples, the electronic device(s) <NUM> may provide additional and/or alternative recommendations.

<FIG> illustrates an example of selecting network protocols while the user device <NUM> is moving within the environment <NUM>, in accordance with the present concepts. For example, the user device <NUM> may receive the heatmap data <NUM> representing characteristics associated with the first heatmap <NUM>(<NUM>) and the second heatmap <NUM>(<NUM>). The user device <NUM> may then use the heatmap data <NUM> to select between network protocols over a period of time <NUM> for which the user device <NUM> is located within the environment <NUM>. For example, at a first time T(<NUM>), the user device <NUM> may determine that the user device <NUM> is located at a first location within the environment <NUM>, which is represented by the circles <NUM>. Based on being located at the first location, the user device <NUM> may select the first network protocol represented by the first heatmap <NUM>(<NUM>). This may be because the first network protocol provides the highest signal strength, the highest throughput, the lowest data packet drop rate, and/or the highest data packet retry rate at the first location.

In the example of <FIG>, the user device <NUM> may then determine a direction at which the user device <NUM> is moving. The user device <NUM> may then use the first location and the direction to determine that the user device <NUM> will be located at a second location within the environment <NUM> at a second, future time T(<NUM>), which is represented by circles <NUM>. Based on being located at the second location at the second, future time, the user device <NUM> may select the second network protocol represented by the second heatmap <NUM>(<NUM>). This may be because the second network protocol provides the highest signal strength, the highest throughput, the lowest data packet drop rate, and/or the highest data packet retry rate at the second location.

In some examples, the user device <NUM> may switch to communicating using the second network protocol before arriving at the second location at the second time. This way, the user device <NUM> will continue to have the best quality connection while moving throughout the environment <NUM>. In other examples, the user device <NUM> may switch to communicating using the second network protocol when arriving at the second location at the second time. Additionally, although the example of <FIG> describes the user device <NUM> as selecting between the network protocols, in other examples, the electronic device(s) <NUM> may perform similar processes as the user device <NUM> and send recommendations to the user device <NUM>.

<FIG> illustrates a flow diagram of an example method <NUM> for using heatmaps to select network protocols, in accordance with the present concepts. An operation <NUM> represents establishing a first connection using a first network protocol. For instance, the user device <NUM> may enter an environment. While within the environment, the user device <NUM> may establish the first connection using the first network protocol (e.g., a first type of network). In some examples, the first network protocol may include a Wi-Fi protocol, a cellular network protocol, and/or any other type of protocol.

An operation <NUM> represents receiving first heatmap data associated with the first network protocol and an operation <NUM> represents receiving second heatmap data associated with a second network protocol. For instance, the user device <NUM> may receive, from the electronic device(s) <NUM>, the first heatmap data and the second heatmap data (which in some examples, may be included in a content file). In some examples, the user device <NUM> receives the first heatmap data and/or the second heatmap data based on entering the environment and/or establishing the first connection. For example, the user device <NUM> may receive the first heatmap data and/or the second heatmap data based on the connected with a specific network device (e.g., a network device that is associated with a lobby of a building). In some examples, the user device <NUM> initially receives an identifier, such as a URI, from the electronic device(s) <NUM>. The user device <NUM> may then use the identifier to download the first heatmap data and/or the second heatmap data.

An operation <NUM> represents receiving location data associated with a user device. For instance, the user device <NUM> may receive the location data, where the location data represents a location of the user device <NUM> within the environment. In some instances, the user device <NUM> receives the location data by generating the location data using one or more sensors. In some examples, the user device <NUM> receives the location data from the electronic device(s) <NUM>.

An operation <NUM> represents analyzing the first heatmap data and the second heatmap data with respect to the location data. For instance, the user device <NUM> may analyze the first heatmap data and the second heatmap data with respect to the location data. In some examples, the analyzing may include determining, using the first heatmap data, first characteristic(s) associated with first network protocol at the location and determining, using the second heatmap data, second characteristic(s) associated with the second network protocol at the location. The user device <NUM> may then compare the first characteristic(s) to the second characteristic(s). For a first example, the user device <NUM> may compare the signal strength associated with the first network protocol to the signal strength associated with the second network protocol. For a second example, the user device <NUM> may compare the throughput associated with the first network protocol to the throughput associated with the second network protocol.

In some instances, the user device <NUM> may further determine a type of device associated with the user device <NUM> and/or one or more requirements associated with one or more applications being executed by the user device <NUM>. The user device <NUM> may then further analyze the first heatmap data and/or the second heatmap data with respect to the type of device and/or the one or more requirements.

An operation <NUM> represents determining whether to switch to communicating using the second network protocol. For instance, the user device <NUM> may determine whether to switch to communicating using the second network protocol based on the analyzing. In some instances, the user device <NUM> may determine to switch based on the first characteristic(s) and the second characteristic(s) indicating a better quality connection using the second network protocol. For a first example, the user device <NUM> may determine to switch when the second network protocol is associated with a higher signal strength than the first network protocol. For a second example, the user device <NUM> may determine to switch when the second network protocol is associated with a greater throughput than the first network protocol. Still, for a third example, the user device <NUM> may determine to switch when the second network protocol is associated with a smaller data packet drop rate than the first network protocol.

If, at operation <NUM>, it is determined not to switch to communicating using the second network protocol, then operation <NUM> represents continuing to communicate using the first connection. For instance, if the user device <NUM> determines not to switch to communicating using the second network protocol, then the user device <NUM> may continue to communicate using the first connection. However, if, at operation <NUM>, it is determined to switch to communicating using the second network protocol, then operation <NUM> represents establishing a second connection using the second network protocol. For instance, if the user device <NUM> determines to switch to communicating using the second network protocol, then the user device <NUM> may establish the second connection using the second network protocol.

It should be noted that, in some examples, the method may repeat starting back at operation <NUM>, operation <NUM>, and/or operation <NUM>. For instance, the user device <NUM> may continue to receive updated heatmap data, continue to receive location data representing new locations of the user device <NUM>, and continue to select network protocols using the new heatmap data and the new location data. It should also be noted that, in some examples, the electronic device(s) <NUM> may perform one or more of operations <NUM>-<NUM>. In such examples, the electronic device(s) <NUM> may send recommendations to the user device <NUM>.

<FIG> illustrates a flow diagram of an example method <NUM> for generating heatmaps using radio frequency information, in accordance with the present concepts. An operation <NUM> represents receiving network data representing radio frequency information from one or more sources. For instance, the electronic device(s) <NUM> may receive the network data from the one or more sources. As discussed above, the one or more sources may include, but are not limited to, user devices, network devices, sensors, and/or the like. The network data may represent RF information that is measured by the one or more sources.

An operation <NUM> represents receiving location data from the one or more sources. For instance, the electronic device(s) <NUM> may also receive the location data from the one or more sources. The location data may represent the location(s) of the one or more sources, where the location(s) are related to the radio frequency information.

An operation <NUM> represents generating, based at least on a first portion of the network data and the location data, first heatmap data associated with a first network protocol. For instance, the electronic device(s) <NUM> may use the first portion of the network data, which represents RF information associated with the first network protocol, and the location data to generate the first heatmap data. As described herein, the first heatmap data may represent characteristics associated with the first network protocol at various locations within an environment. In some instances, the first heatmap data may further represent recommendation(s) that the electronic device(s) <NUM> determine using the characteristics.

An operation <NUM> represents generating, based at least on a second portion of the network data and the location data, second heatmap data associated with a second network protocol. For instance, the electronic device(s) <NUM> may use the second portion of the network data, which represents RF information associated with the second network protocol, and the location data to generate the second heatmap data. As described herein, the second heatmap data may represent characteristics associated with the second network protocol at various locations within the environment. In some instances, the second heatmap data may further represent recommendation(s) that the electronic device(s) <NUM> determine using the characteristics.

An operation <NUM> represents sending the first heatmap data to a user device and an operation <NUM> represents sending the second heatmap data to the user device. For instance, the electronic device(s) <NUM> may send, to the user device <NUM>, the first heatmap data and the second heatmap data. In some examples, the electronic device(s) <NUM> initially send the user device <NUM> an identifier associated with downloading the first heatmap data and/or the second heatmap data. The electronic device(s) <NUM> then send the first heatmap data and/or the second heatmap data based on receiving a request from the user device <NUM>. In some examples, the electronic device(s) <NUM> initially determine that the user device <NUM> has connected to a specific network device, such as a network device associated with an entrance (e.g., a lobby) of the environment. The electronic device(s) <NUM> may then send the first heatmap data and/or the second heatmap data to the user device <NUM> via the network device.

It should be noted that, in some examples, the method <NUM> may repeat starting back at operation <NUM>. For instance, the electronic device(s) <NUM> may continue to receive new network data and use the new network data to update the first heatmap data and/or the second heatmap data. The electronic device(s) <NUM> may then send the updated first heatmap data and/or the updated second heatmap data to the user device <NUM>.

<FIG> is a computing system diagram illustrating a configuration for a data center <NUM> that can be utilized to implement aspects of the technologies disclosed herein. The example data center <NUM> shown in <FIG> includes several computers 702A-702F (which might be referred to herein singularly as "a computer <NUM>" or in the plural as "the computers <NUM>") for providing computing resources. In some examples, the resources and/or computers <NUM> may include, or correspond to, any type of networked device described herein, such as the electronic device(s) <NUM>. Although, computers <NUM> may comprise any type of networked device, such as servers, switches, routers, hubs, bridges, gateways, modems, repeaters, access points, hosts, etc..

The computers <NUM> can be standard tower, rack-mount, or blade server computers configured appropriately for providing computing resources. In some examples, the computers <NUM> may provide computing resources <NUM> including data processing resources such as virtual machine (VM) instances or hardware computing systems, database clusters, computing clusters, storage clusters, data storage resources, database resources, networking resources, and others. Some of the computers <NUM> can also be configured to execute a resource manager <NUM> capable of instantiating and/or managing the computing resources. In the case of VM instances, for example, the resource manager <NUM> can be a hypervisor or another type of program configured to enable the execution of multiple VM instances on a single computer <NUM>. Computers <NUM> in the data center <NUM> can also be configured to provide network services and other types of services.

In the example data center <NUM> shown in <FIG>, an appropriate local area network (LAN) <NUM> is also utilized to interconnect the computers 702A-702F. It should be appreciated that the configuration and network topology described herein has been greatly simplified and that many more computing systems, software components, networks, and networking devices can be utilized to interconnect the various computing systems disclosed herein and to provide the functionality described above. Appropriate load balancing devices or other types of network infrastructure components can also be utilized for balancing a load between data centers <NUM>, between each of the computers 702A-702F in each data center <NUM>, and, potentially, between computing resources in each of the computers <NUM>. It should be merely illustrative and that other implementations can be utilized.

In some examples, the computers <NUM> may each execute one or more application containers and/or virtual machines to perform techniques described herein. For instance, the containers and/or virtual machines may serve as server devices, user devices, and/or routers in the cloud computing network <NUM>.

In some instances, the data center <NUM> may provide computing resources, like application containers, VM instances, and storage, on a permanent or an as-needed basis. Among other types of functionality, the computing resources provided by a cloud computing network may be utilized to implement the various services and techniques described above. The computing resources <NUM> provided by the cloud computing network can include various types of computing resources, such as data processing resources like application containers and VM instances, data storage resources, networking resources, data communication resources, network services, and the like.

Each type of computing resource <NUM> provided by the cloud computing network can be general-purpose or can be available in a number of specific configurations. For example, data processing resources can be available as physical computers or VM instances in a number of different configurations. The VM instances can be configured to execute applications, including web servers, application servers, media servers, database servers, some or all of the network services described above, and/or other types of programs. Data storage resources can include file storage devices, block storage devices, and the like. The cloud computing network can also be configured to provide other types of computing resources <NUM> not mentioned specifically herein.

The computing resources <NUM> provided by a cloud computing network may be enabled in one embodiment by one or more data centers <NUM> (which might be referred to herein singularly as "a data center <NUM>" or in the plural as "the data centers <NUM>"). The data centers <NUM> are facilities utilized to house and operate computer systems and associated components. The data centers <NUM> typically include redundant and backup power, communications, cooling, and security systems. The data centers <NUM> can also be located in geographically disparate locations. One illustrative embodiment for a data center <NUM> that can be utilized to implement the technologies disclosed herein will be described below with regard to <FIG>.

<FIG> is a computer architecture diagram showing an illustrative computer hardware architecture for implementing a server computing device <NUM> that can be utilized to implement aspects of the various technologies presented herein. The electronic device(s) <NUM>, discussed above, may include some or all of the components discussed below with reference to the server computing device <NUM>.

To begin, the server computer <NUM> can be standard tower, rack-mount, or blade server computers configured appropriately for providing the computing resources described herein. As mentioned above, the computing resources provided by a cloud computing network, data center, or the like can be data processing resources such as VM instances or hardware computing systems, database clusters, computing clusters, storage clusters, data storage resources, database resources, networking resources, and others. Some of the servers <NUM> can also be configured to execute a resource manager capable of instantiating and/or managing the computing resources. In the case of VM instances, for example, the resource manager can be a hypervisor or another type of program configured to enable the execution of multiple VM instances on a single server computer <NUM>. Server computers <NUM> in a data center can also be configured to provide network services and other types of services.

The server computer <NUM> includes a baseboard <NUM>, or "motherboard," which is a printed circuit board to which a multitude of components or devices can be connected by way of a system bus or other electrical communication paths. In one illustrative configuration, one or more central processing units (CPUs) <NUM> operate in conjunction with a chipset <NUM>. The CPUs <NUM> can be standard programmable processors that perform arithmetic and logical operations necessary for the operation of the computer <NUM>.

The chipset <NUM> provides an interface between the CPUs <NUM> and the remainder of the components and devices on the baseboard <NUM>. The chipset <NUM> can provide an interface to a RAM <NUM>, used as the main memory in the computer <NUM>. The chipset <NUM> can further provide an interface to a computer-readable storage medium such as a read-only memory (ROM) <NUM> or non-volatile RAM (NVRAM) for storing basic routines that help to startup the computer <NUM> and to transfer information between the various components and devices. The ROM <NUM> or NVRAM can also store other software components necessary for the operation of the computer <NUM> in accordance with the configurations described herein.

The computer <NUM> can operate in a networked environment using logical connections to remote computing devices and computer systems through a network, such as a local area network <NUM>. The chipset <NUM> can include functionality for providing network connectivity through a Network Interface Card (NIC) <NUM>, such as a gigabit Ethernet adapter. The NIC <NUM> is capable of connecting the computer <NUM> to other computing devices over the network. It should be appreciated that multiple NICs <NUM> can be present in the computer <NUM>, connecting the computer to other types of networks and remote computer systems.

The computer <NUM> can be connected to a storage device <NUM> that provides non-volatile storage for the computer. The storage device <NUM> can store an operating system <NUM>, programs <NUM>, and data, which have been described in greater detail herein. The storage device <NUM> can be connected to the computer <NUM> through a storage controller <NUM> connected to the chipset <NUM>. The storage device <NUM> can consist of one or more physical storage units. The storage controller <NUM> can interface with the physical storage units through a serial attached SCSI (SAS) interface, a serial advanced technology attachment (SATA) interface, an FC interface, or other type of interface for physically connecting and transferring data between computers and physical storage units.

The computer <NUM> can store data on the storage device <NUM> by transforming the physical state of the physical storage units to reflect the information being stored. The specific transformation of physical state can depend on various factors, in different embodiments of this description. Examples of such factors can include, but are not limited to, the technology used to implement the physical storage units, whether the storage device <NUM> is characterized as primary or secondary storage, and the like.

For example, the computer <NUM> can store information to the storage device <NUM> by issuing instructions through the storage controller <NUM> to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit. Other transformations of physical media are possible without departing from the scope of the present description, with the foregoing examples provided only to facilitate this description. The computer <NUM> can further read information from the storage device <NUM> by detecting the physical states or characteristics of one or more particular locations within the physical storage units.

In addition to the mass storage device <NUM> described above, the computer <NUM> can have access to other computer-readable storage media to store and retrieve information, such as program modules, data structures, or other data. It should be appreciated by those skilled in the art that computer-readable storage media is any available media that provides for the non-transitory storage of data and that can be accessed by the computer <NUM>. In some examples, the operations performed by the computer <NUM>, and or any components included therein, may be supported by one or more devices similar to computer <NUM>.

By way of example, and not limitation, computer-readable storage media can include volatile and non-volatile, removable and non-removable media implemented in any method or technology. Computer-readable storage media includes, but is not limited to, RAM, ROM, erasable programmable ROM (EPROM), electrically-erasable programmable ROM (EEPROM), flash memory or other solid-state memory technology, compact disc ROM (CD-ROM), digital versatile disk (DVD), high definition DVD (HD-DVD), BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information in a non-transitory fashion.

As mentioned briefly above, the storage device <NUM> can store an operating system <NUM> utilized to control the operation of the computer <NUM>. According to one embodiment, the operating system comprises the LINUX operating system. According to another embodiment, the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation of Redmond, Washington. According to further embodiments, the operating system can comprise the UNIX operating system or one of its variants. It should be appreciated that other operating systems can also be utilized. The storage device <NUM> can store other system or application programs and data utilized by the computer <NUM>.

In one embodiment, the storage device <NUM> or other computer-readable storage media is encoded with computer-executable instructions which, when loaded into the computer <NUM>, transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the embodiments described herein. These computer-executable instructions transform the computer <NUM> by specifying how the CPUs <NUM> transition between states, as described above. According to one embodiment, the computer <NUM> has access to computer-readable storage media storing computer-executable instructions which, when executed by the computer <NUM>, perform the various processes described above with regard to <FIG>. The computer <NUM> can also include computer-readable storage media having instructions stored thereupon for performing any of the other computer-implemented operations described herein.

The server computer <NUM> may also store, in the storage device <NUM>, a heatmap component <NUM>. The heatmap component <NUM> may be configured to analyze network data <NUM> (which may include, and/or represent, the data <NUM>) received from one or more sources (e.g., the user devices <NUM>, the network devices <NUM>, the sensor <NUM>, etc.). Based on the analysis, the heatmap component <NUM> may be configured to generate heatmap data <NUM> representing heatmaps for different network protocols. In some instances, the heatmap data <NUM>, the heatmap data <NUM>, the heatmap data <NUM>, and/or the heatmap data <NUM> may include at least a portion of the heatmap data <NUM>.

As further illustrated in the example of <FIG>, the server computer <NUM> may also store, in the storage device <NUM>, a recommendation component <NUM>. The recommendation component <NUM> may use location data <NUM> representing the locations of user devices in order to recommend network protocols and/or network devices for the user devices. The server computer <NUM> may then send recommendation data <NUM> representing the recommendations to the user devices.

In summary, this disclosure describes techniques for selecting network protocols using heatmaps. For instance, a system may receive radio frequency information from one or more sources located within an environment. The system may then generate heatmaps using the radio frequency information, where the heatmaps represent characteristics associated with different network protocols. The characteristics may include signal strengths, throughputs, data packet drop rates, data packet retry rates, and/or the like for various locations within the environment. A user device may then receive the heatmaps from the system. Using a location of the user device and the heatmaps, the user device may determine to communicate using a network protocol from the different network protocols. The user device may then establish a connection using the network protocol.

While the invention is described with respect to the specific examples, it is to be understood that the scope of the invention is not limited to these specific examples. Since other modifications and changes varied to fit particular operating requirements and environments will be apparent to those skilled in the art, the invention is not considered limited to the example chosen for purposes of disclosure, and covers all changes and modifications which do not constitute departures from the scope of this invention.

Claim 1:
An electronic device (<NUM>) operable to communicate using a first network protocol or a second network protocol, wherein the first and second network protocols are different, the electronic device (<NUM>) comprising:
one or more processors (<NUM>); and
one or more non-transitory computer-readable media (<NUM>) storing instructions that, when executed by the one or more processors (<NUM>), cause the electronic device (<NUM>) to perform operations comprising:
receiving (<NUM>), from one or more devices, first heatmap data (<NUM>(<NUM>)) associated with the first network protocol;
receiving (<NUM>), from the one or more devices, second heatmap data (<NUM>(<NUM>) associated with the second network protocol;
receiving (<NUM>) location data (<NUM>) associated with the electronic device (<NUM>);
determining (<NUM>,<NUM>), based at least in part on the first heatmap data, (<NUM>(<NUM>) the second heatmap data (<NUM>(<NUM>)), and the location data (<NUM>), whether using the first network protocol or the second network protocol will provide a better quality connection for the electronic device (<NUM>) at a location; and
establishing (<NUM>) a connection using the network protocol determined to provide the better quality connection at the location,
wherein determining whether using the first network protocol or the second network protocol will provide a better quality connection of the electronic device (<NUM>) at a location comprises at least:
determining, based at least in part on the first heatmap data (<NUM>(<NUM>)) and the location data (<NUM>), a first characteristic associated with the first network protocol at a location within an environment;
determining, based at least in part on the second heatmap data (<NUM>(<NUM>)) and the location data (<NUM>), a second characteristic associated with the second network protocol at the location within the environment; and
determining whether to communicate using the first network protocol or the second network protocol based at least in part on the first characteristic and the second characteristic.