<?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="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>
    <method name="CancelScan">
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
      <tp:docstring>
        Attempts to cancel the scan job specified by the given UUID.
      </tp:docstring>
      <arg name="cancel_scan_request" type="ay" direction="in"/>
        <tp:docstring>
          Serialized CancelScanRequest proto specifying the scan job to cancel.
        </tp:docstring>
      <arg name="cancel_scan_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>
