Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
CALL WAITING NOTIFICATION ON DSDS DEVICES OR DURING CALL FORWARDING
Document Type and Number:
WIPO Patent Application WO/2021/126176
Kind Code:
A1
Abstract:
A method (300) receives a first call request (152a) over a first network (120a). In response to the first call request, the method accepts the first call request to initiate a cellular call (150), deactivates a connection (124a) with a second network (120b), and enables call forwarding (144) for the deactivated connection (124b). During a duration of the cellular call, the method receives a forwarded call request (152b) over the first network, determines routing information (22) of the second call request and determines an original cal lee of the second call request. When the second call request was intended for the connection to the second network, the method renders a status graphic on a user device (110) that indicates that the second call request was intended for the connection to the second network.

Inventors:
LU SHI (US)
YIN JUN (US)
Application Number:
PCT/US2019/067027
Publication Date:
June 24, 2021
Filing Date:
December 18, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
GOOGLE LLC (US)
International Classes:
H04W76/15; H04W4/16; H04W4/60; H04W8/18; H04W88/06
Domestic Patent References:
WO2018171012A12018-09-27
WO2015013929A12015-02-05
WO2015127588A12015-09-03
Foreign References:
EP3160117A12017-04-26
US20160014579A12016-01-14
Attorney, Agent or Firm:
KRUEGER, Brett, A. (US)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1. A method (300) comprising: for a user device (110) connected to a first cellular wireless network (120, 120a) with a first cellular wireless connection (124, 124a) and a second cellular wireless network (120, 120b) with a second cellular wireless connection (124, 124b), receiving, at data processing hardware (112, 112d) of the user device (110), a first cellular call request (152, 152a) over the first cellular wireless network (120, 120a); in response to receiving the first cellular call request (152, 152a) over the first cellular wireless network (120, 120a): accepting, by the data processing hardware (112, 112d), the first cellular call request (152, 152a) to initiate a cellular call (150); deactivating, by the data processing hardware (112, 112d), the second cellular wireless connection (124, 124b); and enabling, by the data processing hardware (112, 112d), call forwarding (144) for the second cellular wireless connection (124, 124b), the call forwarding (144) configured to forward cellular call requests (152) intended for the second cellular wireless connection (120, 120b) to the first cellular wireless connection (124, 124a); and during a duration of the cellular call (150): receiving, at the data processing hardware (112, 112d), a second cellular call request (152, 152b) over the first cellular wireless network (120, 120a); determining, by the data processing hardware (112, 112d), routing information (22) of the second cellular call request (152, 152b); determining, by the data processing hardware (112, 112d), whether the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (124, 124b) based on the routing information (22); and when the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (124, 124b), rendering, by the data processing hardware (112, 112d), a status graphic on a graphical user interface of the user device (110), the status graphic indicating a presence of the second cellular call request (152, 152b) and that the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (120, 120b).

2. The method (300) of claim 1, wherein the user device (110) supports at least two subscriber identification modules (SIMs) (140, 140a-b) in a dual standby mode.

3. The method (300) of any of claims 1 or 2, wherein the second cellular call request (152, 152b) uses a Session Initiation Protocol (SIP).

4. The method (300) of claim 3, wherein determining routing information (22) of the second cellular call request (152, 152b) comprises: determining call request redirection information from a History-Info header field; and reconstructing a call path of the second cellular call request (152, 152b) using the call request redirection information.

5. The method (300) of claim 3, wherein determining routing information (22) of the second cellular call request (152, 152b) comprises: determining call request redirection information from a Diversion header field; and reconstructing a call path of the second cellular call request (152, 152b) using the call request redirection information.

6. The method (300) of any of claims 1-5, further comprising: terminating, by the data processing hardware (112, 112d), the cellular call (150); and in response to terminating the cellular call (150), disabling, by the data processing hardware (112, 112d), the call forwarding (144) for the second cellular wireless connection (124, 124b).

7. The method (300) of claim 6, wherein disabling the call forwarding (144) for the second cellular wireless connection (124, 124b) comprises using an Extensible Markup Language Configuration Access Protocol (XCAP).

8. The method (300) of any of claims 1-7, further comprising when the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (124, 124b), rendering, by the data processing hardware (112, 112d), an interactive graphic configured to receive user input indications for accepting the second cellular call request (152, 152b).

9. The method (300) of any of claims 1-8, further comprising obtaining, by the data processing hardware (112, 112d), the routing information (22) from signaling system 7 (SS7) network signaling in a public switched telephone network (PSTN) (20).

10. The method (300) of any of claims 1-8, further comprising obtaining, by the data processing hardware (112, 112d), the routing information (22) from an internet protocol multimedia subsystem (IMS) network (20) that forwards the second cellular call request (152, 152b) to the first cellular wireless connection (124, 124a).

11. A user device (110) comprising: data processing hardware (112, 112d); and memory hardware (112, 112m) in communication with the data processing hardware (112, 112m), the memory hardware (112, 112m) storing instructions that when executed on the data processing hardware (112, 112d) cause the data processing hardware (112, 112d) to perform operations comprising: for a user device (110) connected to a first cellular wireless network (120, 120a) with a first cellular wireless connection (124, 124a) and a second cellular wireless network (120, 120b) with a second cellular wireless connection (124, 124b), receiving, at the user device (110), a first cellular call request (152, 152a) over the first cellular wireless network (120, 120a); in response to receiving the first cellular call request (152, 152a) over the first cellular wireless network (120, 120a): accepting the first cellular call request (152, 152a) to initiate a cellular call (150); deactivating the second cellular wireless connection (124, 124b); and enabling call forwarding (144) for the second cellular wireless connection (124, 124b), the call forwarding (144) configured to forward cellular call requests ( 152) intended for the second cellular wireless connection (120, 120b) to the first cellular wireless connection (124, 124a); and during a duration of the cellular call (150): receiving a second cellular call request (152, 152b) over the first cellular wireless network (120, 120a); determining routing information (22) of the second cellular call request (152, 152b); determining whether the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (124, 124b) based on the routing information (22); and when the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (124, 124b) rendering a status graphic on a graphical user interface of the user device (110), the status graphic indicating a presence of the second cellular call request (152, 152b) and that the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (120, 120b).

