Frequency scanning in wireless networks

The disclosed technology provides a system for scanning frequency channels that reduces the number of frequency channels scanned from among all the possible frequency channels that a wireless communication device can operate on. The wireless communication device uses historical data on last successful connection together with device data metrics from the last successful connection to determine a probability of successful connection for each of the potential frequency channels. The wireless communication device then ranks the probability associated with each frequency channel to determine a frequency scanning order that results in fewer frequencies being scanned before an appropriate channel is identified.

BACKGROUND

One of the first—and key—steps a wireless communication device performs before it can start to communicate on a wireless communication network is frequency scanning. Frequency scanning is where a wireless communication device, such as a mobile phone, searches for signals over a range of frequencies. The wireless receiver in the mobile phone automatically tunes to select frequencies and searches for pre-determined signals, for example, synchronization signals. If the desired signal is not found on that frequency channel, the phone retunes the receiver to another band of frequencies and again searches for the desired signal, repeating this process until it finds an appropriate signal having the desired characteristics and quality.

For wideband communication channels, such frequency scanning can be time consuming and power hungry. For example, 4G LTE has over 60 designated frequency bands, with more being continuously being added. These frequency bands range from as low as 450 MHz (LTE Band 31) or 600 MHz (LTE Band 71) to as high as around 6 GHz (e.g., LTE Band 255 for Licensed Assisted Access or LTE Band 47 for V2X, both operating at 5GHz). Furthermore, each LTE band is divided into channels of various sizes and different operators can be licensed to operate on different sized channels in different bands in different geographic areas (spatial locations). Additionally, due to the desire for global roaming of LTE user equipment, many devices support multiple bands which requires a device to potentially scan over many different bands to find synchronization signals required for the device to synchronize to the network. Newer networks, such as 5G New Radio (NR) further introduces new bands including wide millimeter wave bands at and above 30 GHz.

Other wireless communication systems can also operate on different frequency bands covering a wide range of frequencies. For example, Spectrum Access Systems (SAS) compatible devices will operate in the U.S. in the 150 MHz CBRS (Citizens Broadband Radio Service) band from between 3550 MHz and 3700 MHz. This 150 MHz band may be divided into several channels, for example, 5 MHz, 10 MHz, and 20 MHz channels. Although a CBSD (CBRS Device) can obtain its frequency allocation from the SAS controller via an out-of-band channel (e.g., the Internet), the EUD (End user Device) such as a handset or CPE (customer premise equipment) communicating through the CBSD scans different frequency channels to determine the frequency that the corresponding CBSD is operating on. WLAN systems can also operate on different bands including sub-1 GHz bands (e.g., TV White space radios compatible with IEEE 802.11af or HaLow/IoT radios compatible with IEEE 802.11ah), 2.4 GHz bands (e.g., High Throughput IEEE 802.11n radios), 5 GHz bands (e.g., Very High Throughput IEEE 802.11ac radios), and mmWave radios operating on 60 GHz bands (e.g., WiGig IEEE 802.11ad radios).

DETAILED DESCRIPTION

Although some wireless standards such as LTE attempt to minimize the power consumed by a device performing frequency scans (e.g., by identifying a “coarse” primary synchronization signal before attempting to identify a “fine” secondary synchronization signal), the device nonetheless consumes lots of power doing this for the different potential frequency bands where the synchronization signals can reside. It is therefore desirable to have an intelligent device scanning algorithm to enable the device to efficiently scan the wideband channels to minimize power consumption particularly for battery-operated equipment. These and other problems are solved by the present system.

The disclosed technology provides an improved method for scanning frequency channels. The technology is adapted to operate in various types of wireless communication systems, operating in various frequency bands. As disclosed below, a wireless communication device determines an efficient order in which to scan frequency channels such that the frequency scanning order minimizes the device's power consumption by reducing the number of frequency channels scanned from among the device's available frequency channels.

