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

<node name="/org/chromium/lorgnette/Manager" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensio
ns-v0">
  <interface name="org.chromium.lorgnette.Manager">
    <method name="ListScanners">
      <tp:docstring>
      </tp:docstring>
      <arg name="scanner_list" type="ay" direction="out">
        <tp:docstring>
          The list of connected scanners. Returns a protobuf representing a list
          of SaneDevice structs as provided by SANE.
        </tp:docstring>
      </arg>
    </method>
    <method name="GetScannerCapabilities">
      <tp:docstring>
        Returns the supported capabilities for scanner |device_name|.
      </tp:docstring>
      <arg name="device_name" type="s" direction="in">
        <tp:docstring>
          Device name (gained from "ListScanners").
        </tp:docstring>
      </arg>
      <arg name="capabilities" type="ay" direction="out">
        <tp:docstring>
          Serialized ScannerCapabilities proto.
        </tp:docstring>
      </arg>
    </method>
    <method name="StartScan">
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
      <tp:docstring>
        Sets up a multi-page scan job.
        Initiates a connection to the scanner and prepares for scanning. Once
        called, the client can call GetNextImage to fetch image data.
      </tp:docstring>
      <arg name="start_scan_request" type="ay" direction="in"/>
        <tp:docstring>
          Serialized StartScanRequest proto specifying the scanner to use and
          the settings for the scan.
        </tp:docstring>
      <arg name="start_scan_response" type="ay" direction="out"/>
    </method>
    <method name="StartScanMultiPage">
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
      <tp:docstring>
        Sets up a multi-page scan job.
        Initiates a connection to the scanner, and prepares for scanning. Once
        called, the client can call GetNextPage to fetch image data.
      </tp:docstring>
      <arg name="start_scan_request" type="ay" direction="in"/>
        <tp:docstring>
          Serialized StartScanRequest proto specifying the scanner to use and
          the settings for the scan.
        </tp:docstring>
      <arg name="start_scan_response" type="ay" direction="out"/>
    </method>
    <method name="GetNextImage">
      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
      <tp:docstring>
        Reads the next image for the given scan job and outputs image data to
        out_fd.

        A response will be sent once image acquisition has started successfully
        or if acquiring the image failed.
      </tp:docstring>
      <arg name="get_next_image_request" type="ay" direction="in"/>
        <tp:docstring>
          Serialized GetNextImageRequest proto specifying the scan job uuid.
        </tp:docstring>
      <arg name="out_fd" type="h" direction="in"/>
        <tp:docstring>
          Output file descriptor. PNG image data will be written to this fd.
        </tp:docstring>
      <arg name="get_next_image_response" type="ay" direction="out" />
    </method>
    <signal name="ScanStatusChanged">
      <arg name="scan_status_changed_signal" type="ay" direction="out" />
        <tp:docstring>
          A serialized ScanStatusChangedSignal proto, containing a scan id, scan
          state, and potentially a failure reason or progress percentage.
        </tp:docstring>
    </signal>
  </interface>
</node>