12. The user device of claim 11, further comprising at least two subscriber identification modules (SIMs) (140, 140a-b) in a dual standby mode.

13. The user device of any of claims 11 or 12, wherein the second cellular call request

(152, 152b) uses a Session Initiation Protocol (SIP).

14. The user device (110) of claim 13, wherein determining routing information (22) of the second cellular call request (152, 152b) comprises: determining call request redirection information from a History-Info header field; and reconstructing a call path of the second cellular call request (152, 152b) using the call request redirection information.

15. The user device (110) of claim 13, wherein determining routing information (22) of the second cellular call request (152, 152b) comprises: determining call request redirection information from a Diversion header field; and reconstructing a call path of the second cellular call request (152, 152b) using the call request redirection information.

16. The user device (110) of any of claims 11-15, wherein the operations further comprise: terminating the cellular call (150); and in response to terminating the cellular call (150), disabling the call forwarding (144) for the second cellular wireless connection (124, 124b).

17. The user device (110) of claims 16, wherein disabling the call forwarding (144) for the second cellular wireless connection (124, 124b) comprises using an Extensible Markup Language Configuration Access Protocol (XCAP).

18. The user device (11) of any of claims 11-18, wherein the operations further comprise when the second cellular call request (152, 152b) was originally directed to the second cellular wireless connection (124, 124b), rendering an interactive graphic configured to receive user input indications for accepting the second cellular call request (152, 152b).

19. The user device (110) of any of claims 11-18, wherein the operations further comprise obtaining the routing information (22) from signaling system 7 (SS7) network signaling in a public switched telephone network (PSTN) (20).

20. The user device (110) of any of claims 11-18, wherein the operations further comprise obtaining the routing information (22) from an internet protocol multimedia subsystem (IMS) network (20) that forwards the second cellular call request (152, 152b) to the first cellular wireless connection (124, 124a).

Description:
Call Waiting Notification on DSDS Devices or During Call

Forwarding

TECHNICAL FIELD

[0001] This disclosure relates to call waiting notifications on user devices that include dual-SIM dual-standby (DSDS) functionality or during call forwarding.

BACKGROUND

[0002] Telephony devices, such as cellular phones and tablets, include subscriber identification modules (SIMs) that are used by a mobile network operator (MNO) and mobile virtual network operators (MVNO) to identify and authenticate network subscribers. Each SIM includes one or more SIM profiles that allow the subscriber to use services offered by the MNO. When a subscriber wants to utilize services from different MNOs (or different services from the same MNO) simultaneously, a separate SIM profile must be enabled for each MNO.

[0003] To support such uses cases, mobile devices often support multiple SIMs at a time. These devices are commonly referred to as dual SIM devices. Atypical type of a dual SIM device is a dual SIM dual standby (DSDS) device, where both SIMs are accessed through time multiplexing. With DSDS, when making or receiving a call using one of the SIMs, the other SIM is unavailable during the duration of the call and calls placed to the unavailable SIM will be missed.

SUMMARY

[0004] One aspect of the disclosure provides a method for call waiting notification on DSDS devices or during call forwarding. The method includes, for a user device connected to a first cellular wireless network with a first cellular wireless connection and a second cellular wireless network with a second cellular wireless connection, receiving, at data processing hardware of the user device, a first cellular call request over the first cellular wireless network. The method also includes, in response to receiving the first cellular call request over the first cellular wireless network, by the data processing hardware, accepting the first cellular call request to initiate a cellular call, deactivating the second cellular wireless connection, and enabling call forwarding for the second cellular wireless connection. The call forwarding is configured to forward cellular call requests intended for the second cellular wireless connection to the first cellular wireless connection. During a duration of the cellular call, the method also includes receiving, at the data processing hardware, a second cellular call request over the first cellular wireless network, determining, by the data processing hardware, routing information of the second cellular call request, and determining, by the data processing hardware, whether the second cellular call request was originally directed to the second cellular wireless connection based on the routing information. When the second cellular call request was originally directed to the second cellular wireless connection, the method includes rendering, by the data processing hardware, a status graphic on a graphical user interface of the user device. The status graphic indicates a presence of the second cellular call request and that the second cellular call request was originally directed to the second cellular wireless connection.

[0005] Implementations of the disclosure may include one or more of the following optional features. In some implementations, the user device supports at least two subscriber identification modules (SIMs) in a dual standby mode. The second cellular call request may use a Session Initiation Protocol (SIP). When the second cellular call request uses a Session Initiation Protocol (SIP), determining routing information of the second cellular call request may include determining call request redirection information from a History-Info header field and reconstructing a call path of the second cellular call request using the call request redirection information. Optionally, the second cellular call request uses a Session Initiation Protocol (SIP), determining routing information of the second cellular call request may include determining call request redirection information from a Diversion header field and reconstructing a call path of the second cellular call request using the call request redirection information.

[0006] In some examples, the method includes terminating, by the data processing hardware, the cellular call and, in response to terminating the cellular call, disabling, by the data processing hardware, the call forwarding for the second cellular wireless connection. Here, disabling the call forwarding for the second cellular wirdess connection comprises using an Extensible Markup Language Configuration Access Protocol (XCAP).

[0007] In some configurations, when the second cellular call request was originally directed to the second cellular wireless connection, the method includes rendering, by the data processing hardware, an interactive graphic configured to receive user input indications for accepting the second cellular call request.

[0008] In some implementations, the method also includes obtaining, by the data processing hardware, the routing information from signaling system 7 (SS7) network signaling in a public switched telephone network (PSTN). In other implementations, the method further includes obtaining, by the data processing hardware, the routing information from an internet protocol multimedia subsystem (IMS) network that forwards the s second cellular call request to the first cellular wireless connection.

