Abstract:
A mobile device can obtain wireless network signal strength map data that indicates, for various nearby geographical regions, the wireless network signal strength in each such region. A mobile device can transmit that data to a vehicular navigation system responsible for automatically selecting a high-quality route of vehicular travel between a specified source and destination. The system can take the wireless network signal map data into account when selecting that route. When selecting from among multiple different routes of vehicular travel between a specified source and destination, the system may employ an algorithm that considers wireless network signal strengths along those routes, in addition to the other factors. Consequently, the system can select a longer route having better signal strength over a shorter route having worse signal strength. The system can present the selected route within a set of suggested routes, potentially along with reasons for each route&#39;s suggestion.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     The present application is a continuation of U.S. application Ser. No. 13/601,804, filed Aug. 31, 2012, which is hereby incorporated by reference for all purposes. 
    
    
     BACKGROUND 
     The present disclosure relates generally to mobile devices, and in particular to techniques for locating quality mobile communication signals for mobile devices. 
     Computers and other electronic devices can communicate with each other over networks such as local area networks, wide area networks, and the Internet. Mobile devices such as cell phones, including so-called smart phones, can communicate with each other wirelessly over a variety of wireless networks including 3G and 4G networks. The quality of communications over such wireless networks typically depends strongly on the strength of the wireless network signal. As a mobile device travels farther and farther away from a wireless network signal transmitter/receiver, such as a cell phone tower or WiFi access point, the wireless network signal coming from that transmitter/receiver becomes weaker and weaker. Additionally, if the line of sight between a mobile device and a wireless network signal transmitter/receiver becomes obstructed—such as might occur if the mobile device were to enter a deep valley or pass around a high mountain—then the wireless network signal coming from that transmitter/receiver can be weakened significantly. Some geographical locations may be so remote, undeveloped, and/or obstructed that it may be impossible for a mobile device to receive any wireless network signal at all. Weakened wireless network signals may at first cause the mobile device&#39;s audio communications (e.g., cellular telephone calls) to become audibly choppy, and then later may cause the mobile device&#39;s audio communications to terminate completely (leading to dropped cellular telephone calls). Weakened wireless network signals also may require data packet communications to be retransmitted, since some data packets may become dropped while the wireless network signal is weak, resulting in reduced data bandwidth and slower data transmission. 
     The modern world has become an increasingly busy place, often requiring people to find time to communicate during times that those people are traveling. While a person is traveling in an automobile or on a train, that person might be conducting a telephone call or transmitting and receiving packetized data through his mobile device. The information involved in the person&#39;s communications might be important and time-sensitive, such that interruption of those communications could cause considerable hardship to the person. Unfortunately, the fairly fast speeds and which automobiles and trains travel, combined with the often limited communication range of wireless network signal transmitters/receivers, sometimes further complicated by highly varied types of geographical terrain in some regions, can unexpectedly lead to a much-weakened wireless network signal right in the middle of the communication session that a traveling person is conducting using his mobile device. When such communication sessions are lengthy in duration, and when the route of travel is long, the opportunities for dropped calls and/or poor packetized data transmissions can become irritatingly frequent. A traveling person needing to conduct an important but lengthy communication session using his mobile device often will have a difficult time planning an opportune time to engage in that session. 
     SUMMARY 
     Certain embodiments of the present invention can enable a mobile device, such as a so-called smart phone, to obtain wireless network signal strength map data that indicates, for various nearby geographical regions, the wireless network signal strength in each such region. Having obtained such wireless network signal strength map data, such a mobile device can then transmit that data to a vehicular navigation system—potentially a software application executing on the mobile device itself or a hardware component built-in to a vehicle in which the mobile device&#39;s user is traveling. The vehicular navigation system, which is responsible for automatically selecting a high-quality route of vehicular travel between a specified source and destination, can take the wireless network signal map data into account when selecting that route. For example, when selecting from among multiple different routes of vehicular travel between a specified source and destination, the vehicular navigation system may employ an algorithm that gives some weight to wireless network signal strengths along those routes, in addition to the other factors that such a vehicular navigation usually considers (e.g., distance, speed limits, current traffic congestion, etc.). Depending on the importance given to having a strong wireless network signal during a trip, the vehicular navigation system can select a longer, slower route having better total wireless network signal strength over a shorter, faster route having worse total wireless network signal strength. The vehicular navigation system can then suggest the selected route to the system&#39;s user or present the selected route to the system&#39;s user within a set of multiple different suggested routes, potentially along with reasons for each route&#39;s suggestion. 
     Certain embodiments of the invention can provide the user of a mobile device with information that the user can employ in choosing his own route, or in choosing when and where to begin conducting a wireless communication session (e.g., a cellular telephone call or a packetized data transmission session) using his mobile device. For example, after obtaining wireless network signal strength map data as discussed above, a mobile device can display a graphical map that indicates, for each geographical region nearby to the mobile device&#39;s current location, an indication of the current wireless signal strength for that geographical region. 
     The following detailed description together with the accompanying drawings will provide a better understanding of the nature and advantages of the present invention. 
    
    
     
       BRIEF DESCRIPTION 
         FIG. 1  is a block diagram of a computer system according to an embodiment of the present invention. 
         FIG. 2  is a flow diagram illustrating an example of a technique whereby a vehicular navigation system can select a vehicular travel route based at least in part on the wireless network signal strength along that route, according to an embodiment of the invention. 
         FIG. 3  is a flow diagram illustrating an example of a technique  300  whereby a mobile device collects wireless network signal strength data for transmission to server, according to an embodiment of the invention. 
         FIG. 4  is a block diagram illustrating an example of a system  400  in which embodiments of the invention can be implemented. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  illustrates a computing system  100  according to an embodiment of the present invention. Computing system  100  can be implemented as any of various computing devices, including, e.g., a desktop or laptop computer, tablet computer, smart phone, personal data assistant (PDA), or any other type of computing device, not limited to any particular form factor. Computing system  100  can include processing unit(s)  105 , storage subsystem  110 , input devices  120 , display  125 , network interface  135 , a camera  145 , and bus  140 . Computing system  100  can be an iPhone or an iPad. 
     Processing unit(s)  105  can include a single processor, which can have one or more cores, or multiple processors. In some embodiments, processing unit(s)  105  can include a general-purpose primary processor as well as one or more special-purpose co-processors such as graphics processors, digital signal processors, or the like. In some embodiments, some or all processing units  105  can be implemented using customized circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself. In other embodiments, processing unit(s)  105  can execute instructions stored in storage subsystem  110 . 
     Storage subsystem  110  can include various memory units such as a system memory, a read-only memory (ROM), and a permanent storage device. The ROM can store static data and instructions that are needed by processing unit(s)  105  and other modules of computing system  100 . The permanent storage device can be a read-and-write memory device. This permanent storage device can be a non-volatile memory unit that stores instructions and data even when computing system  100  is powered down. Some embodiments of the invention can use a mass-storage device (such as a magnetic or optical disk or flash memory) as a permanent storage device. Other embodiments can use a removable storage device (e.g., a floppy disk, a flash drive) as a permanent storage device. The system memory can be a read-and-write memory device or a volatile read-and-write memory, such as dynamic random access memory. The system memory can store some or all of the instructions and data that the processor needs at runtime. 
     Storage subsystem  110  can include any combination of computer readable storage media including semiconductor memory chips of various types (DRAM, SRAM, SDRAM, flash memory, programmable read-only memory) and so on. Magnetic and/or optical disks can also be used. In some embodiments, storage subsystem  110  can include removable storage media that can be readable and/or writeable; examples of such media include compact disc (CD), read-only digital versatile disc (e.g., DVD-ROM, dual-layer DVD-ROM), read-only and recordable Blu-Ray® disks, ultra density optical disks, flash memory cards (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic “floppy” disks, and so on. The computer readable storage media do not include carrier waves and transitory electronic signals passing wirelessly or over wired connections. 
     In some embodiments, storage subsystem  110  can store one or more software programs to be executed by processing unit(s)  105 . “Software” refers generally to sequences of instructions that, when executed by processing unit(s)  105  cause computing system  100  to perform various operations, thus defining one or more specific machine implementations that execute and perform the operations of the software programs. The instructions can be stored as firmware residing in read-only memory and/or applications stored in magnetic storage that can be read into memory for processing by a processor. Software can be implemented as a single program or a collection of separate programs or program modules that interact as desired. Programs and/or data can be stored in non-volatile storage and copied in whole or in part to volatile working memory during program execution. From storage subsystem  110 , processing unit(s)  105  can retrieves program instructions to execute and data to process in order to execute various operations described herein. 
     A user interface can be provided by one or more user input devices  120 , display device  125 , and/or and one or more other user output devices (not shown). Input devices  120  can include any device via which a user can provide signals to computing system  100 ; computing system  100  can interpret the signals as indicative of particular user requests or information. In various embodiments, input devices  120  can include any or all of a keyboard, touch pad, touch screen, mouse or other pointing device, scroll wheel, click wheel, dial, button, switch, keypad, microphone, and so on. 
     Display  125  can display images generated by computing system  100  and can include various image generation technologies, e.g., a cathode ray tube (CRT), liquid crystal display (LCD), light-emitting diode (LED) including organic light-emitting diodes (OLED), projection system, or the like, together with supporting electronics (e.g., digital-to-analog or analog-to-digital converters, signal processors, or the like). Some embodiments can include a device such as a touchscreen that function as both input and output device. In some embodiments, other user output devices can be provided in addition to or instead of display  125 . Examples include indicator lights, speakers, tactile “display” devices, printers, and so on. 
     In some embodiments, the user interface can provide a graphical user interface, in which visible image elements in certain areas of display  125  are defined as active elements or control elements that the user can select using user input devices  120 . For example, the user can manipulate a user input device to position an on-screen cursor or pointer over the control element, then click a button to indicate the selection. Alternatively, the user can touch the control element (e.g., with a finger or stylus) on a touchscreen device. In some embodiments, the user can speak one or more words associated with the control element (the word can be, e.g., a label on the element or a function associated with the element). In some embodiments, user gestures on a touch-sensitive device can be recognized and interpreted as input commands; these gestures can be but need not be associated with any particular array in display  125 . Other user interfaces can also be implemented. 
     Network interface  135  can provide voice and/or data communication capability for computing system  100 . In some embodiments, network interface  135  can include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular telephone technology, advanced data network technology such as 3G, 4G or EDGE, WiFi (IEEE 802.11 family standards, or other mobile communication technologies, or any combination thereof), GPS receiver components, and/or other components. In some embodiments, network interface  135  can provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface. Network interface  135  can be implemented using a combination of hardware (e.g., antennas, modulators/demodulators, encoders/decoders, and other analog and/or digital signal processing circuits) and software components. 
     Bus  140  can include various system, peripheral, and chipset buses that communicatively connect the numerous internal devices of computing system  100 . For example, bus  140  can communicatively couple processing unit(s)  105  with storage subsystem  110 . Bus  140  also connects to input devices  120  and display  125 . Bus  140  also couples computing system  100  to a network through network interface  135 . In this manner, computing system  100  can be a part of a network of multiple computer systems (e.g., a local area network (LAN), a wide area network (WAN), an Intranet, or a network of networks, such as the Internet. Any or all components of computing system  100  can be used in conjunction with the invention. 
     A camera  145  also can be coupled to bus  140 . Camera  145  can be mounted on a side of computing system  100  that is on the opposite side of the mobile device as display  125 . Camera  145  can be mounted on the “back” of such computing system  100 . Thus, camera  145  can face in the opposite direction from display  125 . Camera  145  can continuously capture video images of the scene that currently is visible behind computing system  100 , from the perspective of the user that is looking at display  125 . 
     Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a computer readable storage medium. Many of the features described in this specification can be implemented as processes that are specified as a set of program instructions encoded on a computer readable storage medium. When these program instructions are executed by one or more processing units, they cause the processing unit(s) to perform various operation indicated in the program instructions. Examples of program instructions or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter. 
     Through suitable programming, processing unit(s)  105  can provide various functionality for computing system  100 . For example, processing unit(s)  105  can execute a wireless network signal strength map-gathering application. 
     It will be appreciated that computing system  100  is illustrative and that variations and modifications are possible. Computing system  100  can have other capabilities not specifically described here (e.g., mobile phone, global positioning system (GPS), power management, one or more cameras, various connection ports for connecting external devices or accessories, etc.). Further, while computing system  100  is described with reference to particular blocks, it is to be understood that these blocks are defined for convenience of description and are not intended to imply a particular physical arrangement of component parts. Further, the blocks need not correspond to physically distinct components. Blocks can be configured to perform various operations, e.g., by programming a processor or providing appropriate control circuitry, and various blocks might or might not be reconfigurable depending on how the initial configuration is obtained. Embodiments of the present invention can be realized in a variety of apparatus including electronic devices implemented using any combination of circuitry and software. 
       FIG. 4  is a block diagram illustrating an example of a system  400  in which embodiments of the invention can be implemented. System  400  includes a remote server  402  that is communicatively coupled via one or more wireless networks to a mobile device  404  such as a cellular telephone, smart phone, or other kind of mobile device. Mobile device  404  is communicatively coupled, either wirelessly or via a guided medium, to a vehicular navigation system  406 . Examples of behaviors of each of these components of system  400  are described in further detail below. 
     Vehicular Navigation System Using Wireless Network Signal Strength 
       FIG. 2  is a flow diagram illustrating an example of a technique  200  whereby a vehicular navigation system can select a vehicular travel route based at least in part on the wireless network signal strength along that route, according to an embodiment of the invention. In block  202 , a mobile device, such as a smart phone, can request wireless network signal strength map data over a wireless network from a remote server. The request can indicate the mobile device&#39;s current geographical location. The mobile device can determine its current geographical location using the mobile device&#39;s built-in global positioning system (GPS). In block  204 , the mobile device can receive the wireless network signal strength map data over the wireless network in response to the mobile device&#39;s request. The wireless network signal strength map data can indicate, for multiple geographical regions within a specified distance from the mobile device&#39;s current geographical location, a current wireless network signal strength in each such region. In block  206 , the mobile device can transmit the wireless network signal strength map data to a vehicular navigation system of an automobile or other vehicle. The mobile device can transmit this map data wirelessly to the vehicular navigation system using Bluetooth communication technology or other wireless network communication technology. Alternatively, the mobile device can transmit the map data over a guided medium, such as a universal serial bus (USB) cable, to a vehicular navigation system to which the mobile device is currently and temporarily tethered via the guided medium. 
     In block  208 , the vehicular navigation system can receive the map data from the mobile device. In block  210 , the vehicular navigation system can determine one or more routes along available travel channels (e.g., streets, roads, highways, railways, subways, etc.) from the mobile device&#39;s (and, presumably, the vehicle&#39;s) current geographical location, or another specified source location, to a specified destination. In block  212 , the vehicular navigation system can calculate, for each such route, a score based at least in part on the wireless network signal strengths of the regions through which that route passes. Routes passing through regions having total higher wireless network signal strength can be scored more favorably than routes passing through regions having total lower network signal strength. In determining the score for a particular route, the vehicular navigation system can compute a sub-score for each geographical region through which the particular route passes by multiplying the wireless network signal strength level of that geographical region (from the map data) by the quantity of time that the vehicle is predicted to travel through that geographical region on the particular route (e.g., based on the length of that segment of the particular route and the speed limits along that segment of the particular route). The vehicular navigation system can then calculate the sum of the sub-scores as a part of computing the score for the particular route. In determining the score for a particular route, the vehicular navigation system also can take into account other factors such as the total length of the particular route and the estimated time that the vehicle is predicted to require to traverse the particular route. Each factor, including those based on wireless network signal strength, can be multiplied by a different specified weighting factor. These specified weighting factors can be specified by the user of the mobile device or the user of the vehicular navigation system. 
     In block  214 , the vehicular navigation system sorts the multiple routes for which scores have been calculated based on the calculated scores for those routes. In block  216 , the vehicular navigation system presents, to a user of the vehicular navigation system, one or more suggested routes from the specified source (potentially the mobile device&#39;s and/or vehicle&#39;s current geographical location) to the specified destination. The vehicular navigation system may present, as the suggested routes, the routes having the top N highest scores, where N is some specified quantity. The vehicular navigation system may present the routes on a geographical map shown on a graphical display of the system (e.g., a liquid crystal display (LCD), a light-emitting diode (LED) display, a cathode ray tube (CRT), etc.). The geographical map can depict the available travel channels from the specified source to the specified destination. The geographical map can highlight routes that are among the suggested routes. For each such route, the geographical map can indicate (a) a distance of that route, (b) a required time estimate to travel that route, (c) a wireless network signal strength score for that route, and/or other information pertaining to that route. 
     In one embodiment of the invention, the geographical map visually distinguishes each geographical region on the map based on that region&#39;s wireless network signal strength. For example, a spectrum of colors, ranging from green through yellow to red, can indicate a spectrum of wireless network signal strengths, from strong (green) through medium (yellow) to weak (red). Each geographical region on the map can be painted in a color that is representative of that region&#39;s wireless network signal strength. The color for a region can be constant throughout the region or may be a gradient reflecting the weakening of a wireless network signal as the distance increases from that signal&#39;s point of origin within the region. Wireless network signal transmitters/receivers, such as cell phone towers and WiFi access points, also can be indicated symbolically on the map. In one embodiment of the invention, instead of complete geographical regions on the map, only route segments of the suggested routes are colorized based on the foregoing scheme, so that the viewer of the map gains a clear understanding of how strong a wireless network signal is for each segment of each suggested route. 
     According to one embodiment of the invention, the technique described above is repeated periodically or constantly during the duration of a trip. For example, as the vehicle travels, the mobile device can request and receive fresh wireless network signal strength map data from the server repeatedly over time. As circumstances change (e.g., due to wireless network congestion, hardware failures, weather interference, or other factors), the most current wireless signal strength map data can vary from previously received wireless signal strength map data. The mobile device can transmit each refreshed instance of the wireless signal strength map data to the vehicular navigation system. In response to receiving revised wireless signal strength map data, the vehicular navigation system can re-compute scores for available routes from the mobile device&#39;s or vehicle&#39;s current geographical location to the specified destination. The re-computed scores can lead the vehicular navigation system to suggest different routes than those that the vehicular navigation system previously suggested. In one embodiment of the invention, if the vehicular navigation system determines that a particular route other than the current route on which the vehicle is currently traveling has a higher score than the current route, then the vehicular navigation system can audibly and/or visually alert the user of the vehicular navigation system that a more preferable route than the currently traveled route may be available. 
     Collecting Wireless Network Signal Strength Map Data 
     In an embodiment of the invention discussed above, a mobile device can request wireless network signal strength map data over a wireless network from a remote server at which such map data is stored. There are various ways in which such map data can be generated for storage at the remote server. Indeed, in one embodiment of the invention, a mobile device does not need to contact the remote server at all, but instead can collect and use wireless network signal strength map data that it has collected and stored based on its own historical experiences alone. In an alternative embodiment of the invention, many separate mobile devices can cooperatively collect such data based on their own historical experiences and wirelessly upload that data to the remote server, where the data from all of the mobile devices can be aggregated in order to obtain potentially more accurate, more complete, and more current map data that then can be distributed wirelessly back to requesting mobile devices. 
       FIG. 3  is a flow diagram illustrating an example of a technique  300  whereby a mobile device collects wireless network signal strength data for transmission to server, according to an embodiment of the invention. In block  302 , the mobile device can determine its current geographical location. The mobile device can determine its current geographical location using a built-in GPS of the mobile device. In block  304 , the mobile device can determine a current wireless network signal strength for its current geographical location. There are various ways in which such a signal strength can be determined. For example, the mobile device can determine the signal strength based at least in part on a value that is used to compute the number of signal strength bars that smart phones typically present on their displays. For another example, the mobile device can determine the signal strength based at least in part on whether a previously ongoing call has now been dropped, indicating that the signal strength at the current geographical location is poor. For another example, the mobile device can determine the signal strength based at least in part on a quantity of dropped or re-requested data packets during a packetized data communication session. For another example, the mobile device can determine the signal strength based at least in part on an estimated bandwidth or data transmission rate during a packetized data communication session. In block  306 , the mobile device can store, in its local memory, a mapping between the current geographical location, the current wireless network signal strength rating (e.g., a quantitative or qualitative value), the current date, and the current time of day. 
     In block  308 , the mobile device can wirelessly transmit the mappings stored in its local memory over a wireless network to a remote server. The mobile device can transmit these mappings periodically, or in response to an instruction by the mobile device&#39;s user, or in response to some other specified event. Once received at the remote server, the server can store these mappings in a database maintained by the server. The remote server can populate this database continuously with mappings of this kind received from multiple separate mobile devices at various different times. The remote server can aggregate this data in order to calculate, for each particular geographical location for which one or more mappings have been received, an estimated current wireless network signal strength for that particular geographical location. In performing this aggregation, the remote server can give greater weight to mappings bearing more recent timestamps than it gives to mappings bearing less recent timestamps. The remote server can distill and segregate the aggregated data in various ways. For example, for a particular geographical location, the server can calculate average signal strengths for a particular time of day on a particular day of the week, such that each time of day for each particular day of the week can have a separate aggregated wireless network signal strength rating for the same particular geographical location. 
     In response to requests for wireless network signal strength map data received from mobile devices, the remote server can provide all or a relevant portion or “slice” of the aggregated map data. The remote server can “slice” the aggregated map data for service to the requesting mobile device in various different ways. For example, the remote server can provide aggregated map data that pertains only to the geographical regions that are within a specified distance away from the requesting mobile device&#39;s current geographical location. For another example, the remote server can provide aggregated map data that pertains only to the current time of day and/or day of the week. For another example, the remote server can provide aggregated map data that pertains only to the current calendar date. As is discussed above, in response to receiving such wireless network signal strength map data, a vehicular navigation system in communication with a mobile device that requested the map data can calculate scores for different routes from a specified source to a specified destination. 
     As is described above, in one embodiment of the invention, a mobile device requests wireless network signal strength map data wirelessly from a remote server. However, in an alternative embodiment, the mobile device can supply, to the vehicular navigation system, the mapping data that it has collected individually, lacking mapping data from any other mobile device, and stored in its local memory over time. This technique can be especially beneficial during moments that wireless communication with the remote server is unavailable to the mobile device. For example, if the mobile device has traveled along a particular route a dozen times, then the mobile device can have accumulated wireless network signal strength data for each geographical point along that route a dozen times. If the mobile device has traveled several different routes, then the mobile device can have accumulated wireless network signal strength data for each geographical point along each of those different routes. For each geographical point along each route that the mobile device has previously traveled, the mobile device can aggregate the wireless network signal strength data mapped to that geographical point in the mobile device&#39;s memory in order to produce a locally generated wireless network signal strength map. The mobile device can transmit this locally generated map data to the vehicular navigation system for its use in lieu of map data downloaded from the remote server. As in other embodiments, the mobile device can provide greater weight to more recent signal strength measurements than it provides to less recent signal strength measurements. 
     In certain embodiment of the invention discussed above, wireless network signal strength map data can be generated based on quality measurements actually obtained in the experiences of one or more mobile devices over time. However, in alternative embodiments of the invention, such wireless network signal strength map data can be generated based additionally or alternatively upon other data sources. For example, various cell phone companies can already have data pertaining to the wireless network signal strengths within different areas of their own networks. In one embodiment of the invention, the server described above can request and obtains such signal strength data from each cell phone company that is willing to provide that data to the server. The server can request and obtain refreshed data from the cell phone companies periodically or continuously. The server can aggregate and segregate the wireless signal strength data based on the wireless network of the cell phone company from which that data was received. For example, the server can aggregate all signal strength data from one cell phone company separately from all signal strength data from another cell phone company. In one embodiment of the invention, a mobile device&#39;s request for wireless network signal strength map data also can identify the particular cell phone company that provides the wireless network that the mobile device exclusively uses. In response to such a request, the server can return, to the mobile device, wireless network map data that pertains only to the particular cell phone company&#39;s wireless networks, excluding data that pertains to wireless networks of other cell phone companies. 
     Embodiments of the present invention can be realized using any combination of dedicated components and/or programmable processors and/or other programmable devices. The various processes described herein can be implemented on the same processor or different processors in any combination. Where components are described as being configured to perform certain operations, such configuration can be accomplished, e.g., by designing electronic circuits to perform the operation, by programming programmable electronic circuits (such as microprocessors) to perform the operation, or any combination thereof. Further, while the embodiments described above can make reference to specific hardware and software components, those skilled in the art will appreciate that different combinations of hardware and/or software components can also be used and that particular operations described as being implemented in hardware might also be implemented in software or vice versa. 
     Computer programs incorporating various features of the present invention can be encoded and stored on various computer readable storage media; suitable media include magnetic disk or tape, optical storage media such as compact disk (CD) or DVD (digital versatile disk), flash memory, and other non-transitory media. Computer readable media encoded with the program code can be packaged with a compatible electronic device, or the program code can be provided separately from electronic devices (e.g., via Internet download or as a separately packaged computer-readable storage medium). 
     Thus, although the invention has been described with respect to specific embodiments, it will be appreciated that the invention is intended to cover all modifications and equivalents within the scope of the following claims.