/* 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"

[scriptable, builtinclass, uuid(d2124467-7209-4b2e-a91a-cf3f90681e3c)]
interface nsIAudioManager : nsISupports
{
  /**
   * Microphone muted?
   */
  attribute boolean microphoneMuted;

  /**
   * The master volume.
   */
  attribute float masterVolume;

  /**
   * Master volume muted?
   */
  attribute boolean masterMuted;

  /**
   * Set the phone's audio mode.
   */
  const long PHONE_STATE_INVALID          = -2;
  const long PHONE_STATE_CURRENT          = -1;
  const long PHONE_STATE_NORMAL           = 0;
  const long PHONE_STATE_RINGTONE         = 1;
  const long PHONE_STATE_IN_CALL          = 2;
  const long PHONE_STATE_IN_COMMUNICATION = 3;

  attribute long phoneState;

  /**
   * Configure a particular device ("force") to be used for one of the uses
   * (communication, media playback, etc.)
   */
  const long FORCE_NONE            = 0; // the default
  const long FORCE_SPEAKER         = 1;
  const long FORCE_HEADPHONES      = 2;
  const long FORCE_BT_SCO          = 3;
  const long FORCE_BT_A2DP         = 4;
  const long FORCE_WIRED_ACCESSORY = 5;
  const long FORCE_BT_CAR_DOCK     = 6;
  const long FORCE_BT_DESK_DOCK    = 7;

  const long USE_COMMUNICATION     = 0;
  const long USE_MEDIA             = 1;
  const long USE_RECORD            = 2;
  const long USE_DOCK              = 3;

  void setForceForUse(in long usage, in long force);
  long getForceForUse(in long usage);
};