[0009] Another aspect of the disclosure provides a user device. The user device includes data processing hardware and memory hardware. The memory hardware is in communication with the data processing hardware and stores instructions that when executed on the data processing hardware cause the data processing hardware to perform operations. For the user device connected to a first cellular wireless network with a first cellular wireless connection and a second cellular wireless network with a second cellular wireless connection, the operations include receiving a first cellular call request over the first cellular wireless network. In response to receiving the first cellular call request over the first cellular wireless network, the operations include accepting the first cellular call request to initiate a cellular call, deactivating the second cellular wireless connection, and enabling call forwarding for the second cellular wireless connection. The call forwarding is configured to forward cellular call requests intended for the second cellular wireless connection to the first cellular wireless connection. During a duration of the cellular call, the operations include receiving a second cellular call request over the first cellular wireless netwoik, determining routing information of the second cellular call request, and determining whether the second cellular call request was originally directed to the second cellular wireless connection based on the routing information. When the second cellular wireless connection was originally directed to the second cellular call request, the operations include rendering a status graphic on a graphical user interface of the user device. The status graphic indicates a presence of the second cellular call request and that the second cellular call request was originally directed to the second cellular wireless connection.

[0010] This aspect may include one or more of the following optional features. In some implementations, the user device includes at least two subscriber identification modules (SIMs) in a dual standby mode. The second cellular call request may use a Session Initiation Protocol (SIP). Here, determining routing information of the second cellular call request may include determining call request redirection information from a History-Info header field and reconstructing a call path of the second cellular call request using the call request redirection information. Additionally or alternatively, determining routing information of the second cellular call request may include determining call request redirection information from a Diversion header field and reconstructing a call path of the second cellular call request using the call request redirection information. [0011] In some examples, the operations include terminating the cellular call and, in response to terminating the cellular call, disabling the call forwarding for the second cellular wireless connection. When the second cellular call request was originally directed to the second cellular wireless connection, the operations may include rendering an interactive graphic configured to receive user input indications for accepting the second cellular call request.

[0012] In some implementations, the operations also include obtaining the routing information from signaling system 7 (SS7) network signaling in a public switched telephone network (PSTN). In other implementations, the operations further include obtaining the routing information from an internet protocol multimedia subsystem (IMS) network that forwards the s second cellular call request to the first cellular wireless connection.

[0013] The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims. DESCRIPTION OF DRAWINGS

[0014] FIGS. 1 A-1C are schematic views of example communication environments. [0015] FIGS. 2A and 2B are schematic views of example call identifiers of the communication environment of FIG. 1A.

[0016] FIG. 3 is a flow diagram of an example arrangement of operations for a method of implementing call waiting notifications on user devices or during call forwarding.

[0017) FIG. 4 is a schematic view of an example computing device that may be used to implement the systems and methods described herein.

[0018] Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

[0019] Communication devices (e.g., mobile device or other user devices) include subscriber identification modules (SIMs) that are used by a mobile network operator (MNO) and mobile virtual network operators (MVNO) to identify and authenticate network subscribers. When a subscriber wants to utilize services from different MNOs (or different services from the same MNO) simultaneously, typically the subscriber must use a separate SIM for each provider/service. To this end, mobile devices often support multiple (e.g., two) SIMs at a time. When supporting two SIMs, these devices may be referred to as dual SIM devices. Atypical type of a dual SIM device is a dual SIM dual standby (DSDS) device. In a DSDS device, both SIMs are accessed through time multiplexing. In this case, the device keeps two connections, one for each SIM, in a standby state and when making or receiving a call using one of the SIMs, the other SIM is unavailable during the duration of the call. When a SIM is unavailable, calls placed to the unavailable SIM will be missed without any indication of the call being received. [0020] FIGS. 1A-1C are examples of a communication environment 100. The communication environment 100 generally includes a user 10 (e.g., also referred to as a user) with a user device 110 (e.g., also referred to as a user device or user equipment (UE)) configured to communicate across a radio access network (RAN), such as a cellular network 120. The user 10 is typically a subscriber of, or someone who has been provided access to, the cellular network 120. In some examples, the communication environment 100 includes multiple users 10 able to communicate with each other using one or more cellular networks 120. Here, each user 10 may use the cellular network 120 that he or she subscribes as a communication channel to other users.

[0021] Within the communication environment 100, an operator 130 refers to an entity that controls communication across the cellular network 120. For example, the operator 130 is a carrier (e.g., wireless carrier) or cellular network provider (e.g., a MNO or a MNVO). The operator 130 may own, lease, or generally control infrastructure (e.g., base station(s)), core network equipment, etc.) that allows the user 10 to communicate with other users. A user 10 may communicate with other users that subscribe to the same cellular network 120 (i.e., communicate in-network) or with other users that subscribe to a different cellular network 120 (i.e., communicate out-of-network). This means that the communication environment 100 may include multiple cellular networks 120 (e.g., shown as a first cellular network 120, 120a and a second cellular network 120, 120b) with one or more operators 130 (e.g., shown with a first operator 130, 130a and a second operator 130, 130b). [0022] Generally, a cellular network 120 is configured to communicate information (e.g., by radio signals) between users 10 and an external network 20 (e.g., a core network) using radio access technology (RAT). The cellular network 120 may be a Long-Term Evolution (LTE) network, a 5G network, and/or a multiple access network supporting numerous access technologies specified by the 3 rd Generation Partnership Project (3GPP), such as the General Packet Radio Service (GPRS), the Global System for Mobile Communications/Enhanced Data Rates for GSM Evolution (GSM/EDGE), the Universal Mobile Telecommunication System/High Speed Packet Access (UMTS/HSPA), LTE, and LTE advanced network technologies. Other examples of RATs may include, but are not limited to, Global Standard for Mobile (GSM), Code Division Multiple Access (CDMA), CDMA2000, Time-Division-Code Division Multiple Access (TD-CDMA), Time Division-Synchronous Code Division Multiple Access (TD- SCDMA), Wideband-Code Division Multiple Access (W-CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), wireless fidelity (Wi-Fi), various 3G standards, various 4G standards, Voice Over LTE (VOLTE), Simultaneous GSM and LTE (SGLTE), Simultaneous Voice and LTE (SVLTE), Circuit Switched Fall Back (CSFB), frequency modulation (FM), Bluetooth (BT), near field communication device (NFC) and the like. Each of these RATs may utilize different access methods to divide communication within the network (e.g., frequency, time, code, etc.) while allowing multiple users 10 to access the cellular network 120 (e.g., via a base station) at any given time. Different types of cellular networks 120 may support different bands/frequencies at various bandwidths to allow user devices 110 to communicate data (e.g., data packets). To illustrate, LTE supports scalable carrier bandwidths, from 1.4 MHz to 20MHz and supports both frequency division duplexing (FDD) and time-division duplexing (TDD), while 5G supports bandwidths ranging from 5 MHz to 100 MHz where some bandwidths overlap with LTE.