FIG. 1shows a representative environment100in which the disclosed technology intelligently scans frequency channels. In the environment100, an example arrangement of wireless base stations110,111,112,113,114, and115can communicate with a wireless communication device130. Depending on the wireless technology in which the wireless communication device130operates, the wireless base stations110-115can comprise enhanced Node Bs (eNBs) for 4G LTE networks, ng-eNB or gNB (next generation nodeB) for 5G New Radio (5G NR) networks, Access Points (AP) for IEEE 802.11 WLAN networks, CBSDs (CBRS Devices) for SAS/CBRS networks, among others. Wireless communication device130can be a mobile device such as a handset, mobile phone or user equipment (UE), a tablet or laptop, an embedded telemetry module in a vehicle, an autonomous or semi-autonomous vehicle, an Internet of Things (loT) device, etc. Wireless communication device130can connect to a wireless network via a trusted radio access network (RAN) or an untrusted RAN. A single device130can can use one or both types of RANs. The RANs can use any wireless communications and data protocol or standard, such as GSM, TDMA, UMTS, EVDO, LTE, GAN, UMA, Code Division Multiple Access (“CDMA”) protocols (including IS-95, IS-2000, and IS-856 protocols), Advanced LTE or LTE+, Orthogonal Frequency Division Multiple Access (“OFDM”), General Packet Radio Service (“GPRS”), Enhanced Data GSM Environment (“EDGE”), Advanced Mobile Phone System (“AMPS”), WiMAX protocols (including IEEE 802.16e-2005 and IEEE 802.16m protocols), Wireless Fidelity (“WiFi”), High Speed Packet Access (“HSPA”), (including High Speed Downlink Packet Access (“HSDPA”) and High Speed Uplink Packet Access (“HSUPA”)), Ultra Mobile Broadband (“UMB”), SUPL, SAS/CBRS, 5G New Radio (NR), and/or the like.

High throughput, low latency, wireless networks, for example next generation gigabit LTE and 5G NR networks, provide for dense base station deployments where a device130in a geographic location can access the network via multiple available base stations or cells. These base stations or cells can be operated by different network operators and thus the device130may not have access to all the associated networks, or the device130can have roaming access to those networks on a secondary basis based on a roaming partner priority.

Considering, for example, where the device130, belongs to a network operator A having base stations111and114, the device130can also receive compatible signals from base stations110and113operated by network operate B, and base stations112, and115operated by network operator C if these base stations are also broadcasting the same wireless technology signals, for example, LTE or 5G NR synchronization signals. The power level received at the device130from each of operator's B and operator's C base stations can be stronger than the power level the device receives from network operator A's base stations111and114. As discussed below, device130can consume a large amount of power when scanning for signals from each of these base stations operating in different frequency bands and channels. Therefore, device130can prioritize the frequency channels associated with the multiple base stations based on which frequency channel can most likely result in the best connection and set an order to scan the different frequency channels based on this prioritization thereby reducing the time and power required to arrive at the frequency channel that results in the best connection. This is prioritization and ordering is discussed further below.

FIG. 2is a block diagram of a representative wireless communication device130that can perform frequency scanning according to implementations discussed below. Device130typically includes one or more antennas210a,210b, and210cfor transmit/receive diversity, multiple-input/multiple-output (MIMO), and/or beamforming. It can also include a switching block or matrix220, to switch one or more of the antennas210a-cto corresponding duplexers, filters, and impedance matching networks (not shown), and to a corresponding receive chain such as receive chain240aor240b. Device130typically also includes a processor250for performing, for example, functions related to the wireless standard's protocol stack, including tuning the transceiver to perform frequency scanning. For example, to scan a frequency channel at 600 MHz, processor250can instruct switching block220to enable antenna210awhich can be tuned to 600 MHz (e.g., low band LTE Band71); to scan a frequency channel at 3.5 GHz, processor250can instead instruct switching block220to enable antenna210cwhich can be tuned to 3.5 GHz (e.g., high band LTE Band48/ CBRS band). When switching block220enables antenna210a, processor250can also enable low noise amplifier (LNA)230ain receive chain240awhich can be configured to amplify signals in the 600 MHz band, and further enable down-conversion mixer242a, configured to down-convert the 600 MHz band signal to baseband, for example. On the other hand, when switching block220enables antenna210c, processor250can also enable LNA230bwhich can be optimized for the 3.5GHz band and enable down-conversion mixer242bconfigured to down-convert the 3.5 GHz signal. The switching by switching block220, and processing of the received signals in receiver chains240aand240bsuch as signal amplification, down-conversion, digitization, etc. consumes large amounts of power.

