WebAPI/WebTelephony/Multi-SIM: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 95: Line 95:
  incoming = evt.call; };
  incoming = evt.call; };
  incoming.answer();
  incoming.answer();
=== Implementation Details ===
[[File:WebTelephonyAPI_multisim_impl.png|667x600px]]


== Proposal: Architecture  ==
== Proposal: Architecture  ==

Revision as of 10:27, 22 October 2012

Proposal: WebTelephony API for Multi-SIM

interface nsIDOMTelephonyManager : nsIDOMEventTarget
{
attribute boolean muted; 
attribute boolean speakerEnabled;

readonly attribute jsval active;
readonly attribute jsval calls;
readonly attribute phoneState;  /* Ringing, Offhook, Idel */
readonly attribute jsval phones;
readonly attribute nsIDOMTelephony defaultPhone;

[implicit_jscontext] attribute jsval onincoming;
[implicit_jscontext] attribute jsval oncallschanged;
};
interface nsIDOMTelephony: nsIDOMEventTarget
{
nsIDOMTelephonyCall dial(in DOMString number);

// The call that is "active", i.e. receives microphone input and tones
// generated via startTone.
readonly attribute jsval active;

// Array of all calls that are currently connected.
readonly attribute jsval calls;

void startTone(in DOMString tone);
void stopTone();

attribute nsIDOMEventListener onincoming;
attribute nsIDOMEventListener oncallschanged;
};
interface nsIDOMTelephonyCall: nsIDOMEventTarget
{
readonly attribute DOMString number;

// "dialing", "alerting", "busy", "connecting", "connected", "disconnecting", 
// "disconnected", "incoming", "holding", "held", "resuming"
readonly attribute DOMString state;

readonly attribute nsIDOMDOMError error;
readonly attribute nsIDOMTelephony phone;

// functions to mediate a call.
void answer();  
void hangUp();
void hold(); 
void resume(); 

attribute nsIDOMEventListener onstatechange;

attribute nsIDOMEventListener ondialing;
attribute nsIDOMEventListener onalerting;
attribute nsIDOMEventListener onbusy;
attribute nsIDOMEventListener onconnecting;
attribute nsIDOMEventListener onconnected;
attribute nsIDOMEventListener ondisconnecting;
attribute nsIDOMEventListener ondisconnected;
attribute nsIDOMEventListener onincoming;
attribute nsIDOMEventListener onholding; 
attribute nsIDOMEventListener onheld; 
attribute nsIDOMEventListener onresuming; 
};

Use Case

Outgoing Call

  • Current B2G
 navigator.mozTelephony.dial(number)
  • Multi-SIM
 navigator.mozTelephonyManager.defaultPhone.dial()
navigator.mozTelephonyManager.phones[index].dial()

Incoming Call

  • Current B2G
 Tel1 = navigator.mozTelephony;
  • Multi-SIM
 Tel1 = navigator.mozTelephonyManager.phones[index];

Once the telephony object is obtained, the following work remains the same.

Tel1.addEventListener('incoming');
Tel1.onincoming = function onincoming (evt) {
incoming = evt.call; };
incoming.answer();

Implementation Details

WebTelephonyAPI multisim impl.png

Proposal: Architecture

This is the current architecture supporting a single SIM card. B2G Architecture

Here is a proposal for multi-SIMs. Proposal: B2G Architecture for Multi-SIMs