[0023] In some examples, the RAT of the cellular network 120 uses one or more base stations 122 as a communication intermediary between the user 10 (e.g., the user device 110) and an external network 20 associated with a cellular network 120. Each base station 122 may include an evolved Node B (also referred as eNode B or eNB). An eNB 122 includes hardware that connects to, for example, an air interface of a cellular network 120, for communicating directly with the user devices 110. For instance, the eNB 122 may transmit downlink LTE/3G/5G signals (e.g., communications) to the user devices 110 and receive uplink LTEZ3G/5G signals from the user devices 110 over the air interface. Here, each base station 122 corresponds to a geographic coverage area of the cellular network 120 where one or more user devices 110 communicate with the cellular network 120 by way of the base station 122. Often times to ensure cellular coverage, the geographic coverage area corresponding to one base station 122 overlaps a geographic coverage area of an adjacent base station 122. This overlapping coverage may enable a user device 110 to transfer between base stations 122 without compromising the user’s access to the cellular network 120. Referring to FIG. 1 A, each cellular network 120, 120a-b includes a corresponding base station 122, 122a-b.

[0024] A user device 110 (also referred to as a mobile station or a UE) is a communication device that enables a user 10 to access one or more cellular networks 120. The user device 110 may be any communication device that is capable of transmitting and/or receiving voice/data over a cellular network 120. The user device 110 may include, but is not limited to, mobile devices (e.g., a mobile phones, laptops, tablets, smart phones, wearable computing devices (e.g., headsets and/or watches), etc.) or other communication devices (e.g., smart speakers/displays, vehicles, gaming devices, appliances, or other internet of things (IOT) devices). In some examples, user devices 110 make use of network services provided by an operator 130 of the cellular network 120 based on a subscription of the user 10 (i.e., a subscriber).

[0025] In some implementations, the user device 110 includes computing resources 112, such as processing resources (e.g., data processing hardware 112, 112d), memory resources (e.g., memory hardware 112, 112m), and/or software resources (e.g., software 112, 112s). In some examples, the memory hardware 112m is in communication with the data processing hardware 112d and includes instructions that when executed by the data processing hardware 112d perform operations for the user device 110. For instance, the data processing hardware 112d executes software 112s of the user device 110 stored on the memory hardware 112m.

[0026] Although originally, a user device 110 may have been primary designed for voice communication, user devices 110 today have evolved to offer a wide range of services and accessories that may utilize a cellular network 120. Some of these services include messaging services (e.g., short messaging service (SMS) or multimedia messaging service (MMS)), electronic mail (email) services, multimedia services (e.g., by utilizing a camera associated with the user device 110), word processing services, streaming services (e.g., music streaming or video streaming), location-based services (e.g., global position system (GPS)), etc. In some implementations, these services correspond to applications (e.g., software 112s) or features of applications executed by an operating system (OS) of the user device 110. Here, the OS is software 112s allocated to the resources 112 of the user device 110 that acts an intermediary between applications 112s of the user device 110 and computing resources 112 (e.g., data processing hardware 112d and/or memory hardware 112m) of the user device 110. Some examples of the computing resources 112 for the user device 110 include amplifieris) (e.g., for radio frequency (RF) amplification), digital signal processors) (DSPs), digital to analog converter(s), analog to digital converter(s), antenna(s), etc.

[0027] The user device 110 is configured to send information to and/or receive information from the cellular network 120 (e.g., a base station 122 of the cellular network 120) using radio frequency (RF) resources. For example, the user device 110 sends/receives data packets and/or radio frequency signals to communicate information.

In order to send/receive information, the user device 110 includes, as radio frequency (RF) resource(s), one or more transceivers 114. A transceiver 114 generally refers to a device that is a combination of a receiver that receives signals or data and a transmitter that sends signals or data. Therefore, a set of RF resources that receive and transmit information is the functional equivalent of a transceiver 114 since this set is capable of performing the operations of a transceiver 114. Due to this, a transceiver 114 is used herein to refer to either a single device that is capable of receiving and transmitting information (i.e., a single RF resource) or a set of RF resources that is capable of receiving and transmitting information.

[0028] In some examples, the user device 110 includes peripherals 116, 116a-n communicating with the resources 112 of the user device 110. These peripherals 116 may include a keyboard, a microphone 116, 116a, a speaker 116, 116b, a camera 116, 116c, input/output (I/O) port(s), and/or a display 116, 116d. In some examples, computing resources 112 of the user device 110 communicate with these peripherals 116 to offer various functionality for the user device 110. For example, voice or multimedia based applications 112s interact with the speaker 116b and/or microphone 116a to enable the user 10 to communicate with other users 10. In another example, the user 10 runs a realtime communication application 112s on the user device 110 that uses the camera 116c, the microphone 116a, and the speaker 116b to communicate by video in an multimedia session with another user.

[0029] In some configurations, the display 116d is configured to display content associated with an application 112s of the user device 110. In some examples, the display 116d operates as a user interface (UI) (e.g., a graphical user interface (GUI)) where the user 10 may interact with content elements (e.g., graphical user interface (GUI) elements) generated by an application 112s. Examples of content elements include icons, windows, fields, buttons, notifications, banners, interactive elements, and/or other forms of content visualization. These content elements may integrate graphics, text, audio/video, or other types of communication. In some implementations, the display 116d is configured as a touch screen that may receive inputs from the user 10 as the user 10 selects or interacts with GUI elements shown on the display 116d. For instance, when the user device 110 operates a communication application 112s, the communication application 112s displays GUI elements that the user 10 may use to answer a call, ignore a call, or hang-up on (i.e., disconnect from) an ongoing call (e.g., as shown in FIG. 1). To illustrate, FIG 1 A shows a communication application 112s, 112si that displays a status graphic for the GUI of the display 116d. Here, the status graphic indicates the status of the ongoing call and/or the presence of an incoming call. For example, the status graphic indicates that the user 10 is on a call with “Ann Smith” (e.g., on the user’s work number) while an incoming call from “Bob Jones" is calling the user’s personal number (e.g., shown as “PERSONAL”).