Device130also typically includes a memory255which can be a non-volatile memory for storing the instructions that processor250executes, as well as storing configuration settings of device130. Memory255can be, for example, a hard drive, flash memory, memory card, and/or a Subscriber Identity Module (SIM), Universal SIM (USIM), or embedded SIM (eSIM), etc. Device130also includes a power supply such as a battery (not shown). As will be described further below, processor250is configured to control the order in which switching block220, and receive chains240aand240b, tune to different frequency bands and channels to receive signals from the different frequency bands and channels. This frequency tuning order is such that device130arrives at the desired frequency channel fastest and with the lowest amount of power consumed from the power supply.

In some implementations, configurable multimode multiband circuit blocks such as configurable multimode multiband LNA are used in lieu of multiple LNAs and can be configured by processor250to receive signals from different frequency bands. Before the device130can communicate with one of the base stations110-115(inFIG. 1), it must scan for signals transmitted by the base stations, including synchronization signals. Each base station potentially operates at a different frequency channel. Because the device130can be unaware of the frequency channels the base stations are operating on, in one implementation, the device scans all possible frequency channels that the device can operate on. In some implementations, the processor250obtains from memory255, the frequency channels that device130can operate on; for example, for 4G LTE or 5G NR, a list of bands supported by device130. Additionally, or alternatively, processor250can obtain from memory255(e.g., a USIM module) a list of frequencies supported by the operator and/or a list of frequencies supported by roaming partners, including the preference of one roaming partner over another. Using these lists of frequencies, the processor250can configure the switching matrix220via a channel262to enable one or more of the antennas210a,201b,210ctuned to the first frequency channel on the list. Processor250can configure, the LNAs230a,230b, via a channel264, to enable the LNA corresponding to the selected frequency band. Processor250can also configure a frequency synthesizer245, via a channel266, to generate an appropriate local oscillator frequency needed to down-convert the received signal on the corresponding receive chain. As discussed in the background section above, for technologies such as LTE or 5G NR with wide frequency bands, this frequency scanning process is power intensive because at each scan frequency, the active components required to select, amplify, down-convert, digitize, demodulate, decode, and process the signals in the frequency channel all consume power.

FIG. 3Ais a prior art diagram300A to help explain how the disclosed technology overcomes the problems disclosed above, and improves on the prior art procedure for scanning frequencies. This procedure can be stored as software or firmware in non-volatile memory, such as memory255. At block305A, device130starts an initial scan. This can be initiated by, for example, a power up of the device130or a wakeup from sleep or idle mode when the device had been disassociated or unsynchronized from the wireless communication network. For example, in LTE systems this can be a cell selection or a cell reselection procedure. At block307, for new scans, the processor250tunes device130to a first frequency of the set of frequencies that the device can operate on (block310). At block320A, device130acquires any signals received on the first frequency. For example, for LTE systems this can be primary and secondary synchronization signals. At block325A, the processor250determines if the signals received are acceptable, i.e., if they are of the correct type (e.g., for LTE, the primary synchronization signal must be a Zadoff-Chu signal), and determines if the received signal has sufficient power.

