/* 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 nsIIccInfo;
interface nsIMobileConnectionInfo;
interface nsIMobileMessageCallback;

[scriptable, function, uuid(3bc96351-53b0-47a1-a888-c74c64b60f25)]
interface nsIRilSendWorkerMessageCallback : nsISupports
{
  boolean handleResponse(in jsval response);
};

[scriptable, uuid(1a3ef88a-e4d1-11e4-8512-176220f2b32b)]
interface nsIRadioInterface : nsISupports
{
  /**
   * PDP APIs
   *
   * @param networkType
   *        Mobile network type, that is, nsINetworkInterface.NETWORK_TYPE_MOBILE
   *        or one of the nsINetworkInterface.NETWORK_TYPE_MOBILE_* values.
   */
  void setupDataCallByType(in long networkType);
  void deactivateDataCallByType(in long networkType);
  long getDataCallStateByType(in long networkType);

  void updateRILNetworkInterface();

  void sendWorkerMessage(in DOMString type,
              [optional] in jsval message,
              [optional] in nsIRilSendWorkerMessageCallback callback);
};

%{C++
#define NS_RADIOINTERFACELAYER_CID \
    { 0x2d831c8d, 0x6017, 0x435b, \
      { 0xa8, 0x0c, 0xe5, 0xd4, 0x22, 0x81, 0x0c, 0xea } }
#define NS_RADIOINTERFACELAYER_CONTRACTID "@mozilla.org/ril;1"
%}

[scriptable, uuid(78b65e8c-68e7-4510-9a05-65bba12b283e)]
interface nsIRadioInterfaceLayer : nsISupports
{
  readonly attribute unsigned long numRadioInterfaces;

  nsIRadioInterface getRadioInterface(in unsigned long clientId);

  /**
   * Select a proper client for dialing emergency call.
   *
   * @return clientId or -1 if none of the clients are avaialble.
   */
  unsigned long getClientIdForEmergencyCall();

  void setMicrophoneMuted(in boolean muted);
};