[0030] The user device 110 also includes one or more SIMs 140 (also referred to as a SIM card). A SIM 140 generally refers to memory that is configured to store a user’s subscription information for a cellular network 120. For example, the SIM 140 is an integrated circuit (IC) or a memory-embedded removable card. A SIM 140 may be associated with a particular operator 130 and/or cellular network 120. When a user 10 subscribes to a cellular network 120 of the operator 130, the operator 130 provides one or more SIMs 140 for the user device 110 of the user 10. Each operator 130 identifies subscribers of his or her cellular netwoik 120 by assigning subscription information to that subscriber. When a user device 110 attempts to form a connection 124 with the cellular network 120, the user device 110 communicates subscription information stored on the SIM 140 to the cellular network 120 for the operator 130 of the cellular network 120 to authenticate. For instance, the operator 130 receives the subscription information of the SIM 140, determines that it matches subscription information at the operator 130 (e.g., stored in a database of the operator 130), and accepts the connection 124 from the user device 110 allowing the user device 110 to have access to the cellular netwoik 120. In some examples, once the user device 110 has been authenticated by the subscription information during an initial connection request, the user device 110 receives a temporary identifier that may be later used by the user device 110 for subsequent connections with the cellular network 120 (e.g., to minimize or avoid re-authentication). The subscription information may include one or more identifiers for a subscriber (e.g., subscriber identifiers for the user 10) of cellular network 120, such as an International Mobile Subscriber Identity (IMSO), a key (e.g., a service subscriber key for secure/encrypted communication), a temporary mobile subscriber identity (TMSI) (i.e., the temporary identifier), and/or other information (e.g., user account information) used to identity or to authenticate the user device 110 for a communication session with the cellular network 120. Based on the stored identifiers, the SIM 140 is configured to enable the user device 110 to establish a connection 124 (e.g., a cellular wireless connection) with the cellular network 120. The SIM 140 may also store SIM application toolkit (SAT) commands and other network provisioning information. For example, as part of the network provisioning information, the SIM 140 stores home identifiers (i.e., operator identifiers), such as a System Identification Number (SID), a Network Identification Number fNID), a Home PLMN (HPLMN) code, etc. Here, these home identifiers identify the operator 130 associated with the SIM 140 (e.g., that issues the SIM 140 to the user 10).

[0031] In some examples, the SIM 140 is a Universal Integrated Circuit Card (UICC) that is configured with SIM-based applications that allow access to cellular networks 120 (e.g., to GSM and/or to UMTS networks). For example, the SIM 140 is configured to provide storage for a phone book (e.g., a database of user contacts) and/or other applications of the user device 110. In a CDMA network, the SIM 140 may be a UICC removable user identity module (R-UIM) or a CDMA subscriber identity module (CSIM) on a card. In some implementations, the SIM 140 includes its own computing resources (e.g., data processing hardware and/or memory hardware), such as a computer processing unit (CPU), read-only memory (ROM) (e.g., electrically erasable programmable readonly memory (EEPROM)), random access memory (RAM), and/or other I/O circuits. In some configurations, the SIM 140 includes an Integrated Circuit Card Identity (ICCID) SIM serial number printed or disposed on the SIM 140 for identification. Additionally or alternatively, the SIM 140 may be implemented in the memory hardware 112m of the user device 110 such that the SIM 140 does not need to be an independent and/or removable circuit, chip, or card (e.g., an electronic SIM or e-SIM).

[0032] In some implementations, the user device 110 includes multiple SIMs 140, 140a-n that connect to two or more separate RATs (e.g., separate cellular networks 120). For instance, FIGS. IB and 1C depict the user device 110 with the ability to connect to a first cellular network 120a with a first SIM 140, 140a and a second cellular network 120b with a second SIM 140, 140b. The first and second cellular network 120a-b may be operated by the same operator 130 (e.g., the user device 110 has two telephone numbers associated with the operator’s network) or by different operators 130 (e.g., the first operator 130a and the second operator 130b of FIG. 1 A). A user device 110 with multiple SIMs 140 is referred to as a multi-SIM device. For example, when a user device 110 has two SIMs 140, it is referred to as a Dual-SIM device (e.g., as shown in FIGS. IB and 1C). Similarly, when the user device 110 includes three SIMs 140, it is referred to as a Triple-SIM device.

[0033] Additionally, there may be different types of multi-SIM devices. Two distinguishable types of multi-SIM devices are multi-SIM-multi-standby (MSMS) devices and multi-SIM-multi-active (MSMA) devices. A multi-standby (MS) device refers to a user device 110 that uses the same set of RF resources (e.g., same transceiver 114) to interact with the two or more RATs. For instance, when the user device 110 is a dual-SIM-dual standby (DSDS) device (i.e., a type of MS device), the user device 110 includes two SIMs 140, 140a-b with a single transceiver 114 (e.g., as shown in FIGS. IB and 1C). In other words, the user device 110 is capable of subscribing to a cellular network 120 (or operator 130) on each SIM 140. Here, a MS device allows each SIM 140 to be on standby, but only one SIM 140 may be active (e.g., in use on a call) while the other SIMs 140 are inactive. In the case of a DSDS device, the first SIM 140a is active while the second SIM 140b is not active. For instance, FIG. 1 B shows that the second SIM 140b is deactivated (or inactive) and unable to make/receive calls. In contrast, a multi-active device includes two or more separate sets of RF resources (e.g., two or more transceivers 114) such that each SIM 140 may be active at any given time. This means that a dual-SIM-dual-active (DSDA) device includes two SIMS 140, 140a-b, but also two sets of RF resources (e.g., two transceivers 114) where each SIM 140 is associated with its own set of RF resources (or transceiver 114). To that end, a MS device requires the user 10 to specify which SIM 140 of the two SIMs 140a-b is able to make/receive calls, while an MA device enables both SIMs 140 to receive calls at the same time.

