<?xml version="1.0" encoding="UTF-8" ?>

<!-- 
  READ ME! READ ME! READ ME! READ ME! READ ME!

  This file needs to be kept in sync with nm-manager-client.xml with the exception of
  the legacy methods at the end of this file.
-->

<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <interface name="org.freedesktop.NetworkManager">
    <method name="GetDevices">
      <tp:docstring>
        Get the list of network devices.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_get_devices"/>
      <arg name="devices" type="ao" direction="out">
        <tp:docstring>
          List of object paths of network devices known to the system.
        </tp:docstring>
      </arg>
    </method>

    <method name="ActivateConnection">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_activate_connection"/>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <tp:docstring>
        Activate a connection using the supplied device.
      </tp:docstring>
      <arg name="service_name" type="s" direction="in">
        <tp:docstring>
          The D-Bus service name of the settings service that provides this connection.
        </tp:docstring>
      </arg>
      <arg name="connection" type="o" direction="in">
        <tp:docstring>
          The connection to activate the devices with.
        </tp:docstring>
      </arg>
      <arg name="device" type="o" direction="in">
        <tp:docstring>
          The object path of device to be activated for physical connections.  This parameter is ignored for VPN connections, because the specific_object (if provided) specifies the device to use.
        </tp:docstring>
      </arg>
      <arg name="specific_object" type="o" direction="in">
        <tp:docstring>
          The path of a connection-type-specific object this activation should use. 
          This parameter is currently ignored for wired and mobile broadband connections,
          and the value of "/" should be used (ie, no specific object).  For WiFi
          connections, pass the object path of a specific AP from the card's scan
          list, or "/" to pick and AP automatically.  For VPN connections, pass
          the object path of an ActiveConnection object that should serve as the
          "base" connection (to which the VPN connections lifetime will be tied),
          or pass "/" and NM will automatically use the current default device.
        </tp:docstring>
      </arg>
      <arg name="active_connection" type="o" direction="out">
        <tp:docstring>
          The path of the active connection object representing this active connection.
        </tp:docstring>
      </arg>
      <tp:possible-errors>
        <tp:error name="org.freedesktop.NetworkManager.Error.UnknownConnection"/>
        <tp:error name="org.freedesktop.NetworkManager.Error.UnknownDevice"/>
        <tp:error name="org.freedesktop.NetworkManager.Error.InvalidService"/>
        <tp:error name="org.freedesktop.NetworkManager.Error.ConnectionActivating">
          <tp:docstring>Another connection is already activating or the same connection is already active.  FIXME: check if the error name is correct.  FIXME: split into 2 errors?</tp:docstring>
        </tp:error>
        <tp:error name="org.freedesktop.NetworkManager.Error.ConnectionInvalid">
          <tp:docstring>The connection is invalid for this device.</tp:docstring>
        </tp:error>
      </tp:possible-errors>
    </method>

    <method name="DeactivateConnection">
      <tp:docstring>
        Deactivate an active connection.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_deactivate_connection"/>
      <arg name="active_connection" type="o" direction="in">
        <tp:docstring>
          The currently active connection to deactivate.
        </tp:docstring>
      </arg>
    </method>

    <method name="Sleep">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_sleep"/>
      <tp:docstring>
        Control the NetworkManager daemon's sleep state.  When asleep, all
        interfaces that it manages are deactivated.  When awake, devices are
        available to be activated.  This command should not be called directly
        by users or clients; it is intended for system suspend/resume tracking.
      </tp:docstring>
      <arg name="sleep" type="b" direction="in">
        <tp:docstring>
          Indicates whether the NetworkManager daemon should sleep or wake.
        </tp:docstring>
      </arg>
    </method>

    <method name="Enable">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_enable"/>
      <tp:docstring>
        Control whether overall networking is enabled or disabled.  When
        disabled, all interfaces that NM manages are deactivated.  When enabled,
        all managed interfaces are re-enabled and available to be activated.
        This command should be used by clients that provide to users the ability
        to enable/disable all networking.
      </tp:docstring>
      <arg name="enable" type="b" direction="in">
        <tp:docstring>
          If FALSE, indicates that all networking should be disabled.  If TRUE,
          indicates that NetworkManager should begin managing network devices.
        </tp:docstring>
      </arg>
    </method>

    <method name="SetLogging">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_set_logging"/>
      <tp:docstring>
        Set logging verbosity and which operations are logged.
      </tp:docstring>
      <arg name="level" type="s" direction="in">
        <tp:docstring>
          One of [ERR, WARN, INFO, DEBUG].
        </tp:docstring>
      </arg>
      <arg name="domains" type="s" direction="in">
        <tp:docstring>
          A combination of logging domains separated by commas (','), or "NONE"
          to disable logging.  Each domain enables logging for operations
          related to that domain.  Available domains are: [NONE, HW, RFKILL,
          ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, WIFI_SCAN, IP4, IP6, AUTOIP4,
          DNS, VPN, SHARING, SUPPLICANT, USER_SET, SYS_SET, SUSPEND, CORE,
          DEVICE, OLPC]
        </tp:docstring>
      </arg>
    </method>

    <property name="NetworkingEnabled" type="b" access="read">
      <tp:docstring>
        Indicates if overall networking is currently enabled or not.  See the
        Enable() method.
      </tp:docstring>
    </property>

    <property name="WirelessEnabled" type="b" access="readwrite">
      <tp:docstring>
        Indicates if wireless is currently enabled or not.
      </tp:docstring>
    </property>

    <property name="WirelessHardwareEnabled" type="b" access="read">
      <tp:docstring>
        Indicates if the wireless hardware is currently enabled, i.e. the state of the RF kill switch.
      </tp:docstring>
    </property>

    <property name="WwanEnabled" type="b" access="readwrite">
      <tp:docstring>
        Indicates if mobile broadband devices are currently enabled or not.
      </tp:docstring>
    </property>

    <property name="WwanHardwareEnabled" type="b" access="read">
      <tp:docstring>
        Indicates if the mobile broadband hardware is currently enabled, i.e. the state of the RF kill switch.
      </tp:docstring>
    </property>

    <property name="ActiveConnections" type="ao" access="read">
      <tp:docstring>
        List of active connection object paths.
      </tp:docstring>
    </property>

    <property name="State" type="u" access="read" tp:type="NM_STATE">
      <tp:docstring>
        The overall state of the NetworkManager daemon.
      </tp:docstring>
    </property>

    <signal name="StateChanged">
      <tp:docstring>
        NetworkManager's state changed.
      </tp:docstring>
      <arg name="state" type="u" tp:type="NM_STATE">
        <tp:docstring>
          The new state of NetworkManager.
        </tp:docstring>
      </arg>
    </signal>

    <signal name="PropertiesChanged">
      <tp:docstring>
        NetworkManager's properties changed.
      </tp:docstring>
      <arg name="properties" type="a{sv}" tp:type="String_Variant_Map">
        <tp:docstring>
          The changed properties.
        </tp:docstring>
      </arg>
    </signal>

    <signal name="DeviceAdded">
      <tp:docstring>
        A device was added to the system
      </tp:docstring>
      <arg name="device_path" type="o">
        <tp:docstring>
          The object path of the newly added device.
        </tp:docstring>
      </arg>
    </signal>

    <signal name="DeviceRemoved">
      <tp:docstring>
        A device was removed from the system, and is no longer available.
      </tp:docstring>
      <arg name="device_path" type="o">
        <tp:docstring>
          The object path of the device that was just removed.
        </tp:docstring>
      </arg>
    </signal>

    <tp:enum name="NM_STATE" type="u">
      <tp:docstring>
        Describes the overall state of the daemon.
      </tp:docstring>
      <tp:enumvalue suffix="UNKNOWN" value="0">
        <tp:docstring>
          The NetworkManager daemon is in an unknown state.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="ASLEEP" value="1">
        <tp:docstring>
          The NetworkManager daemon is asleep and all interfaces managed by it are inactive.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONNECTING" value="2">
        <tp:docstring>
          The NetworkManager daemon is connecting a device.  FIXME: What does this mean when one device is active and another is connecting?
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONNECTED" value="3">
        <tp:docstring>
          The NetworkManager daemon is connected.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DISCONNECTED" value="4">
        <tp:docstring>
          The NetworkManager daemon is disconnected.
        </tp:docstring>
      </tp:enumvalue>
    </tp:enum>

    <!-- Legacy methods to maintain backwards compatibility for 0.6 branch. -->

    <signal name="StateChange">
      <tp:docstring>
        DEPRECATED.  NetworkManager's state changed.  Use the 'StateChanged' signal instead.
      </tp:docstring>
      <arg name="state" type="u" tp:type="NM_STATE">
        <tp:docstring>
          The new state of NetworkManager.
        </tp:docstring>
      </arg>
    </signal>

    <method name="sleep">
      <tp:docstring>
        DEPRECATED.  Control the NetworkManager daemon's sleep state.  When asleep, all interfaces that it manages are deactivated.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_legacy_sleep"/>
    </method>

    <method name="wake">
      <tp:docstring>
        DEPRECATED.  Control the NetworkManager daemon's sleep state.  When awake, all known interfaces are available to be activated.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_legacy_wake"/>
    </method>

    <method name="state">
      <tp:docstring>
        DEPRECATED.  The overall state of the NetworkManager daemon.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_manager_legacy_state"/>
      <arg name="state" type="u" direction="out" tp:type="NM_STATE"/>
    </method>

  </interface>
</node>