If the signal is not acceptable, the processor250initiates a new scan at block307, and tunes the device130to the next available frequency channel at block312. However, if at block325A, processor250determines that the signal received is acceptable, the device130attempts to associate with or connect to the network at block330A and, if it associates acceptably at block335A, it communicates on the network, at block395A, on that selected frequency. However, if device130fails to associate with the network, the process of scanning a next frequency repeats until device130is associates with the network.

In devices employing prior art frequency scanning procedures, the list of frequencies that device130iterates through, and the order in which it iterates through those frequencies, is predetermined and static (for example, is stored in memory255). This leads to a large power consumption because of the higher probability that more iterations will be required before the device130finds an appropriate frequency. The larger number of iterations are because of the large search space for wideband channels, and the potentially large number of unaffiliated operators using the same technology in the same geographic area and broadcasting on frequencies that the multiband device130supports. That is, even when a signal is detected at block325from one of the base stations110-115(inFIG. 1), it may not be the signal required or desired for communication by the device130, thereby increasing the number of required frequency scans.

For example, where the device130is an LTE device and the base stations110-115(inFIG. 1) broadcast LTE synchronization signals, the received signal power of the synchronization signals from base station (enB)115, corresponding to network operator C, can be stronger than that from base stations111or114corresponding to the desired network operator A. After scanning through the listed frequencies in the prescribed order, device130can acquire the signal from base station115, and, after decoding a system information block type 1 (SIB1), determine that a PLMN (Public Land Mobile Network) identity saved in memory255(e.g., in a USIM) does not match the one transmitted by base station115. Device130can then move on to decode a SIB1 of the next strongest signal (for example, base station113, followed by base station111) until it finds a match with a signal from base station111. However, even though base station111corresponds to the desired network operator A, device130can continue the cell selection procedure if the signal strength of the signal from base station111is not strong enough and a stronger signal, for example from base station114, exists. As discussed further below, device130can implement an improved technique to scan the signals from the different base stations in its vicinity to reduce the number of frequency scans required.

FIG. 3Bis a representative flow diagram300B showing an improved procedure for scanning frequencies. At block313, device130tunes to a frequency channel with the highest probability of a successful connection. At block320B, device130acquires signals transmitted in the tuned frequency channel. At block325B, if the acquired signals are acceptable, device130attempts, at block330B, to associate with the network. If the association is successful at block335B, device130connects to the network at block395B using the frequency tuned at block313. However, if at block325B the acquired signal is not acceptable (e.g., the signal quality is below a predetermined threshold or does not mean other signal criteria such as type of sequence), or at block335B device130is not able to associate with the network using the parameters derived from the signal acquired at block320B (e.g., signal is from an unaffiliated operator), device130tunes to a frequency channel with the second highest probability of a successful connection at block313and repeats the process described above.

As further explained in relation toFIG. 4below, because at block313device130starts with the frequency channel that is predicted to have the highest likelihood of a successful connection, fewer or no subsequent iterations can be required thereby reducing the power consumption associated with frequency scans. Also, because the sequence of frequency channels to scan is ordered based on the relative likelihood that the signals acquired from each of the scanned frequency channels will be acceptable, even when the first scanned frequency does not yield acceptable signals, the iterations over other possible frequency channels quickly converges to a frequency channel that yields acceptable signals. Scanning through a device-data-metric-dependent ordered list of frequencies contrasts with prior art frequency scanning procedures described in relation toFIG. 3Awhere a blind search through a static list or predetermined list of frequency channels results in iterating over a larger number of frequency channels with a low probability of a successful connection for many of the frequency channels.

In some implementations, the frequency specified at block313is computed on a node outside device130and transmitted to device130when it successfully connects to the network. That is, device130can start by scanning all available frequencies, and after each successful connection can obtain a new frequency scanning order from the external node that it can use for its next connection attempt.