[0034] Although an MA device may afford the user 10 greater functionality than the MS device, the additional transceivers 114 may have some setbacks. For example, the real estate in a user device 110 is generally scarce (i.e., limited) and each additional transceiver 114 inherently occupies real estate that may be used for other functions (e.g., to improve other functions of the user device 110). Moreover, as user devices 110 decrease in size, having to maintain real estate for multiple transceivers 114 may constrain the reduction in size of a user device 110. Another setback may be that multiple transceivers 114 in an active state consume greater battery power than less transceivers 114 in an inactive state. Since battery power or battery life is often important to the user 10, limiting the number of transceivers 114 in a user device 110 and thus, limiting a source of battery consumption may be advantageous to the user 10.

[0035] In some implementations, to specify which SIM 140 of an MSMS device is able to receive and/or to transmit information to the cellular network 120 (e.g., to make and/or to receive calls), each SIM 140 includes modes 142 that are configurable by the user 10 or an application 112s (e.g., the OS) of the user device 110 (e.g., an application 112s setup or operating on the user’s behalf). In some examples, these modes 142 determine whether the SIM 140 of the user device 110 is active or inactive. For instance, an active mode 142,142A (e.g., as shown in FIG. IB for the first SIM 140a) is a setting or a configuration for the SIM 140 that enables that particular SIM 140 to receive and/or transmit information through a connection 124 to the cellular network 120; while an inactive mode 142, 142NA (e g., as shown in FIG. 1 B for the second SIM 140b) is a setting or a configuration for the SIM 140 that disables or deactivates a connection 124 to the cellular network 120.

[0036] In some configurations, each SIM 140 has a default mode 142 where, for multiple SIMs 140, the SIMs 140 have a default primary SIM 140 in an active mode 142A and default secondary SIM(s) 140 in inactive modes 142NA. In some examples, the mode 142 of the SIM 140 may be preprogramed. For instance, the user 10 uses an application 112s to program a schedule for the modes 142 of the SIMs 140. In other words, if the user 10 has a SIM 140 corresponding to a work telephone number and another SIM 140 corresponding to a personal telephone number, the schedule may dictate that the SIM 140 corresponding to the work telephone number is in an active mode 140A during normal work hours (e.g., 8am-5pm or 9am -6pm). Additionally or alternatively, the user device 110 may be configured to change modes 142 of a SIM 140 (e.g., automatically) based on a state of the user device 110. For example, referring to FIG. 1C, when a first user 10, 10a answers a first call 150, 150a directed to a telephone number associated with a first SIM 140, 140a, the user device 110 changes the mode 142 of the first SIM 140, 140a to an active mode 142A and the mode 142 of the second SIM 140, 140b to an inactive mode 142NA.

[0037] A cellular call 150 (also referred to as a call) generally refers to a communication session between two or more users 10. To initiate the communication session of a cellular call 150, an entity originating the call 150 (i.e., source of the call 150) communicates a call request 152 to a destination of the call 150. When the destination receives the call request 152, the destination typically has the choice to enter the communication session or to not enter the communication session.

[0038] In some examples, when the user device 110 turns on or activates (i.e., enters a communication mode), the user device 110 searches a control channel (i.e., a particular communication frequency) between the user device 110 and the base station 122 for an SID (i.e., a unique identifier assigned to each operator 130 by the Federal Communications Commission (FCC)). For example, the user device 110 attempts to retrieve an SID from the base station 122 via the control channel. If the user device 110 retrieves an SID, the user device 110 compares the retrieved SID to the SID programmed into the user device 110 (e.g., stored in a SIM 140 of the user device 110). When the SIDs match, the user device 110 has confirmed that it is communicating with a base station 122 that is a part of its home system (i.e., cellular network 120). With the SID confirmed, the user device 110 transmits a registration request to the operator 130 such that the operator 130 identifies the base station 122 associated with the user device 110. When the cellular network 120 and/or the operator 130 receive a call request 152 for a call 150, the operator 130 identifies the base station 122 associated with the user device 110 (e.g., by lookup in a database) and communicates the call request 152 according to frequencies for the control channel between the base station 122 and the user device 110. Based on the user’s response to the call request 152, the call 150 may be communicated by way of the connection 124 between the base station 122 and the user device 110. [0039] In some implementations, the inactive mode 142NA includes additional configurations. Here, these configurations may be automatically applied (e.g., when the SIM 140 is set to the inactive mode I42NA) or manually applied (e.g., by the user 10 through an application 112s of the user device 110). One such type of additional configuration is call forwarding 144 (e.g., as shown in FIG. 1C). Call forwarding 144 generally refers to a redirection of a call from an initial intended destination (e.g., an intended callee) to a forwarding destination. In some examples, such as FIG 1 A, the user 10 generates a call forwarding request 146 for call forwarding 144 on a particular SIM 140. Here, the call forwarding request 146 may identify the telephone number to be forwarded (e g., a telephone number associated with an inactive SIM 140) and a forwarding destination (e.g., a telephone number associated with an active SIM 140 of the user device 110). In these examples, the call forwarding request 146 may be communicated from the user device 110 to the cellular network 120 to inform the operator 130 and/or cellular network 120 that the user 10 requests calls 150 to be forwarded (e.g., because a SIM 140 is active on a call 150). Once the operator 130 and/or cellular network 120 receive the call forwarding request 146, a call request 152 to the identified telephone number of the call forwarding request 146 results in the cellular network 120 for forwarding the call 150 (e.g., a call request 152 corresponding to a call 150) to the forwarding destination. In a similar respect, when the first call 150a is terminated, the user device 110 may be configured to end call forwarding 144 on the second connection 124b. In other words, the user device 110 may be able to initiate or terminate call forwarding 144 based on whether the active SIM 140, 140A corresponds to a line that is busy (i.e., active on a call 150) or free (i.e., not active on a call 150). Here, the user device 110 may be able to detect whether a line is occupied and configure call forwarding appropriately. The user device 110 may use Extensible Markup Language Configuration Access Protocol (XCAP) to initiate or terminate call forwarding 144 for a particular connection 124 of the user device 110 (or a particular SIM 140 of the user device 110). In some configuration, the call forwarding 144 is facilitated using unstructured supplementary service data (USSD). Additionally or alternatively, the call forwarding 144 may be initiated using one configuration (e.g., XCAP or USSD) and terminated using another (e.g., XCAP or USSD). As an example, the call forwarding 144 may be setup initially using XCAP while on VoLTE, but subject to circuit switched fallback (CSFB). Here, the user device 110 may subsequently terminate the call forwarding 144 using USSD code.

