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

<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <interface name="org.freedesktop.NetworkManager.Device">
    <property name="Udi" type="s" access="read">
      <tp:docstring>
        Operating-system specific transient device hardware identifier.  This
        is an opaque string representing the underlying hardware for the device,
        and shouldn't be used to keep track of individual devices.  For some
        device types (Bluetooth, Modems) it is an identifier used by the
        hardware service (ie bluez or ModemManager) to refer to that device,
        and client programs use it get additional information from those
        services which NM does not provide.  The Udi is not guaranteed to be
        consistent across reboots or hotplugs of the hardware. If you're looking
        for a way to uniquely track each device in your application, use the
        object path.  If you're looking for a way to track a specific piece of
        hardware across reboot or hotplug, use a MAC address or USB serial
        number.
      </tp:docstring>
    </property>
    <property name="Interface" type="s" access="read">
      <tp:docstring>
        The name of the device's control (and often data) interface.
      </tp:docstring>
    </property>
    <property name="IpInterface" type="s" access="read">
      <tp:docstring>
        The name of the device's data interface when available.  This property
        may not refer to the actual data interface until the device has
        successfully established a data connection, indicated by the device's
        State becoming ACTIVATED.
      </tp:docstring>
    </property>
    <property name="Driver" type="s" access="read">
      <tp:docstring>
        The driver handling the device.
      </tp:docstring>
    </property>
    <property name="Capabilities" type="u" access="read" tp:type="NM_DEVICE_CAP">
      <tp:docstring>
        Flags describing the capabilities of the device.
      </tp:docstring>
    </property>
    <property name="Ip4Address" type="i" access="read">
      <tp:docstring>
        The IPv4 address bound to the device. FIXME: what about devices with >1 IP address?
      </tp:docstring>
    </property>
    <property name="State" type="u" access="read" tp:type="NM_DEVICE_STATE">
      <tp:docstring>
        The current state of the device.
      </tp:docstring>
    </property>
    <property name="StateReason" type="(uu)" access="read" tp:type="NM_DEVICE_STATE_REASON_STRUCT">
      <tp:docstring>
        The current state and reason for changing to that state.
      </tp:docstring>
    </property>
    <property name="ActiveConnection" type="o" access="read">
      <tp:docstring>
        Object path of an ActiveConnection object that "owns" this device during
        activation.  The ActiveConnection object tracks the life-cycle of a
        connection to a specific network and implements the
        org.freedesktop.NetworkManager.Connection.Active D-Bus interface.
      </tp:docstring>
    </property>
    <property name="Ip4Config" type="o" access="read">
      <tp:docstring>
        Object path of the Ip4Config object describing the configuration of the device.  Only valid when the device is in the NM_DEVICE_STATE_ACTIVATED state.
      </tp:docstring>
    </property>
    <property name="Dhcp4Config" type="o" access="read">
      <tp:docstring>
        Object path of the Dhcp4Config object describing the DHCP options returned by the DHCP server.  Only valid when the device is in the NM_DEVICE_STATE_ACTIVATED state.
      </tp:docstring>
    </property>
    <property name="Ip6Config" type="o" access="read">
      <tp:docstring>
        Object path of the Ip6Config object describing the configuration of the device.  Only valid when the device is in the NM_DEVICE_STATE_ACTIVATED state.
      </tp:docstring>
    </property>
    <property name="Dhcp6Config" type="o" access="read">
      <tp:docstring>
        Object path of the Dhcp6Config object describing the DHCP options
        returned by the DHCP server.  Only valid when the device is in the
        NM_DEVICE_STATE_ACTIVATED state.
      </tp:docstring>
    </property>
    <property name="Managed" type="b" access="read">
      <tp:docstring>
        Whether or not this device is managed by NetworkManager.
      </tp:docstring>
    </property>
    <property name="FirmwareMissing" type="b" access="read">
      <tp:docstring>
        If TRUE, indicates the device is likely missing firmware necessary for
        its operation.
      </tp:docstring>
    </property>
    <property name="DeviceType" type="u" access="read" tp:type="NM_DEVICE_TYPE">
      <tp:docstring>
        The general type of the network device; ie Ethernet, WiFi, etc.
      </tp:docstring>
    </property>

    <method name="Disconnect">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_device_disconnect"/>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <tp:docstring>
        Disconnects a device and prevents the device from automatically activating further connections without user intervention.
      </tp:docstring>
    </method>

    <signal name="StateChanged">
      <arg name="new_state" type="u" tp:type="NM_DEVICE_STATE">
        <tp:docstring>
          The new state of the device.
        </tp:docstring>
      </arg>
      <arg name="old_state" type="u" tp:type="NM_DEVICE_STATE">
        <tp:docstring>
          The previous state of the device.
        </tp:docstring>
      </arg>
      <arg name="reason" type="u" tp:type="NM_DEVICE_STATE_REASON">
        <tp:docstring>
          A reason for the state transition.
        </tp:docstring>
      </arg>
    </signal>

    <tp:enum name="NM_DEVICE_STATE" type="u">
      <tp:enumvalue suffix="UNKNOWN" value="0">
        <tp:docstring>
          The device is in an unknown state.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="UNMANAGED" value="10">
        <tp:docstring>
          The device is recognized but not managed by NetworkManager.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="UNAVAILABLE" value="20">
        <tp:docstring>
          The device cannot be used (carrier off, rfkill, etc).
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DISCONNECTED" value="30">
        <tp:docstring>
          The device is not connected.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="PREPARE" value="40">
        <tp:docstring>
          The device is preparing to connect.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONFIG" value="50">
        <tp:docstring>
          The device is being configured.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="NEED_AUTH" value="60">
        <tp:docstring>
          The device is awaiting secrets necessary to continue connection.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="IP_CONFIG" value="70">
        <tp:docstring>
          The IP settings of the device are being requested and configured.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="IP_CHECK" value="80">
        <tp:docstring>
          The device's IP connectivity ability is being determined.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SECONDARIES" value="90">
        <tp:docstring>
          The device is waiting for secondary connections to be activated.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="ACTIVATED" value="100">
        <tp:docstring>
          The device is active.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DEACTIVATING" value="110">
        <tp:docstring>
          The device's network connection is being torn down.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="FAILED" value="120">
        <tp:docstring>
          The device is in a failure state following an attempt to activate it.
        </tp:docstring>
      </tp:enumvalue>
    </tp:enum>

    <tp:enum name="NM_DEVICE_TYPE" type="u">
      <tp:enumvalue suffix="UNKNOWN" value="0">
        <tp:docstring>
          The device type is unknown.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="ETHERNET" value="1">
        <tp:docstring>
          The device is wired Ethernet device.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="WIFI" value="2">
        <tp:docstring>
          The device is an 802.11 WiFi device.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="UNUSED1" value="3">
        <tp:docstring>Unused</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="UNUSED2" value="4">
        <tp:docstring>Unused</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="BT" value="5">
        <tp:docstring>
          The device is Bluetooth device that provides PAN or DUN capabilities.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="OLPC_MESH" value="6">
        <tp:docstring>
          The device is an OLPC mesh networking device.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="WIMAX" value="7">
        <tp:docstring>
          The device is an 802.16e Mobile WiMAX device.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM" value="8">
        <tp:docstring>
          The device is a modem supporting one or more of analog telephone,
          CDMA/EVDO, GSM/UMTS/HSPA, or LTE standards to access a cellular or
          wireline data network.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="INFINIBAND" value="9">
        <tp:docstring>
          The device is an IP-capable InfiniBand interface.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="BOND" value="10">
        <tp:docstring>
          The device is a bond master interface.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="VLAN" value="11">
        <tp:docstring>
          The device is a VLAN interface.
        </tp:docstring>
      </tp:enumvalue>
    </tp:enum>

    <tp:flags name="NM_DEVICE_CAP" value-prefix="NM_DEVICE_CAP" type="u">
      <tp:flag suffix="NONE" value="0x0">
        <tp:docstring>Null capability.</tp:docstring>
      </tp:flag>
      <tp:flag suffix="NM_SUPPORTED" value="0x1">
        <tp:docstring>The device is supported by NetworkManager.</tp:docstring>
      </tp:flag>
      <tp:flag suffix="CARRIER_DETECT" value="0x2">
        <tp:docstring>The device supports carrier detection.</tp:docstring>
      </tp:flag>
    </tp:flags>

    <tp:enum name="NM_DEVICE_STATE_REASON" type="u">
      <tp:enumvalue suffix="UNKNOWN" value="0">
        <tp:docstring>
          The reason for the device state change is unknown.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="NONE" value="1">
        <tp:docstring>
          The state change is normal.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="NOW_MANAGED" value="2">
        <tp:docstring>
          The device is now managed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="NOW_UNMANAGED" value="3">
        <tp:docstring>
          The device is no longer managed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONFIG_FAILED" value="4">
        <tp:docstring>
          The device could not be readied for configuration.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONFIG_UNAVAILABLE" value="5">
        <tp:docstring>
          IP configuration could not be reserved (no available address, timeout, etc).
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONFIG_EXPIRED" value="6">
        <tp:docstring>
          The IP configuration is no longer valid.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="NO_SECRETS" value="7">
        <tp:docstring>
          Secrets were required, but not provided.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SUPPLICANT_DISCONNECT" value="8">
        <tp:docstring>
          The 802.1X supplicant disconnected from the access point or authentication server.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SUPPLICANT_CONFIG_FAILED" value="9">
        <tp:docstring>
          Configuration of the 802.1X supplicant failed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SUPPLICANT_FAILED" value="10">
        <tp:docstring>
          The 802.1X supplicant quit or failed unexpectedly.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SUPPLICANT_TIMEOUT" value="11">
        <tp:docstring>
          The 802.1X supplicant took too long to authenticate.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="PPP_START_FAILED" value="12">
        <tp:docstring>
          The PPP service failed to start within the allowed time.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="PPP_DISCONNECT" value="13">
        <tp:docstring>
          The PPP service disconnected unexpectedly.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="PPP_FAILED" value="14">
        <tp:docstring>
          The PPP service quit or failed unexpectedly.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DHCP_START_FAILED" value="15">
        <tp:docstring>
          The DHCP service failed to start within the allowed time.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DHCP_ERROR" value="16">
        <tp:docstring>
          The DHCP service reported an unexpected error.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DHCP_FAILED" value="17">
        <tp:docstring>
          The DHCP service quit or failed unexpectedly.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SHARED_START_FAILED" value="18">
        <tp:docstring>
          The shared connection service failed to start.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SHARED_FAILED" value="19">
        <tp:docstring>
          The shared connection service quit or failed unexpectedly.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="AUTOIP_START_FAILED" value="20">
        <tp:docstring>
          The AutoIP service failed to start.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="AUTOIP_ERROR" value="21">
        <tp:docstring>
          The AutoIP service reported an unexpected error.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="AUTOIP_FAILED" value="22">
        <tp:docstring>
          The AutoIP service quit or failed unexpectedly.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM_BUSY" value="23">
        <tp:docstring>
          Dialing failed because the line was busy.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM_NO_DIAL_TONE" value="24">
        <tp:docstring>
          Dialing failed because there was no dial tone.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM_NO_CARRIER" value="25">
        <tp:docstring>
          Dialing failed because there was carrier.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM_DIAL_TIMEOUT" value="26">
        <tp:docstring>
          Dialing timed out.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM_DIAL_FAILED" value="27">
        <tp:docstring>
          Dialing failed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM_INIT_FAILED" value="28">
        <tp:docstring>
          Modem initialization failed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_APN_FAILED" value="29">
        <tp:docstring>
          Failed to select the specified GSM APN.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_REGISTRATION_NOT_SEARCHING" value="30">
        <tp:docstring>
          Not searching for networks.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_REGISTRATION_DENIED" value="31">
        <tp:docstring>
          Network registration was denied.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_REGISTRATION_TIMEOUT" value="32">
        <tp:docstring>
          Network registration timed out.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_REGISTRATION_FAILED" value="33">
        <tp:docstring>
          Failed to register with the requested GSM network.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_PIN_CHECK_FAILED" value="34">
        <tp:docstring>
          PIN check failed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="FIRMWARE_MISSING" value="35">
        <tp:docstring>
          Necessary firmware for the device may be missing.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="REMOVED" value="36">
        <tp:docstring>
          The device was removed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SLEEPING" value="37">
        <tp:docstring>
          NetworkManager went to sleep.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONNECTION_REMOVED" value="38">
        <tp:docstring>
          The device's active connection was removed or disappeared.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="USER_REQUESTED" value="39">
        <tp:docstring>
          A user or client requested the disconnection.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CARRIER" value="40">
        <tp:docstring>
          The device's carrier/link changed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="CONNECTION_ASSUMED" value="41">
        <tp:docstring>
          The device's existing connection was assumed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SUPPLICANT_AVAILABLE" value="42">
        <tp:docstring>
          The 802.1x supplicant is now available.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="MODEM_NOT_FOUND" value="43">
        <tp:docstring>
          The modem could not be found.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="BT_FAILED" value="44">
        <tp:docstring>
          The Bluetooth connection timed out or failed.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_SIM_NOT_INSERTED" value="45">
        <tp:docstring>
          GSM Modem's SIM Card not inserted.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_SIM_PIN_REQUIRED" value="46">
        <tp:docstring>
          GSM Modem's SIM Pin required.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_SIM_PUK_REQUIRED" value="47">
        <tp:docstring>
          GSM Modem's SIM Puk required.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GSM_SIM_WRONG" value="48">
        <tp:docstring>
          GSM Modem's SIM wrong
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="INFINIBAND_MODE" value="49">
        <tp:docstring>
          InfiniBand device does not support connected mode.
        </tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DEPENDENCY_FAILED" value="50">
        <tp:docstring>
          A dependency of the connection failed.
        </tp:docstring>
      </tp:enumvalue>
    </tp:enum>

    <tp:struct name="NM_DEVICE_STATE_REASON_STRUCT">
      <tp:member type="u" name="state" tp:type="NM_DEVICE_STATE">
        <tp:docstring>
          The device state.
        </tp:docstring>
      </tp:member>
      <tp:member type="u" name="reason" tp:type="NM_DEVICE_STATE_REASON">
        <tp:docstring>
          The reason for originally changing to the device state.
        </tp:docstring>
      </tp:member>
    </tp:struct>
  </interface>
</node>
