<?xml version="1.0" ?>
<node name="/org/ffado/Control/">

  <interface name="org.ffado.Control.Element.Element">
      <method name="getId">
          <arg type="t" name="id" direction="out"/>
      </method>
      <method name="getName">
          <arg type="s" name="name" direction="out"/>
      </method>
      <method name="getLabel">
          <arg type="s" name="label" direction="out"/>
      </method>
      <method name="getDescription">
          <arg type="s" name="description" direction="out"/>
      </method>
      <method name="canChangeValue">
          <arg type="b" name="can_change" direction="out"/>
      </method>
      <method name="getVerboseLevel">
          <arg type="i" name="level" direction="out"/>
      </method>
      <method name="setVerboseLevel">
          <arg type="i" name="level" direction="in"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.Container">
      <method name="getNbElements">
          <arg type="i" name="count" direction="out"/>
      </method>
      <method name="getElementName">
          <arg type="i" name="id" direction="in"/>
          <arg type="s" name="name" direction="out"/>
      </method>
      <signal name="Destroyed"></signal>
      <signal name="Updated"></signal>
      <signal name="PreUpdate"></signal>
      <signal name="PostUpdate"></signal>
  </interface>

  <interface name="org.ffado.Control.Element.ConfigRomX">
      <method name="getGUID">
          <arg type="s" name="guid" direction="out"/>
      </method>
      <method name="getVendorName">
          <arg type="s" name="vendorname" direction="out"/>
      </method>
      <method name="getModelName">
          <arg type="s" name="modelname" direction="out"/>
      </method>
      <method name="getVendorId">
          <arg type="i" name="vendorid" direction="out"/>
      </method>
      <method name="getModelId">
          <arg type="i" name="modelid" direction="out"/>
      </method>
      <method name="getUnitVersion">
          <arg type="i" name="unitversion" direction="out"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.Continuous">
      <method name="setValue">
          <arg type="d" name="value" direction="in"/>
          <arg type="d" name="value" direction="out"/>
      </method>
      <method name="getValue">
          <arg type="d" name="value" direction="out"/>
      </method>
      <method name="getMinimum">
          <arg type="d" name="value" direction="out"/>
      </method>
      <method name="getMaximum">
          <arg type="d" name="value" direction="out"/>
      </method>
      <method name="setValueIdx">
          <arg type="i" name="idx" direction="in"/>
          <arg type="d" name="value" direction="in"/>
          <arg type="d" name="value" direction="out"/>
      </method>
      <method name="getValueIdx">
          <arg type="i" name="idx" direction="in"/>
          <arg type="d" name="value" direction="out"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.Discrete">
      <method name="setValue">
          <arg type="i" name="value" direction="in"/>
          <arg type="i" name="value" direction="out"/>
      </method>
      <method name="getValue">
          <arg type="i" name="value" direction="out"/>
      </method>
      <method name="setValueIdx">
          <arg type="i" name="idx" direction="in"/>
          <arg type="i" name="value" direction="in"/>
          <arg type="i" name="value" direction="out"/>
      </method>
      <method name="getValueIdx">
          <arg type="i" name="idx" direction="in"/>
          <arg type="i" name="value" direction="out"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.Text">
      <method name="setValue">
          <arg type="s" name="value" direction="in"/>
          <arg type="s" name="value" direction="out"/>
      </method>
      <method name="getValue">
          <arg type="s" name="value" direction="out"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.Register">
      <method name="setValue">
          <arg type="t" name="address" direction="in"/>
          <arg type="t" name="value" direction="in"/>
          <arg type="t" name="value" direction="out"/>
      </method>
      <method name="getValue">
          <arg type="t" name="address" direction="in"/>
          <arg type="t" name="value" direction="out"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.Enum">
      <method name="select">
          <arg type="i" name="idx" direction="in"/>
          <arg type="i" name="success" direction="out"/>
      </method>
      <method name="selected">
          <arg type="i" name="idx" direction="out"/>
      </method>
      <method name="count">
          <arg type="i" name="count" direction="out"/>
      </method>
      <method name="getEnumLabel">
          <arg type="i" name="idx" direction="in"/>
          <arg type="s" name="label" direction="out"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.AttributeEnum">
      <method name="select">
          <arg type="i" name="idx" direction="in"/>
          <arg type="i" name="success" direction="out"/>
      </method>
      <method name="selected">
          <arg type="i" name="idx" direction="out"/>
      </method>
      <method name="count">
          <arg type="i" name="count" direction="out"/>
      </method>
      <method name="attributeCount">
          <arg type="i" name="count" direction="out"/>
      </method>
      <method name="getEnumLabel">
          <arg type="i" name="idx" direction="in"/>
          <arg type="s" name="label" direction="out"/>
      </method>
      <method name="getAttributeValue">
          <arg type="i" name="idx" direction="in"/>
          <arg type="s" name="value" direction="out"/>
      </method>
      <method name="getAttributeName">
          <arg type="i" name="idx" direction="in"/>
          <arg type="s" name="name" direction="out"/>
      </method>
  </interface>

  <interface name="org.ffado.Control.Element.MatrixMixer">
      <method name="setValue">
          <arg type="i" name="row" direction="in"/>
          <arg type="i" name="col" direction="in"/>
          <arg type="d" name="value" direction="in"/>
          <arg type="d" name="value" direction="out"/>
      </method>
      <method name="getValue">
          <arg type="i" name="row" direction="in"/>
          <arg type="i" name="col" direction="in"/>
          <arg type="d" name="value" direction="out"/>
      </method>
      <method name="canWrite">
          <arg type="i" name="row" direction="in"/>
          <arg type="i" name="col" direction="in"/>
          <arg type="i" name="value" direction="out"/>
      </method>
      <method name="getRowName">
          <arg type="i" name="row" direction="in"/>
          <arg type="s" name="rowname" direction="out"/>
      </method>
      <method name="getColName">
          <arg type="i" name="col" direction="in"/>
          <arg type="s" name="colname" direction="out"/>
      </method>
      <method name="getRowCount">
          <arg type="i" name="nbrows" direction="out"/>
      </method>
      <method name="getColCount">
          <arg type="i" name="nbrows" direction="out"/>
      </method>

  </interface>

</node>