[0040] In some examples, such as FIG. 1 A, the user device 110 generates a call forwarding request 146 and communicates the call forwarding request 146 to the second cellular network 120b (e.g., shown as the base station 122 and/or the external network 20, 20b receiving the call forwarding request 146). Here, a second call 150, 150b originally intended for a destination subject to call forwarding 144 (e.g., identified by the call forwarding request 146) is instead directed as a second call request 152, 152b through the first cellular network 120a to a first connection 124, 124a with the user device 110. As shown in FIG. 1 A, the user device is connected (e.g., simultaneously connected) to a first cellular network 120a by way of the first cellular network connection 124a and a second cellular network 120b by way of a second cellular network connection 124b. In this example, the user device 110 is already on a first call 150a with “Ann Smith,” (e.g., shown as a call status graphic on the display 116c of the user device 110). During the first call 150a with “Ann Smith,” the user device 110 receives the second call request 152b forwarded according to the forwarding request 146 to the first connection 124a. When the user device 110 receives the second call request 152b, a call identifier 200 is configured to determine an original intended destination of the second call request 152b and to determine whether the original intended destination corresponds to another connection for the user device 110 (e.g., the second connection 124b between the user device 110 and the second cellular network 120b). Here, the call identifier 200 communicates as an output 202, the call request originator, such that the call request originator and other information regarding the call request originator (e.g., an associated telephone number) may be graphically displayed on the display 116c of the user device 110. For example, FIG. 1 A illustrates the call request originator 202 as a status graphic on a GUI of the user device 110. In this example, the status graphic also indicates that original intended destination (e.g., the original intended callee). Here, the original intended destination is shown in text on the status graphic as “PERSONAL" to indicate that the original intended destination was the personal telephone number of the user 10 that is associated with an inactive SIM 140 of the user device 110.

[0041] Call forwarding 144 may be helpful, especially in multi-SIM devices, because call waiting is not available for an inactive SIM 140. To illustrate with FIG. 1C, when the third user 10, 10c calls a telephone number associated with the second SIM 140b while the first SIM 140a is active on a call 150 with the second user 10, 10b, generally the incoming call 150 (e.g., the second call 150b) from the third user 10c will not be sent to the user device 110 because the second SIM 140b is inactive 142NA. Here, since the incoming call 150 is not even sent to the user device 110, the user device 110 does not receive a notification or any other indication that the first user 10a missed the call 150 from the third user 10c. In other words, call waiting, which displays a notification or other indication for an incoming call, works for incoming calls on the same telephone number, but not for incoming calls intended for a different telephone number. Accordingly, without call forwarding 144, the user 10 only receives indications for an incoming call (or missed call) when the call 150 is for the first SIM 140a since the first user 10a is currently active on the telephone number associated with the first SIM 140a. Therefore, call forwarding notifications function as a type of call waiting system for MSDS device.

[0042) Referring to FIG. 2A and 2B, the call identifier 200 is configured to receive, as inputs, call routing information 22 from the cellular network 120 (or the operator 130) and/or a status 148 of one of more SIMs 140. With one or both of these inputs, the call identifier 200 generates, as an output 202, an identity 210 associated with call request 152. As shown in FIGS. 1A and 2B, the output 202 of the identity 210 may be used (e.g., by an application 112s of the user device 110) to provide a graphical representation (e.g., a notification or status graphic) of the identity 210 (or information relating to the identity 210) on the display 116d of the user device 110. For example, the status graphic shown in FIGS. 1A and 2B indicates the identity 210 of the source of the call request 152 (e.g., shown as “Bob Jones") and the original intended destination or original intended callee (e.g., shown as “PERSONAL"). In some examples, the call identifier 200 only communicates the identity 210 to other resources of the user device 110 (e.g., for display) when the routing information 22 identifies an original intended destination that the status 148 confirms is call forwarding 144. For instance, the call identifier 200 determines an original intended callee and determines whether the original intended callee corresponds to a connection 124 of the user device 110 that is currently deactivated and set to call forwarding 144. Stated differently, when the user device 110 receives a forwarded call request 152, the caller identifier 200 identifies who was the original intended destination and whether that original intended destination was an inactive SIM 140, 142NA of the user device 110.

[0043] Typically, with call forwarding 144, a forwarded call does not provide information regarding the original intended destination. For example, if an employee sets her work phone at her desk to forward calls from her work phone to her personal phone number, when the employee receives a call on her personal phone number, the call is often only identified by its number. Stated differently, the employee cannot distinguish if the call is a work-related call (e.g., forwarded from her work phone) or a personal call (e.g., originally intended for the mobile phone receiving the call). In the reverse situation where the employee forwards personal calls originally intended for her personal number to her work phone, the employee, during work hours, may want to generally avoid answering personal calls, but unfortunately by only receiving a notification that indicates the telephone number that is calling without an identity or indicator of the original intended callee, the employee is left guessing whether to answer at work and risk the call being a personal call. This is especially true when a SIM 140 that stores the user’s Phonebook or contacts is inactive 142NAand call forwarding 144 because the inactive SIM 140, 142NA is unable to cross reference stored contacts and provide caller identification when forwarding.

[0044] In some examples, rather than receiving the status 148 of one or more SIMs 140 for the user device 110, the call identifier 200 identifies the current mode of the SIM 140 and determines the SIM status 148. In some implementations, the status 148 of a SIM 140 refers to whether the SIM 140 is active 142A or inactive 142NA. In these implementations, the call identifier 200 may presume that an inactive SIM 140, 142NA is call forwarding 144. In other implementations, the status 148 simply refers to whether a SIM is call forwarding 144 or not. When the call identifier 200 determines or receives information that the SIM 140 is active 142A, the call identifier 200 may presume that the active SIM 140, 142A is not call forwarding 144.

