WebAPI/WebTelephony/Multi-SIM: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
== Proposal: WebTelephony API for Multi-SIM ==
<h2> Proposal: WebTelephony API for Multi-SIM </h2>
 
<pre class="_fck_mw_lspace">interface nsIDOMTelephonyManager&#160;: nsIDOMEventTarget
interface nsIDOMTelephonyManager : nsIDOMEventTarget
{
{
attribute boolean muted;  
  attribute boolean muted;  
attribute boolean speakerEnabled;
  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 active;
  readonly attribute jsval calls;
readonly attribute jsval calls;
readonly attribute phoneState;  /* Ringing, Offhook, Idel */
readonly attribute jsval phones;
readonly attribute nsIDOMTelephony defaultPhone;
   
   
  void startTone(in DOMString tone);
[implicit_jscontext] attribute jsval onincoming;
  void stopTone();
[implicit_jscontext] attribute jsval oncallschanged;
};
</pre>
<pre class="_fck_mw_lspace">interface nsIDOMTelephony: nsIDOMEventTarget
{
nsIDOMTelephonyCall dial(in DOMString number);
   
   
  attribute nsIDOMEventListener onincoming;
// The call that is "active", i.e. receives microphone input and tones
  attribute nsIDOMEventListener oncallschanged;
// generated via startTone.
  };
  readonly attribute jsval active;


  interface nsIDOMTelephonyCall: nsIDOMEventTarget
  // Array of all calls that are currently connected.
{
readonly attribute jsval calls;
  readonly attribute DOMString number;
 
void startTone(in DOMString tone);
void stopTone();
 
attribute nsIDOMEventListener onincoming;
attribute nsIDOMEventListener oncallschanged;
};
</pre>
<pre class="_fck_mw_lspace">interface nsIDOMTelephonyCall: nsIDOMEventTarget
{
readonly attribute DOMString number;
 
// "dialing", "alerting", "busy", "connecting", "connected", "disconnecting",
// "disconnected", "incoming", "holding", "held", "resuming"
readonly attribute DOMString state;
   
   
  // "dialing", "alerting", "busy", "connecting", "connected", "disconnecting",
readonly attribute nsIDOMDOMError error;
  // "disconnected", "incoming", "holding", "held", "resuming"
readonly attribute nsIDOMTelephony phone;
  readonly attribute DOMString state;
 
 
  // functions to mediate a call.
  readonly attribute nsIDOMDOMError error;
void answer();   
  readonly attribute nsIDOMTelephony phone;
void hangUp();
   
void hold();  
  // functions to mediate a call.
void resume();  
  void answer();   
 
  void hangUp();
  attribute nsIDOMEventListener onstatechange;
  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;
  };


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;
};
</pre>
<h3> Use Case  </h3>
<h3> Use Case  </h3>
<h4> Outgoing Call  </h4>
<h4> Outgoing Call  </h4>
Line 94: Line 93:
</pre>
</pre>
<h2> Proposal: Architecture  </h2>
<h2> Proposal: Architecture  </h2>
<p><img src="/images/thumb/6/6e/B2GArch.png/400px-B2GArch.png" _fck_mw_filename="B2GArch.png" _fck_mw_width="400" alt="B2GArch.png" />
<p><img src="/images/6/6e/B2GArch.png" _fck_mw_filename="B2GArch.png" alt="" /><br />
</p>
</p>

Revision as of 10:12, 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();

Proposal: Architecture

<img src="/images/6/6e/B2GArch.png" _fck_mw_filename="B2GArch.png" alt="" />