FIG. 4is a representative flow diagram400showing a procedure for predicting or optimizing an order to scan a subset of frequency channels, where the order minimizes the power consumption of device130, as well as minimizes the time required for device130to synchronize to, and start communication on, the network. At block410device130receives an indication of the set of frequency channels that it can operate on. This indication can be based on the frequency bands that the radio transceiver can operate on, as well as the frequency bands that the network operator (together with its roaming partners) can operate on. This information can be preprogrammed into device130's non-volatile memory (e.g. memory255) as a predetermined priority list, or can be stored in device130's memory on a successful connection. This operator-specified frequencies and frequency priority list can be based on operator-specific criteria and preferences including, for example, revenue potential for different channels for example for Priority Access Licensees (PAL) in CBRS/SAS systems that may be sublicensing their licensed spectrum.

At block420, device130receives an indication of the last frequencies that it successfully communicated on, as well as the last frequencies in which connection attempts were not successful. This indication helps130determine which frequencies are likely to result in a successful connection attempt or communication (i.e., those that it already successfully communicated on), and those frequencies that are likely to result in a failed connection or failed communication (i.e., those frequencies in which connection attempts or communication was previously not successful).

Device130also receives, at block430, an indication of device data metrics or device parameters corresponding to the last successful and last unsuccessful connection. In some implementations, these device data metrics can include the geographic location for the last connection attempt or last successful communication, a day or time, a quality of service requested for the last connection attempt, an actual quality of service achieved in the last communication, a network congestion level, a device capability, a network slice in which the device is operating, etc. The device data metrics include any parameters related to the performance, location, and state of the device or wireless environment in which the device can operate that can affect the device's ability to connect to the wireless network using a specific frequency channel. For example, device130can store a list of the last N frequency channels used, the GPS coordinates of the device when those frequencies were used, what day/time they were used, the quality of service that was requested (e.g., streaming video, voice, large file download), the quality of service that was achieved when using those frequency channels (e.g., packet error rate, call drop rate, throughput, latency, etc.), the power mode of the device130during the communication (e.g., if the device was operating at a reduced power mode because of low battery condition), and any other state of device130that can be available such as if device130was in a high speed train or in a poor coverage indoor environment.

At block440, device130uses the device data metrics and the knowledge of the frequencies resulting in successful/unsuccessful connection attempts to predict what combinations of device data metrics favor one frequency channel over another. In one implementation, device130can compute or determine and assign each of the potentially useable frequency channels received in block410to a probability indicating how likely it is to yield a successful connection given selected device data metrics. In another implementation, the data metric itself can be the indicator of successful communication and the priority can thus be based on such data metric, for example, a signal-to-noise ratio or a packet error rate associated with a frequency channel. Various probabilities based on frequencies, device data metrics, connection attempts, etc. are possible. In some implementations, these probabilities are additionally based on operator-specified frequency priority lists.

