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

<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
    <method name="Register">
      <tp:docstring>
	Register the device to network.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_register"/>
      <arg name="network_id" type="s" direction="in">
	<tp:docstring>
	  The network ID to register. An empty string can be used to register to the home network.
	</tp:docstring>
      </arg>
    </method>

    <method name="Scan">
      <tp:docstring>
	Scan for available networks.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_scan"/>
      <arg name="results" type="aa{ss}" direction="out">
	<tp:docstring>
          <p>Found networks. It's an array of dictionaries (strings for both
          keys and values) with each array element describing a mobile network
          found in the scan.  Each dict may include one or more of the following
          keys:</p>
          <ul>
            <li>
              "status": a number representing network availability status as
              defined in 3GPP TS 27.007 section 7.3.  e.g. "0" (unknown), "1"
              (available), "2" (current), or "3" (forbidden).  This key will
              always be present.
            </li>
            <li>
              "operator-long": long-format name of operator.  If the name is
              unknown, this field should not be present.
            </li>
            <li>
              "operator-short": short-format name of operator.  If the name is
              unknown, this field should not be present.
            </li>
            <li>
              "operator-num": mobile code of the operator.  Returned in the
              format "MCCMNC", where MCC is the three-digit ITU E.212 Mobile
              Country Code and MNC is the  two- or three-digit GSM Mobile
              Network Code.  e.g. "31026" or "310260".
            </li>
            <li>
              "access-tech": a number representing the access technology used by
              this mobile network as described in 3GPP TS 27.007 section 7.3.
              e.g. "0" (GSM), "1" (GSM Compact), "2" (UTRAN/UMTS), "3" (EDGE),
              etc.
            </li>
          </ul>
	</tp:docstring>
      </arg>
    </method>

    <method name="SetApn">
      <tp:docstring>
	Set the APN.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_set_apn"/>
      <arg name="apn" type="s" direction="in">
	<tp:docstring>
	  The APN.
	</tp:docstring>
      </arg>
    </method>

    <method name="GetSignalQuality">
      <tp:docstring>
	Get the current signal quality.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_get_signal_quality"/>
      <arg name="quality" type="u" direction="out">
	<tp:docstring>
	  Signal quality (percent).
	</tp:docstring>
      </arg>
    </method>

    <method name="SetBand">
      <tp:docstring>
        Sets the bands the device is allowed to use when connecting to a mobile network.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_set_band"/>
      <arg name="band" type="u" direction="in" tp:type="MM_MODEM_GSM_BAND">
        <tp:docstring>
          The desired bands, as a set of flags.
        </tp:docstring>
      </arg>
    </method>

    <method name="GetBand">
      <tp:docstring>
        Returns the current bands the device is using.  (Note for plugin writers: returned value must not be ANY)
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_get_band"/>
      <arg name="band" type="u" direction="out" tp:type="MM_MODEM_GSM_BAND">
        <tp:docstring>
          The current bands, as a set of flags.
        </tp:docstring>
      </arg>
    </method>

    <method name="SetNetworkMode">
      <tp:docstring>
        Set the desired mode the device may use when connecting to a mobile
        network (DEPRECATED; see SetAllowedMode instead).
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_set_network_mode"/>
      <arg name="mode" type="u" direction="in" tp:type="MM_MODEM_GSM_NETWORK_DEPRECATED_MODE">
        <tp:docstring>
          The desired network mode.  Only one mode may be specified, and may not be UNKNOWN.
        </tp:docstring>
      </arg>
    </method>

    <method name="GetNetworkMode">
      <tp:docstring>
        Returns the current network mode of the device (DEPRECATED; does not
        allow returning both the saved mode preference *and* the current access
        technology of the device at the same time.  See the AllowedMode
        property instead).
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_get_network_mode"/>
      <arg name="mode" type="u" direction="out" tp:type="MM_MODEM_GSM_NETWORK_DEPRECATED_MODE">
        <tp:docstring>
          Returns the general network mode (ex. 2G/3G preference) of the device.
        </tp:docstring>
      </arg>
    </method>

    <method name="GetRegistrationInfo">
      <tp:docstring>
	Get the registration status and the current operator (if registered).
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_get_reg_info"/>
      <arg name="info" type="(uss)" direction="out">
	<tp:docstring>
          The returned information is composed of the following items in the
          following order:
          <ul>
            <li>
              Mobile registration status as defined in 3GPP TS 27.007 section
              10.1.19.  See the MM_MODEM_GSM_NETWORK_REG_STATUS enumeration for
              possible values.
            </li>
            <li>
              Current operator code of the operator to which the mobile is
              currently registered.  Returned in the format "MCCMNC", where MCC
              is the three-digit ITU E.212 Mobile Country Code and MNC is the
              two- or three-digit GSM Mobile Network Code.  If the MCC and MNC
              are not known or the mobile is not registered to a mobile network,
              this value should be a zero-length (blank) string. e.g. "31026"
              or "310260".
            </li>
            <li>
              Current operator name of the operator to which the mobile is
              currently registered.  If the operator name is not knowon or the
              mobile is not registered to a mobile network, this value should
              be a zero-length (blank) string.
            </li>
          </ul>
	</tp:docstring>
      </arg>
    </method>

    <method name="SetAllowedMode">
      <tp:docstring>
        Set the access technologies a device is allowed to use when connecting
        to a mobile network.
      </tp:docstring>
      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_modem_set_allowed_mode"/>
      <arg name="mode" type="u" direction="in" tp:type="MM_MODEM_GSM_ALLOWED_MODE">
        <tp:docstring>
          The allowed mode.  The device may not support all modes; see
          the org.freedesktop.ModemManager.Gsm.Card.SupportedModes property for
          allowed modes for each device.  All devices support the "ANY" flag.
        </tp:docstring>
      </arg>
    </method>

    <property name="AllowedMode" type="u" access="read" tp:type="MM_MODEM_GSM_ALLOWED_MODE">
      <tp:docstring>
        The allowed access technologies (eg 2G/3G preference) the device is allowed
        to use when connecting to a mobile network.
      </tp:docstring>
    </property>

    <property name="AccessTechnology" type="u" access="read" tp:type="MM_MODEM_GSM_ACCESS_TECH">
      <tp:docstring>
        The current network access technology used by the device to communicate
        with the base station.  (Note to plugin writers: if the device's access
        technology cannot be determined, use UNKNOWN)
      </tp:docstring>
    </property>

    <signal name="SignalQuality">
      <tp:docstring>
	The signal quality changed.
      </tp:docstring>
      <arg name="quality" type="u">
	<tp:docstring>
	  The new quality in percent, 0..100.
	</tp:docstring>
      </arg>
    </signal>

    <signal name="RegistrationInfo">
      <tp:docstring>
	The registration status changed.
      </tp:docstring>
      <arg name="status" type="u" tp:type="MM_MODEM_GSM_NETWORK_REG_STATUS">
	<tp:docstring>
          Mobile registration status as defined in 3GPP TS 27.007 section
          10.1.19.
	</tp:docstring>
      </arg>
      <arg name="operator_code" type="s">
	<tp:docstring>
          Current operator code of the operator to which the mobile is
          currently registered.  Returned in the format "MCCMNC", where MCC
          is the three-digit ITU E.212 Mobile Country Code and MNC is the
          two- or three-digit GSM Mobile Network Code.  If the MCC and MNC
          are not known or the mobile is not registered to a mobile network,
          this value should be a zero-length (blank) string.  e.g. "31026" or
          "310260".
	</tp:docstring>
      </arg>
      <arg name="operator_name" type="s">
	<tp:docstring>
          Current operator name of the operator to which the mobile is
          currently registered.  If the operator name is not knowon or the
          mobile is not registered to a mobile network, this value should
          be a zero-length (blank) string.
	</tp:docstring>
      </arg>
    </signal>

    <signal name="NetworkMode">
      <tp:docstring>
	The network mode preference changed. (DEPRECATED; see documentation
	for GetNetworkMode/SetNetworkMode)
      </tp:docstring>
      <arg name="mode" type="u" tp:type="MM_MODEM_GSM_NETWORK_DEPRECATED_MODE">
	<tp:docstring>The new network mode.</tp:docstring>
      </arg>
    </signal>

    <tp:enum name="MM_MODEM_GSM_NETWORK_REG_STATUS" type="u">
      <tp:docstring>
        GSM registration code as defined in 3GPP TS 27.007 section 10.1.19.
      </tp:docstring>
      <tp:enumvalue suffix="IDLE" value="0">
	<tp:docstring>
	  Not registered, not searching for new operator to register.
	</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="HOME" value="1">
	<tp:docstring>
	  Registered on home network.
	</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="SEARCHING" value="2">
	<tp:docstring>
	  Not registered, searching for new operator to register with.
	</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="DENIED" value="3">
	<tp:docstring>
	  Registration denied.
	</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="UNKNOWN" value="4">
	<tp:docstring>
	  Unknown registration status.
	</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="ROAMING" value="5">
	<tp:docstring>
	  Registered on a roaming network.
	</tp:docstring>
      </tp:enumvalue>
    </tp:enum>

    <tp:enum name="MM_MODEM_GSM_NETWORK_DEPRECATED_MODE" type="u">
      <tp:docstring>
        DEPRECATED; should not be used in new applications.  Use
        AccessTechnology, AllowedMode, and SetAllowedMode() instead.
      </tp:docstring>
      <tp:enumvalue suffix="ANY" value="0">
	<tp:docstring>Any network mode can be used</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="GPRS" value="1">
	<tp:docstring>GPRS</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="EDGE" value="2">
	<tp:docstring>EDGE</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="UMTS" value="3">
	<tp:docstring>UMTS (3G)</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="HSDPA" value="4">
	<tp:docstring>HSDPA</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="2G_PREFERRED" value="5">
	<tp:docstring>Prefer 2G (GPRS or EDGE)</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="3G_PREFERRED" value="6">
	<tp:docstring>Prefer 3G (UMTS/HSDPA/HSUPA/HSPA)</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="2G_ONLY" value="7">
	<tp:docstring>Use only 2G (GPRS or EDGE)</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="3G_ONLY" value="8">
	<tp:docstring>Use only 3G (UMTS/HSDPA/HSUPA/HSPA)</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="HSUPA" value="9">
	<tp:docstring>HSUPA</tp:docstring>
      </tp:enumvalue>
      <tp:enumvalue suffix="HSPA" value="10">
	<tp:docstring>HSPA (HSDPA + HSUPA)</tp:docstring>
      </tp:enumvalue>
    </tp:enum>

  </interface>
</node>
