/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" interface nsIMobileCallForwardingOptions; interface nsITelephonyCallInfo; [scriptable, uuid(baa9f5f3-5cab-40e0-81e9-ae0abd917907)] interface nsITelephonyListener : nsISupports { /** * Called when enumeration asked by nsITelephonyService::enumerateCalls * is completed. */ void enumerateCallStateComplete(); /** * Called when nsITelephonyService is asked to enumerate the current * telephony call state (nsITelephonyService::enumerateCalls). This is * called once per call that is currently managed by the RIL. */ void enumerateCallState(in nsITelephonyCallInfo info); /** * Notified when a telephony call changes state. */ void callStateChanged(in unsigned long length, [array, size_is(length)] in nsITelephonyCallInfo allInfo); /** * Notify when RIL receives supplementary service notification. * * @param clientId Indicate the RIL client, 0 ~ (number of client - 1). * @param callIndex * Call identifier assigned by the RIL. -1 if not specified * @param notification * One of the nsITelephonyService::NOTIFICATION_* values. */ void supplementaryServiceNotification(in unsigned long clientId, in long callIndex, in unsigned short notification); /** * Called when a waiting call comes in CDMA networks. * * @param clientId Indicate the RIL client, 0 ~ (number of client - 1). * @param number * Number of the other party. * @param numberPresentation * Presentation of the call number. * One of the nsITelephonyProvider::CALL_PRESENTATION_* values. * @param name * Name of the other party. * @param namePresentation * Presentation of the call name. * One of the nsITelephonyProvider::CALL_PRESENTATION_* values. */ void notifyCdmaCallWaiting(in unsigned long clientId, in AString number, in unsigned short numberPresentation, in AString name, in unsigned short namePresentation); /** * Called when RIL error occurs to creating or separating a conference call. * * @param name * Error name. Possible values are addError and removeError. * @param message * Detailed error message from RIL. */ void notifyConferenceError(in AString name, in AString message); }; /** * A callback interface for handling asynchronous response. */ [scriptable, uuid(cffc3f9d-2c88-4a14-8ebc-f216caf0cc1d)] interface nsITelephonyCallback : nsISupports { void notifySuccess(); void notifyError(in AString error); }; /** * A callback interface for handling asynchronous response for telephony.dial. */ [scriptable, uuid(e16c6e6f-93c6-4e1e-99bf-592b98f67e15)] interface nsITelephonyDialCallback : nsITelephonyCallback { /** * Called when a dial request is treated as an MMI code and it is about to * process the request. * * @param serviceCode * MMI service code key string that defined in MMI_KS_SC_* */ void notifyDialMMI(in AString serviceCode); /** * Called when a dial request is treated as a call setup and the result * succeeds. * * @param clientId Indicate the RIL client, 0 ~ (number of client - 1). * @param callIndex * Call index from RIL. * @param number * Dialed out phone number (ex: Temporary CLIR prefix will be removed) */ void notifyDialCallSuccess(in unsigned long cliendId, in unsigned long callIndex, in AString number); /** * Called when a MMI code request succeeds. * The function should only be called after notifyDialMMI. */ void notifyDialMMISuccess(in AString statusMessage); void notifyDialMMISuccessWithInteger(in AString statusMessage, in unsigned short aAdditionalInformation); void notifyDialMMISuccessWithStrings(in AString statusMessage, in unsigned long aLength, [array, size_is(aLength)] in wstring aAdditionalInformation); void notifyDialMMISuccessWithCallForwardingOptions(in AString statusMessage, in unsigned long aLength, [array, size_is(aLength)] in nsIMobileCallForwardingOptions aAdditionalInformation); /** * Called when a MMI code request fails. * The function should only be called after notifyDialMMI. */ void notifyDialMMIError(in AString error); void notifyDialMMIErrorWithInfo(in AString error, in unsigned short info); }; %{C++ #define TELEPHONY_SERVICE_CID \ { 0x9cf8aa52, 0x7c1c, 0x4cde, { 0x97, 0x4e, 0xed, 0x2a, 0xa0, 0xe7, 0x35, 0xfa } } #define TELEPHONY_SERVICE_CONTRACTID \ "@mozilla.org/telephony/telephonyservice;1" %} /** * XPCOM component (in the content process) that provides the telephony * information. */ [scriptable, uuid(75e4b5e3-6710-4156-bdaa-ba1081f390f4)] interface nsITelephonyService : nsISupports { const unsigned short CALL_STATE_UNKNOWN = 0; const unsigned short CALL_STATE_DIALING = 1; const unsigned short CALL_STATE_ALERTING = 2; const unsigned short CALL_STATE_CONNECTED = 3; const unsigned short CALL_STATE_HELD = 4; const unsigned short CALL_STATE_DISCONNECTED = 5; const unsigned short CALL_STATE_INCOMING = 6; const unsigned short NOTIFICATION_REMOTE_HELD = 0; const unsigned short NOTIFICATION_REMOTE_RESUMED = 1; const unsigned short CALL_PRESENTATION_ALLOWED = 0; const unsigned short CALL_PRESENTATION_RESTRICTED = 1; const unsigned short CALL_PRESENTATION_UNKNOWN = 2; const unsigned short CALL_PRESENTATION_PAYPHONE = 3; readonly attribute unsigned long defaultServiceId; /** * Called when a content process registers receiving unsolicited messages from * RadioInterfaceLayer in the chrome process. Only a content process that has * the 'telephony' permission is allowed to register. */ void registerListener(in nsITelephonyListener listener); void unregisterListener(in nsITelephonyListener listener); /** * Will continue calling listener.enumerateCallState until the listener * returns false. */ void enumerateCalls(in nsITelephonyListener listener); /** * Functionality for making and managing phone calls. */ void dial(in unsigned long clientId, in DOMString number, in boolean isEmergency, in nsITelephonyDialCallback callback); void sendTones(in unsigned long clientId, in DOMString dtmfChars, in unsigned long pauseDuration, in unsigned long toneDuration, in nsITelephonyCallback callback); void startTone(in unsigned long clientId, in DOMString dtmfChar); void stopTone(in unsigned long clientId); void answerCall(in unsigned long clientId, in unsigned long callIndex, in nsITelephonyCallback callback); void rejectCall(in unsigned long clientId, in unsigned long callIndex, in nsITelephonyCallback callback); void hangUpCall(in unsigned long clientId, in unsigned long callIndex, in nsITelephonyCallback callback); void holdCall(in unsigned long clientId, in unsigned long callIndex, in nsITelephonyCallback callback); void resumeCall(in unsigned long clientId, in unsigned long callIndex, in nsITelephonyCallback callback); void conferenceCall(in unsigned long clientId, in nsITelephonyCallback callback); void separateCall(in unsigned long clientId, in unsigned long callIndex, in nsITelephonyCallback callback); void hangUpConference(in unsigned long clientId, in nsITelephonyCallback callback); void holdConference(in unsigned long clientId, in nsITelephonyCallback callback); void resumeConference(in unsigned long clientId, in nsITelephonyCallback callback); /** * Send an USSD on existing session. It results in error if the session is * not existed. * * If successful, callback.notifySuccess() will be called. * Otherwise, callback.notifyError() will be called. */ void sendUSSD(in unsigned long clientId, in DOMString ussd, in nsITelephonyCallback callback); /** * Cancel an existing USSD session. * * If successful, callback.notifySuccess() will be called. * Otherwise, callback.notifyError() will be called. */ void cancelUSSD(in unsigned long cliendId, in nsITelephonyCallback callback); attribute bool microphoneMuted; attribute bool speakerEnabled; }; %{C++ template struct already_AddRefed; already_AddRefed NS_CreateTelephonyService(); %}