For example, if at block410the device130received an indication that it can operate on frequencies f1, f2, f3, f4, f5, f6, f7, f8, f9, and f10, device130can, at block440, compute (based on the device data metrics) that the probability of a successful connection using frequency f3at location1is 99%, but the probability of a successful connection using the same frequency f3at location2is 5%. Alternatively, it can compute that the probability of successfully using frequency f3at location1between 7:00 PM and 6:00 AM is 96%, but the probability of successfully using frequency f4at the same times and location is 97%. Additionally, it can determine that frequencies f9and f10are Unlicensed National Information Infrastructure (U-NII) channels reserved for Licensed Assisted Access (LAA) carrier aggregation, and have high probability of connection success when device130is at location3(owner's home/office), but that f10has a higher probability of successful connection because it has had less congestion than f9in the last several connection attempts. The device130can also determine that frequency f6and f8are operated by a roaming partner but, from a list stored in the memory255on device130, determine that the roaming partner operating at frequency f8is favored over the one operating at frequency f6(for example because of closer network compatibility, offered services, or lower roaming rates).

In some implementations, device130can also use criteria pertaining to the signal quality of the signals in each of the frequency channels to define “successful connection” or connection quality. For example, the device130can determine that although f1and f2otherwise have the same connection-success probability given the device data metrics, previous connections using frequency f1resulted in a higher quality of service or better connection quality (e.g., packet error rates, bit error rate, connection latency, retransmission rates, handoffs, etc. lower than a predetermined threshold; or signal to interference plus noise ratio, throughput, etc. being higher than a predetermined threshold). The device130can therefore prioritize frequency f1higher than frequency f2. In some implementations, however, the decision on what probability to assign to different frequency channels is based on a requested service class. For example, if a real-time audio streaming connection is requested, a frequency channel that would result in a more reliable link with lower latency can be prioritized higher (and given a higher probability) than a frequency channel offering fast download speeds (for example, high bandwidth channels on upper frequency bands). The device capability (such as the UE category and services that the UE supports) can also be used to include frequency channels, exclude frequency channels, or prioritize frequency channels over others. For example, a data-only device can skip scanning low bandwidth frequency channels reserved by the operator for voice-services.

Alternatively, or additionally, the data metrics and prior knowledge on conditions for successful connection can be used as inputs to a machine learning algorithm either implemented on the device130or on the network (and sent to device130after a successful connection). The machine learning algorithm can take the complex data inputs and discover hidden insights from the historical relationships between the scanned frequencies and corresponding data metrics. These hidden insights can allow the machine learning algorithm to predict what would be the most efficient frequency scanning order given a set of device data metrics. In some implementations this prediction can be dynamically generated in real-time as more historical device data metric data is made available as an input to the machine learning algorithm. That is, the machine learning algorithm can change the scanning order midstream as it learns and predicts more optimal scanning orders.

For example, at block450when device130receives an indication on current device data metrics in response to a new scan request (e.g., when device powers on initially or roams to a new area and needs to camp on a new base station), the machine learning algorithm can predict at block460a probability for a successful connection on each of the available frequencies based on the current device data metrics, and at block470can send an indication of a frequency scanning order based on the predictions. The current device data metrics include a set of device data metrics corresponding substantially to a time the request for a communication by the wireless communication device was made and enables the algorithm to correlate the condition or settings in device130corresponding to when a frequency scan was successful or unsuccessful. Thus, if device130was at location1and initiated a new scan at, say 8:00 PM, the machine learning algorithm can instruct device130to start scanning frequency f4first (which has a 97% probability of a successful connection), followed by frequency f3(which has a 96% probability). The machine learning algorithm can omit frequency f7from the scan list if it determines that the probability of a successful connection is below a certain threshold. That is, out of the ten available frequency channels as given in the example above, the machine learning algorithm can determine that only four can be scanned, and the order in which these four frequencies are scanned can be based on prior history as well as current device metrics. This eliminate six power-hungry frequency scan iterations, as well as the scenario discussed above where a signal is detected but is not of sufficient quality to sustain a reliable connection, resulting in it being discarded and another scan initiated. In some implementations, the frequency scanning order corresponds to the set of probabilities where frequencies with higher probability values are ranked higher in the set of probabilities.

In some implementations, the algorithm in blocks460and470can omit some low probability frequencies if, for example, the device130's battery state (e.g., battery charge level is low or below a predetermined power level, battery temperature is high, battery capacity is low, etc.) and to conserve power it is deemed better to scan fewer frequencies, even if such a scan can miss a stronger signal on an omitted frequency. Additionally, in some implementations, the output of the machine learning algorithm can based on the device category or 5G NR network slice for the device's use case. For example, a low power, bandwidth reduced, low complexity, coverage enhanced (BL/CE) loT (Internet of Things) device can prioritize low frequency bands that offer better coverage and reliability at lower throughput above high frequency bands. Conversely, an autonomous vehicle 5G NR network slice can prioritize frequency channels offering lower latency and higher reliability, and order scans based on such prioritization. In other implementations, the device data metrics can be further ranked and prioritized to assign different weights to the probabilities computed at block440, for example, to break a tie in computed probabilities. This ranking can be, for example, related to device130's category or requested service. For example, if two frequencies result in an equal probability for a successful connection, and device130is an loT device, the lower of the two frequencies can be weighted to indicate a higher probability because lower frequencies typically lead to better coverage given the resulting lower path loss at lower frequencies.

At block480, device130collects and stores data on successful and unsuccessful connection attempts, and the device data metrics associated with those connections, including data metrics relating to the quality of any successful connections. This stored data is then made available to device130at blocks420and430.This feedback is used to enhance the predictions of the machine learning algorithm where the predictions become more accurate as more historical data is made available as an input to the algorithm.

In some implementations, the algorithms described above in relation to blocks410-460are not implemented in device130but are instead implemented on a device separate from device130such as a server on a network node. In these implementations, at block480, device130can send device data metrics and status of connection attempts (successful/unsuccessful) to the external device whenever device130successfully connects to the network. The algorithms in the external device can then determine an optimal frequency scanning order for device130to use in subsequent frequency scans, and can send this frequency scanning order to device130at block470.

Remarks

The Figures and above description provide a brief, general description of a suitable environment in which the invention can be implemented. Although not required, aspects of the invention can be implemented in the general context of computer-executable instructions, such as routines executed by a general-purpose data processing device, e.g., a server computer, wireless device or personal computer. Those skilled in the relevant art will appreciate that aspects of the invention can be practiced with other communications, data processing, or computer system configurations, including: Internet appliances, hand-held devices (including personal digital assistants (PDAs)), wearable computers, all manner of cellular or mobile phones (including Voice over IP (VoIP) phones), dumb terminals, media players, gaming devices, multi-processor systems, microprocessor-based or programmable consumer electronics, set-top boxes, network PCs, mini-computers, mainframe computers, and the like. Indeed, the terms “computer,” “server,” and the like are generally used interchangeably herein, and refer to any of the above devices and systems, as well as any data processor.

Aspects of the invention can be embodied in a special purpose computer or data processor that is specifically programmed, configured, or constructed to perform one or more of the computer-executable instructions explained in detail herein. While aspects of the invention, such as certain functions, are described as being performed exclusively on a single device or single computer, the invention can also be practiced in distributed environments where functions or modules are shared among disparate processing devices, which are linked through a communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet. In a distributed computing environment, program modules can be in both local and remote memory storage devices. Aspects of the invention can be stored or distributed on tangible computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media.

The above Detailed Description of examples of the invention is not intended to be exhaustive or to limit the invention to the precise form disclosed above. While specific examples for the invention are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative implementations can perform routines having steps/blocks, or employ systems having blocks, in a different order, and some processes or blocks can be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes or blocks can be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks can instead be performed or implemented in parallel, or can be performed at different times. Further any specific numbers noted herein are only examples: alternative implementations can employ differing values or ranges.

The teachings of the invention provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various examples described above can be combined to provide further implementations of the invention. Some alternative implementations of the invention can include not only additional elements to those implementations noted above, but also can include fewer elements.

Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the invention can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further implementations of the invention. When statements or subject matter in an incorporated by reference conflict with statements or subject matter of this application, then this application shall control.

To reduce the number of claims, certain aspects of the invention are presented below in certain claim forms, but the applicant contemplates the various aspects of the invention in any number of claim forms. For example, certain aspects of the disclosed system be embodied as a means-plus-function claim, or in other forms, such as being embodied in a computer-readable medium. (Any claims intended to be treated under 35 U.S.C. § 112(f) will begin with the words “means for”, but use of the term “for” in any other context is not intended to invoke treatment under 35 U.S.C. § 112(f).) Accordingly, the applicant reserves the right to pursue additional claims after filing this application to pursue such additional claim forms, in either this application or in a continuing application.