[0045] In some examples, the call identifier 200 determines the original intended destination for a forwarded call request 152 by analyzing routing information 22 (e.g., from the external network 20) corresponding to the forwarded call request 152. For instance, the routing information 22 includes call request redirection information that the call identifier 200 is configured to reconstruct in order to determine the original intended destination. Here, the reconstruction of the call request redirection information may form a call path associated with the forwarded call request 152 that enables the caller identifier 200 to determine the original intended destination. In some examples, the call identifier 200 obtains the routing information 22 on the external network side from network signaling such as network signaling corresponding to signaling system 7 (SS7) in a public switched telephone network (PSTN).

[0046] In some implementations, the routing information 22 is from an IP multimedia subsystem (IMS) network as the external network 20. The IMS network 20 is generally intended to provide a unified service architecture for packet-switched networks. Often, the IMS network 20 operates on several layers including an application layer, a control layer, and an access and transport layer to allow multimedia data to be communicated. When the user device 110 is a registered IMS device, the call request 152 (e.g., the forwarded call request 152) may use Session Initiation Protocol (SIP). SIP is a communications protocol (e.g., a request-response protocol) that supports mapping and redirection services. In this manner, the call identifier 200 may be configured to analyze SIP messages to determine an identity 210 for the call request 152 or an original intended destination for the call request 152. Two types of SIP messages or portions of SIP messages (i.e., routing information 22) that may log redirection information are History- Info Headers and a Diversion Headers. From each of these headers, the call identifier 200 may reconstruct the redirection of a call request 152 to determine the original intended destination of the call request 152.

[0047] FIG. 3 is an example of a method 300 for call waiting notification on DSDS devices or during call forwarding. For a user device 110 simultaneously connected to a first cellular wireless network 120a with a first cellular wireless connection 124a and a second cellular wireless network 120b with a second cellular wireless connection 124b, at operation 302, the method 300 receives, at the user device 110, a first cellular call request 152a over the first cellular wireless network 120a. The method 300 performs operations 304, 304a-c in response to receiving the first cellular call request 152a over the first cellular wireless network 120a. At operation 304a, the method 300 accepts the first cellular call request 150a to initiate a cellular call 150. At operation 304b, the method 300 deactivates the second cellular wireless connection 124b. At operation 304c, the method 300 enables call forwarding 144 for the second cellular wireless connection 124b. The call forwarding 144 is configured to forward cellular call requests 152 intended for the second cellular wireless connection 124b to the first cellular wireless connection 124a. The method 300 performs operations 306, 306a-d during a duration of the cellular call 150. At operation 306a, the method 300 receives a second cellular call request 152b over the first cellular wireless network 120a. At operation 306b, the method 300 determines routing information 22 of the second cellular call request 152b. At operation 306c, the method 300 determines whether the second cellular call request 152b was originally directed to the second cellular wireless connection 124b. When the second cellular call request 152b was originally directed to the second cellular wireless connection 124b, at operations 306d, the method 300 renders a status graphic on a graphical user interface of the user device 110. The status graphic indicates a presence of the second cellular call request 152b and that the second cellular call request 152b was originally directed to the second cellular wireless connection 124b.

[0048] FIG. 4 is schematic view of an example computing device 400 that may be used to implement the systems (e.g., the external network 20, the user device 110, the call identifier 200, the cellular network 120, the base station 122, the transceiver 114, the SIM 140, etc.) and methods (e.g., the method 300) described in this document. The computing device 400 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.

[0049] The computing device 400 includes a processor 410, memory 420, a storage device 430, a high-speed interface/controller 440 connecting to the memory 420 and high-speed expansion ports 450, and a low speed interface/controller 460 connecting to a low speed bus 470 and a storage device 430. Each of the components 410, 420, 430, 440, 450, and 460, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 410 can process instructions for execution within the computing device 400, including instructions stored in the memory 420 or on the storage device 430 to display graphical information for a graphical user interface (GUI) on an external input/output device, such as display 480 coupled to high speed interface 440. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 400 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

[0050] The memory 420 stores information non-transitorily within the computing device 400. The memory 420 may be a computer-readable medium, a volatile memory unit(s), or non-volatile memory unit(s). The non-transitoiy memory 420 may be physical devices used to store programs (e.g., sequences of instructions) or data (e.g., program state information) on a temporary or permanent basis for use by the computing device 400. Examples of non-volatile memoiy include, but are not limited to, flash memory and read-only memory (ROM) / programmable read-only memory (PROM) / erasable programmable read-only memory (EPROM) / electronically erasable programmable readonly memoiy (EEPROM) (e g., typically used for firmware, such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memoiy (SRAM), phase change memory (PCM) as well as disks or tapes.

[0051] The storage device 430 is capable of providing mass storage for the computing device 400. In some implementations, the storage device 430 is a computer- readable medium. In various different implementations, the storage device 430 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. In additional implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 420, the storage device 430, or memory on processor 410.

[0052] The high speed controller 440 manages bandwidth-intensive operations for the computing device 400, while the low speed controller 460 manages lower bandwidthintensive operations. Such allocation of duties is exemplary only. In some implementations, the high-speed controller 440 is coupled to the memory 420, the display 480 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 450, which may accept various expansion cards (not shown). In some implementations, the low-speed controller 460 is coupled to the storage device 430 and a low-speed expansion port 490. The low-speed expansion port 490, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter. [0053] The computing device 400 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 400a or multiple times in a group of such servers 400a, as a laptop computer 400b, or as part of a rack server system 400c.

[0054] Various implementations of the systems and techniques described herein can be realized in digital electronic and/or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.

[0055] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, non- transitory computer readable medium, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.

[0056] The processes and logic flows described in this specification can be performed by one or more programmable processors, also referred to as data processing hardware, executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Processors suitable for the execution of a computer program include, by way of example, both general and special puipose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0057] To provide for interaction with a user, one or more aspects of the disclosure can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user, for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.

[0058] A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.