<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" [
  <!ENTITY ERROR_GENERAL "org.freedesktop.UPower.Device.GeneralError">
]>
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
  <interface name="org.freedesktop.UPower.Device">
    <doc:doc>
      <doc:description>
        <doc:para>
          Objects implementing this interface are usually discovered through
          the <doc:tt>org.freedesktop.UPower</doc:tt> interface on
          the <doc:tt>/org/freedesktop/UPower</doc:tt> object on
          the D-Bus system bus service with the well-known
          name <doc:tt>org.freedesktop.UPower</doc:tt> using
          the
          <doc:ref type="method" to="Power.EnumerateDevices">EnumerateDevices</doc:ref>
          method.
        </doc:para>
        <doc:para>
          <doc:example language="shell" title="simple example">
            <doc:code>
$ dbus-send --print-reply \
            --system \
            --dest=org.freedesktop.UPower \
            /org/freedesktop/UPower/devices/battery_BAT0 \
            org.freedesktop.DBus.Properties.GetAll \
            string:org.freedesktop.UPower.Device

method return sender=:1.386 -> dest=:1.477 reply_serial=2
   array [
      dict entry(
         string "native-path"
         variant             string "/sys/devices/LNXSYSTM:00/device:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0A:00/power_supply/BAT0"
      )
      dict entry(
         string "vendor"
         variant             string "SONY"
      )
      dict entry(
         string "model"
         variant             string "42T4568"
      )
      dict entry(
         string "serial"
         variant             string "4179"
      )
      dict entry(
         string "update-time"
         variant             uint64 1226417875
      )
      dict entry(
         string "type"
         variant             uint 2
      )
      dict entry(
         string "power-supply"
         variant             boolean true
      )
      dict entry(
         string "has-history"
         variant             boolean true
      )
      dict entry(
         string "has-statistics"
         variant             boolean true
      )
      dict entry(
         string "online"
         variant             boolean false
      )
      dict entry(
         string "energy"
         variant             double 72.85
      )
      dict entry(
         string "energy-empty"
         variant             double 0
      )
      dict entry(
         string "energy-full"
         variant             double 74.55
      )
      dict entry(
         string "energy-full-design"
         variant             double 74.88
      )
      dict entry(
         string "energy-rate"
         variant             double 0
      )
      dict entry(
         string "voltage"
         variant             double 16.415
      )
      dict entry(
         string "time-to-empty"
         variant             int64 0
      )
      dict entry(
         string "time-to-full"
         variant             int64 0
      )
      dict entry(
         string "percentage"
         variant             double 97.7197
      )
      dict entry(
         string "is-present"
         variant             boolean true
      )
      dict entry(
         string "state"
         variant             uint 3
      )
      dict entry(
         string "is-rechargeable"
         variant             boolean true
      )
      dict entry(
         string "capacity"
         variant             double 100
      )
      dict entry(
         string "technology"
         variant             uint 1
      )
   ]
            </doc:code>
          </doc:example>
        </doc:para>
        <doc:para>
          Unless otherwise noted, an empty string or the value 0 in a
          property on this interface means not set.
        </doc:para>
      </doc:description>
    </doc:doc>


    <!-- ************************************************************ -->

    <property name="Type" type="u" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            Type of power source.
          </doc:para>
          <doc:list>
            <doc:item>
              <doc:term>0</doc:term><doc:definition>Unknown</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>1</doc:term><doc:definition>Line Power</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>2</doc:term><doc:definition>Battery</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>3</doc:term><doc:definition>Ups</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>4</doc:term><doc:definition>Monitor</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>5</doc:term><doc:definition>Mouse</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>6</doc:term><doc:definition>Keyboard</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>7</doc:term><doc:definition>Pda</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>8</doc:term><doc:definition>Phone</doc:definition>
            </doc:item>
          </doc:list>
        </doc:description>
      </doc:doc>
    </property>

    <property name="Percentage" type="d" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The amount of energy left in the power source expressed as
            a percentage between 0 and 100. Typically this is the same as
            (<doc:ref type="property" to="Source:Energy">energy</doc:ref> -
            <doc:ref type="property" to="Source:EnergyEmpty">energy-empty</doc:ref>) /
            (<doc:ref type="property" to="Source:EnergyFull">energy-full</doc:ref> -
            <doc:ref type="property" to="Source:EnergyEmpty">energy-empty</doc:ref>).
            However, some primitive power sources are capable of only
            reporting percentages and in this case the energy-*
            properties will be unset while this property is set.
          </doc:para><doc:para>
            This property is only valid if the property
            <doc:ref type="property" to="Source:Type">type</doc:ref>
            has the value "battery".
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <property name="Online" type="b" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            Whether power is currently being provided through line power.
            This property is only valid if the property
            <doc:ref type="property" to="Source:Type">type</doc:ref>
            has the value "line-power".
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <property name="State" type="u" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            The battery power state.
          </doc:para>
          <doc:list>
            <doc:item>
              <doc:term>0</doc:term><doc:definition>Unknown</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>1</doc:term><doc:definition>Charging</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>2</doc:term><doc:definition>Discharging</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>3</doc:term><doc:definition>Empty</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>4</doc:term><doc:definition>Fully charged</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>5</doc:term><doc:definition>Pending charge</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>6</doc:term><doc:definition>Pending discharge</doc:definition>
            </doc:item>
          </doc:list>
          <doc:para>
            This property is only valid if the property
            <doc:ref type="property" to="Source:Type">type</doc:ref>
            has the value "battery".
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>

    <property name="WarningLevel" type="u" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            Warning level of the battery:
          </doc:para>
          <doc:list>
            <doc:item>
              <doc:term>0</doc:term><doc:definition>Unknown</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>1</doc:term><doc:definition>None</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>2</doc:term><doc:definition>Discharging (only for UPSes)</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>3</doc:term><doc:definition>Low</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>4</doc:term><doc:definition>Critical</doc:definition>
            </doc:item>
            <doc:item>
              <doc:term>5</doc:term><doc:definition>Action</doc:definition>
            </doc:item>
          </doc:list>
        </doc:description>
      </doc:doc>
    </property>

    <property name="IconName" type="s" access="read">
      <doc:doc>
        <doc:description>
          <doc:para>
            An icon name, following the <a href="http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html">Icon Naming Specification</a>
          </doc:para>
        </doc:description>
      </doc:doc>
    </property>
  </interface>

</node>
