The present invention relates generally to multi-SIM wireless communication devices, and more particularly to methods of using multi-SIM capabilities to participate in simultaneous discreet communications.
Multi-SIM wireless devices have become increasing popular in recent years because of the versatility that they provide, particularly in countries where there are many service providers. For example, dual-SIM smart phones allow a user to implement two different plans or service providers on the same cellular telephone, each with separate telephone numbers and bills (e.g., a business account/number and a personal account/number). Also, during travel, users can obtain local SIM cards and pay local call rates in the destination country. By using multiple SIMs, a user can take advantage of different pricing plans, and save on mobile data usage. Thus, dual-SIM wireless devices effectively provide users with two phones, without the need to carry two separate devices.
Dual-SIM mobile phones have developed in recent years because of the flexibility they provide to users. Using dual-SIM devices, users avoid the need to carry two phones at the same time, such as one for business and one for personal use. Further, by using multiple SIMs, a user can taken advantage of different pricing plans, and save on mobile data usage.
Instead of requiring a user to switch between SIMs, some newer dual-SIM devices are configured for dual-SIM dual active (DSDA) operation. DSDA devices, which typically have two radio transmitter/receiver circuits (referred to herein as RF resources), allow both SIMs to be active (i.e., supporting telecommunications via a network) at the same time. In this manner, simultaneous independent communications are enabled. However, while a DSDA device allows a user to engage in simultaneous active calls, a user cannot generally participate in two separate telephone calls at the same time. Therefore, at least some capabilities of a DSDA device may not be fully realized by users.
The various embodiments provide a method for a user to engage in simultaneous calls on a DSDA device using speech-to-text and text-to-speech conversions on a second call. By converting speech from a second incoming voice call to text that is displayed on the DSDA device, and converting text entered by the user to speech that is played to the second caller, the user can maintain real-time communications discreetly with two different parties at the same time.
The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate exemplary embodiments of the invention, and together with the general description given above and the detailed description given below, serve to explain the features of the invention.
The various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the invention or the claims.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other implementations.
The terms “wireless device” and “wireless communication device” are used interchangeably herein to refer to any one or all of cellular telephones, smart phones, personal or mobile multi-media players, personal data assistants (PDAs), laptop computers, tablet computers, smart books, palm-top computers, wireless electronic mail receivers, multimedia Internet enabled cellular telephones, wireless gaming controllers, and similar personal electronic devices that include a programmable processor and memory and circuitry for establishing wireless communication pathways and transmitting/receiving data via wireless communication pathways.
As used herein, the terms “SIM”, “SIM card” and “subscriber identification module” are used interchangeably to mean an integrated circuit, embedded into a removable card, that stores an International Mobile Subscriber Identity (IMSI), related keys, and/or other information used to identify and/or authenticate a wireless device to a wireless telecommunication network. The term SIM may also be used as shorthand reference to a particular communication network or subscriber account with which the SIM is associated, since the information stored in a SIM enables the wireless device to establish a communication link with a particular network, thus the SIM and the communication network correlate to one another.
As used herein, the terms “multi-SIM wireless device” “dual-SIM device” “dual-SIM dual active device” and “DSDA device” are used interchangeably to describe a wireless device that is configured with more than one SIM and is capable of independently handling communications with networks of both subscriptions.
The various embodiments improve user experience on a DSDA device by utilizing the dual active capability and enabling the user to maintain multiple calls with multiple parties simultaneously, without requiring a conference call. A DSDA device user may be engaged in an active call with a first party when an incoming voice call is received from a second party. In the various embodiments, the first call may proceed as normal over the speaker/headphone on the device, while the second call may be handled using a “voice/text conversation mode” while still maintaining the active first call.
In the various embodiments, each SIM of a multi-SIM wireless device may enable communications over different communications networks using the same or different wireless communication protocols. In another embodiment, two or more SIMs may enable communications over the same network using the same wireless communications protocol. In the various embodiments, each SIM may enable communications over its network using the different RF resources of the multi-SIM wireless device. In the various embodiments, a multi-SIM wireless device may be a dual-SIM dual active (DSDA) device in which each SIM is associated with an independent RF resource (e.g., independent RF transceivers).
The methods of the various embodiments may be utilized for calls on the networks associated with either SIM. While the terms “first” and “second” may be used herein to describe the SIMs and associated networks, such identifiers are merely for convenience and are not meant to limit the various embodiments to a particular order, sequence, type of network, or carrier. Further, the embodiments may be employed in multi-SIM wireless devices with more than two RF resources and more than two SIM cards to enable simultaneous communications with three or more parties in a similar manner.
In the various embodiments, audio capture may include receiving audio inputs via a microphone of the multi-SIM wireless device and preparing the audio inputs for transmission, as well as converting received data to audio outputs via a speaker of the wireless device. In the various embodiments, calls may include continuous streams of audio data exchanged between wireless devices and/or servers. While example embodiments are discussed in terms of operations performed to transmit and receive streams of data during audio calls (i.e., voice calls), the various embodiment methods may also be implemented to transmit and receive video calls (i.e., audio and video calls or video only calls). While example embodiments are discussed in terms of operations to switch a call between networks associated with two SIMs, additional SIMs and network connections may be enabled in a multi-SIM wireless device.
The wireless networks 110, 114 may be cellular data networks, and may use channel access methods including, but not limited to, Frequency Division Multiple Access (FDMA), Time Division Multiple Access (TDMA), Code Division Multiple Access (CDMA), Universal Mobile Telecommunications Systems (UMTS) (particularly, Long Term Evolution (LTE)), Global System for Mobile Communications (GSM), Wi-Fi, PCS, G-3, G-4, or other protocols that may be used in a wireless communications network or a data communications network. Networks 110, 114 may use the same or different wireless interfaces and/or physical layers. In an embodiment, base stations 106, 108, 112 may be controlled by one or more base station controllers (BSC) 116, 118. For example, base stations 106, 108, BSC 116, and other components may form network 110, as is known in the art. Alternate network configurations may also be used and the embodiments are not limited to the configuration illustrated. For example, in another embodiment the functionality of the BSC 116 and at least one of base stations 106, 108 may be collapsed into a single “hybrid” module having the functionality of these components.
In the various embodiments, a wireless device 102 may simultaneously access two (or more) core networks 120, 122 after camping on cells managed by two (or more) base stations 106, 112. Wireless device 102 may also establish connections with Wi-Fi access points, which may connect to the Internet. While the various embodiments are particularly useful with wireless networks, the embodiments are not limited to wireless networks and may also be implemented over wired networks with no changes to the methods.
In wireless network system 100, wireless device 102 may be a multi-SIM wireless device that is capable of operating on a plurality of networks or subscriptions supported by a plurality of SIMs. For example, the wireless device 102 may be a dual-SIM device. Using dual-SIM functionality, the wireless device 102 may simultaneously access two core networks 120, 122 by camping on cells managed by two base stations 106, 112. Core networks 120, 122 may be interconnected by public switched telephone network (PSTN) 124, across which the core networks 120, 122 may route various incoming and outgoing communications to the wireless device 102.
The wireless device 102 may make a voice or data call to a third party device, such as wireless device 104, using one of the SIMs. The wireless device 102 may also receive a voice call or other data transmission from a third party. The third party device (e.g., wireless device 104) may be any of a variety of devices, including, but not limited to, a mobile phone, laptop computer, PDA, server, etc.).
A SIM in the various embodiments may be a Universal Integrated Circuit Card (UICC) that is configured with SIM and/or USIM applications, enabling access to GSM and/or UMTS networks. The UICC may also provide storage for a phone book and other applications. Alternatively, in a CDMA network, a SIM may be a UICC removable user identity module (R-UIM) or a CDMA subscriber identity module (CSIM).
Each SIM card may have a CPU, ROM, RAM, EEPROM and I/O circuits. The SIM cards used in the various embodiments may contain user account information, an international mobile subscriber identity (IMSI), a set of SIM application toolkit (SAT) commands and storage space for phone book contacts. A micro-processing unit (MCU) of a baseband chip may interact with MCUs of SIM cards to retrieve data or SAT commands from the SIM cards installed in a wireless device. A wireless device may be immediately programmed after plugging in the SIM card. SIM cards may be also programmed to display custom menus for personalized services. A SIM card may further store a Home Public-Land-Mobile-Network (HPLMN) code to indicate the SIM card network operator provider. An Integrated Circuit Card Identity (ICCID) SIM serial number is printed on the SIM card for identification.
The multi-SIM wireless device 200 may include at least one controller, such as a general processor 206, which may be coupled to an audio codec (vocoder) 208. The vocoder 208 may in turn be coupled to a speaker 210 and a microphone 212. The general processor 206 may also be coupled to at least one memory 214. The memory 214 may be a non-transitory tangible computer readable storage medium that stores processor-executable instructions. For example, the instructions may include routing communication data relating to the first or second subscription though a corresponding baseband-RF resource chain.
The memory 214 may store operating system (OS), as well as user application software and executable instructions. The memory 214 may also store application data, such as pre-determined user preference settings and/or rules for automatically determining when to commence voice/text conversation mode. Such settings or rules may configure the multi-SIM wireless device processor to automatically enter the voice/text conversation mode when a set of pre-determined rules stored in the memory 214 are satisfied.
The general processor 206 and memory 214 may each be coupled to at least one baseband modem processor 216. Each SIM in the multi-SIM wireless device 200 (e.g., SIM-1 202a and SIM-2 202b) may be associated with a baseband-RF resource chain. Each baseband-RF resource chain may include baseband modem processor 216 to perform baseband/modem functions for communications on a SIM, and one or more amplifiers and radios, referred to generally herein as RF resources 218. In an embodiment, the baseband-RF resource chains may share a common baseband modem processor 206 (i.e., a single device that performs baseband/modem functions for all SIMs on the wireless device). Alternatively, each baseband-RF resource chain may include physically or logically separate baseband modem processors (e.g., Modem1, Modem2). Baseband/modem functions may also be physically or logically integrated with the vocoder 208. For example, the vocoder and modem functions may be implemented in a digital signal processor.
The RF resources 218a, 218b may each be transceivers that perform transmit/receive functions for the associated SIM of the wireless device. The RF resources 218a, 218b may include separate transmit and receive circuitry, or may include a transceiver that combines transmitter and receiver functions. The RF resources 218a, 218b may be coupled to a wireless antenna (e.g., a first wireless antenna 220a and a second wireless antenna 220b). The memory 214 of the wireless device 200 may store an operating system (OS) and user application software.
In an embodiment, the general processor 206 may be coupled to a speech-to-text (STT) conversion engine 224, and to a text-to-speech (TTS) conversion engine 226. The STT conversion engine 224 may convert speech (i.e., voice stream) into text, and the TTS conversion engine 226 may convert text into speech. A voice synthesizer 229 to produce speech signals simulating a human voice may be coupled to the TTS conversion engine 226. In the various embodiments, the voice synthesizer 229 may be integrated with the vocoder 208 and/or the TTS conversion engine 226. In addition, the STT conversion engine 224, TTS conversion engine 226, and/or the vocoder 208 may be integrated into a single module, unit, component, or software. The STT conversion engine 226, TTS conversion engine 228, and voice synthesizer 229 may be implemented on a multi-SIM wireless device 200 as software modules in an application executed on an application processor and/or digital signal processor (DSP), as hardware modules (e.g., hardware components hard wired to perform such functions), or as combinations of hardware components and software modules executing on one or more device processors.
While STT conversion engine 226, TTS conversion engine 228, and voice synthesizer 229 are illustrated in
In a particular embodiment, the general purpose processor 206, STT conversion engine 224, TTS conversion engine 226, memory 214, baseband processor(s) 216, and RF resources 218a, 218b may be included in a system-on-chip device 222. The first and second SIMs 202a, 202b and their corresponding interfaces 204a, 204b may be external to the system-on-chip device 222. Further, various input and output devices may be coupled to components of the system-on-chip device 216, such as interfaces or controllers. Example user input components suitable for use in the wireless device 200 may include, but are not limited to, a keypad 228 and a touchscreen display 230.
In an embodiment, the keypad 228, touchscreen display 230, microphone 212, or a combination thereof, may perform the function of receiving the request to initiate an outgoing call. For example, the touchscreen display 230 may receive a selection of a contact from a contact list or receive a telephone number. In another example, either or both of the touchscreen display 230 and microphone 212 may perform the function of receiving a request to initiate an outgoing call. For example, the touchscreen display 230 may receive selection of a contact from a contact list or to receive a telephone number. As another example, the request to initiate the outgoing call may be in the form of a voice command received via the microphone 212. Interfaces may be provided between the various software modules and functions in wireless device 200 to enable communication between them, as is known in the art.
In a particular embodiment, the general processor 202 memory 204, and baseband processor 206 may be included in a system-on-chip device 216. The first and second SIMs 208a, 208b and their corresponding interfaces 210a, 210b may be external to the system-on-chip device 216. Further, various input and output devices may be coupled to components of the system-on-chip device 216, such as interfaces or controllers.
In the various embodiments, a multi-SIM wireless device 200 may determine how to handle an incoming voice call on one SIM while participating in an active call on the other SIM. In the various embodiments, a user on an active call with a first party may select to handle the incoming voice call in a “voice/text conversation mode.” In the voice/text conversation mode, the user may “talk” to the incoming voice caller by receiving and sending text, thereby allowing the user to engage in a second simultaneous call. Advantageously, voice/text conversation mode does not require any corresponding mode change (for example, to text) by the caller, and causes no disruption to the active voice call on the other SIM.
Referring to
If input was received to use voice/text conversation mode for processing the incoming voice call (i.e., determination block 312=“Yes”), in block 314 the wireless device may send a notification to the incoming voice caller indicating that the user intends to answer and converse using the speech-to-text and text-to-speech process. This notification alerts the incoming voice caller that responses to spoken words or questions will be delayed while the called party reads the caller's words as text and then replies with machine-generated speech. That way, the calling party understands how the conversation will take place and is not surprised by any delay or hearing a computer-generated voice. Additionally, the calling party may choose to hang up if conversing in such a manner is not desirable. In block 316, the wireless device may convert the voice stream received from the incoming voice call into text, thus generating a transcription of the incoming voice call voice stream. In block 318, the wireless device may display the text transcript on a display of the multi-SIM wireless device.
If a user input was not received or the user declines to use the voice/text conversation mode for processing the incoming voice call (i.e., determination block 312=“No”), the wireless device may determine whether the user input indicated a desire to use voice/text conversation mode for processing the active call (i.e., the first call), in determination block 320. If a user input was not received indicating a desire to use voice/text conversation mode for processing the active (i.e., first) call (i.e., determination block 320=“No”), the wireless device may handle the incoming and active calls according to normal call processing methods (e.g., activating call-waiting, transferring the incoming voice call to voice mail, sending a pre-selected response, placing one of the calls on hold, etc.).
If a user input was received indicating a desire to the use voice/text conversation mode for processing the active (i.e., first) call (i.e., determination block 320=“Yes”), the wireless device may send a notification to the active caller informing that party that user is about to switch to voice/text conversation mode in block 322. Again, this notification informs the first calling party that the user will be reading a transcript of the caller's speech and replying via text entry that will be played via a speech synthesizer. That way, the first calling party is not surprised by a sudden delay in responses or by hearing a computer-generated voice. Also as part of block 322, the incoming (i.e. second) called may be activated in the normal voice mode. In block 324, the wireless device may convert the voice stream from the previously active (i.e., first) call to text, generating a transcription of the active call voice stream. In block 326, the wireless device may display the text transcript on the wireless device. The operations implemented in blocks 322-326 may be the same as those in blocks 314-318, but applied to the first call voice stream.
In an alternative embodiment, the wireless device may automatically perform the functions of determination blocks 312 and 320, without requiring user input. That is, the wireless device may automatically apply voice/text conversation mode to calls according to one or more pre-determined rules. For example, a user may designate a particular contact or group of contacts as “high priority.” If an incoming voice call is received from such contact, upon determining that another active call exists through a different SIM on the DSDA device, the DSDA device may automatically convert the active call to the voice/text conversation mode to allow the user to answer the high priority call according to normal voice call processes without having to hang up on the first call. Other rules may include various selection criteria such as time of day, relative priority of calls, location of DSDA device when call is received, etc.
Referring now to
When the wireless device processor determines that the normal mode call on the other SIM has terminated (i.e., determination block 334=“Yes”), the wireless device may determine whether the voice/text conversation mode call should continue in voice/text conversation mode. This determination may involve informing the user that the second call may be converted to the normal mode, prompting the user for a further input, and handling that call according to a received user input. In an alternative embodiment, this determination may be based on pre-determined rules sets and/or default actions if a user does not respond to a prompt for input (e.g., automatically converting a speech/text conversion mode call to normal mode).
If the voice/text conversation mode call should not be kept in voice/text conversation mode (i.e., determination block 336=“No”), the wireless device may switch that call to normal mode in determination block 336. If the voice/text conversation mode call should be kept in the voice/text conversation mode (i.e., determination block 336=“Yes”), the wireless device may continue the voice/text conversation mode using cycles of speech to text and text to speech conversions.
The conversions of the caller's voice to text and the user's text input to voice may be accomplished using any of the various speech-to-text and text-to-speech conversion applications that are known in the art.
Referring to
The vocoder 208 may include an encoder to encode speech signals into speech data packets and a decoder to decode speech data packets into speech signals. The vocoder 102 may be any type of vocoder, such as an enhanced variable rate coder (EVRC), Adaptive Multi-Rate (AMR), Fourth Generation vocoder (4GV), etc.
Speech data packets may be decoded by the vocoder 208, and the decoded speech signal may be input to a STT conversion engine 224 to convert the speech data to text. In the various embodiments, the STT conversion engine 224 may include a speech recognition system 402, and a text generator 404. The components of the STT conversion engine 224 may be implemented as separate devices, or may be logically separate modules within the same device. The STT conversion engine 224 may output text data, which may be displayed to the wireless device user, for example, on touchscreen 230.
Referring to
In the various embodiments, the TTS conversion engine 226 may include a text recognition system 406 and a pre-recorded message storage 408. For example, in initiating voice/text conversation mode, the wireless device may send a pre-recorded notification to the caller alerting that the user's speech will be machine-generated speech from a TTS conversion process, such as in blocks 314 and 322 as shown in
The TTS conversion engine 226 may output data to the voice synthesizer 229, which may output a speech signal to the vocoder 208. The vocoder 208 may encode the speech signal into an encoded speech data packet, which may be modulated onto a carrier signal (not shown) and transmitted to the caller.
In an alternative embodiment, the conversion of user-inputted text into machine-generated speech and the conversion of the caller's speech into text while in voice/text conversation mode may be performed at a server to which the multi-SIM wireless device 200 may be connected. In an embodiment, the voice/text server may be integrated within a base station, and accessed through the access network of the SIM. In another embodiment, the voice/text server may be an independent server that is accessible to the wireless device over a wireless data network. For example, the wireless device 200 may be connected over WiFi to a voice/text server on a wireless data network.
Embodiments in which the conversions are performed on a network component (i.e., a voice/text server) may have a number of advantages, particularly for multi-SIM wireless devices that are not already configured with a TTS and/or STT conversion engine. Further, such embodiments allow sharing of processing resources such that multiple wireless devices may utilize the same conversion modules when operating in voice/text conversation mode. Further, server-based TTS and STT conversion engines may implement more sophisticated processing, leveraging the increased computing power available in servers compared to mobile communication devices.
The voice/text server 500 may include a conversion unit 506 that has various conversion components and a network interface 508. The network interface 508, which may include a modem and/or RF resources, may be wired and/or wireless for communicating over wireless data networks. The processor 502 may be connected to the conversion unit 506. An example conversion unit 506 may be configured with conversion components including, but not limited to, a vocoder 510, a STT conversion engine 512, a TTS conversion engine 514, and a voice synthesizer 516. Also, similar to the conversion components shown in
Example conversion processing pathways for both speech and text are illustrated in
In another pathway, the server may receive text data from the multi-SIM wireless device 200 via the network interface 508, which may be passed to the TTS conversion engine 514. The TTS conversion engine 514 may use a voice synthesizer to generate speech signals emulating the words in the original text data. The vocoder 510 may encode those speech signals into speech data packets, which may be transmitted back to the wireless device 200 via the network interface.
Thus, the wireless data network may enable connections to a voice/text server 500 that may perform some or all of the conversion processes for the wireless device. This embodiment may be well suited implementations in which a wireless device lacks computational resources, battery power, etc. necessary to execute the speech/text conversion mode processes alone. This embodiment may also be useful for devices that are not configured with TTS and/or STT conversion engines.
Method 600 may have similar steps to those of method 300 described above with reference to
The various embodiments may be implemented in any of a variety of wireless devices, an example of which is illustrated in
The various embodiments described above may also be implemented within a variety of personal computing devices, such as a laptop computer 910 as illustrated in
In a notebook configuration, the computer housing includes the touchpad 917, the keyboard 918, and the display 919 all coupled to the processor 911. The laptop computer 910 may also include a battery 920 coupled to the processor 911. The laptop computer 910 may also include a position sensor 922, such as a GPS receiver, coupled to the processor 911. Additionally, the laptop computer 910 may have one or more antenna 908 for sending and receiving electromagnetic radiation that may be connected to one or more a wireless data link and/or cellular telephone transceiver 916 coupled to the processor 911. Other configurations of the computing device may include a computer mouse or trackball coupled to the processor (e.g., via a USB input) as are well known, which may also be used in conjunction with the various embodiments.
The various embodiments may also be implemented on any of a variety of commercially available server devices, such as the server 1000 illustrated in
The processors 602, 911, and 1001 may be any programmable microprocessor, microcomputer or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various embodiments described above. In some devices, multiple processors may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications may be stored in the internal memory 804, 810, 912, 913, 1002, and 1003 before they are accessed and loaded into the processors 802, 911, and 1001. The processors 802, 911, and 1001 may include internal memory sufficient to store the application software instructions. In many devices the internal memory may be a volatile or nonvolatile memory, such as flash memory, or a mixture of both. For the purposes of this description, a general reference to memory refers to memory accessible by the processors 802, 911, and 1001 including internal memory or removable memory plugged into the device and memory within the processor 802, 911, and 1001 themselves.
The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the steps of the various embodiments must be performed in the order presented. As will be appreciated by one of skill in the art the order of steps in the foregoing embodiments may be performed in any order. Words such as “thereafter,” “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an” or “the” is not to be construed as limiting the element to the singular.
The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.
In one or more exemplary aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory processor-readable storage medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module which may reside on a non-transitory computer-readable storage medium. Tangible, non-transitory processor-readable storage media may be any available media that may be accessed by a processor of a computer, mobile computing device or a wireless communication device. By way of example, and not limitation, such non-transitory processor-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a processor of a computing device. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of non-transitory processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a tangible, non-transitory machine readable medium and/or non-transitory processor-readable medium, which may be incorporated into a computer program product.
The preceding description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.