<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Fwupd" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="GUsb" version="1.0"/>
  <include name="Gio" version="2.0"/>
  <package name="fwupdplugin"/>
  <c:include name="fwupdplugin.h"/>
  <namespace name="FwupdPlugin"
             version="1.0"
             shared-library="libfwupd.so.2"
             c:identifier-prefixes="Fu"
             c:symbol-prefixes="fu">
    <alias name="EndianType" c:type="FuEndianType">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="44">The endian type, e.g. %G_LITTLE_ENDIAN</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="49"/>
      <type name="guint" c:type="guint"/>
    </alias>
    <alias name="FirmwareExportFlags" c:type="FuFirmwareExportFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="44">The firmware export flags.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="49"/>
      <type name="guint64" c:type="guint64"/>
    </alias>
    <alias name="FirmwareFlags" c:type="FuFirmwareFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="125">The firmware flags.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="130"/>
      <type name="guint64" c:type="guint64"/>
    </alias>
    <bitfield name="AppFlags" c:type="FuAppFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="14">The flags to use when loading an application.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="26"/>
      <member name="none" value="0" c:identifier="FU_APP_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="16">No flags set</doc>
      </member>
      <member name="no_idle_sources"
              value="1"
              c:identifier="FU_APP_FLAGS_NO_IDLE_SOURCES">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="17">Disallow idle sources</doc>
      </member>
    </bitfield>
    <class name="Archive"
           c:symbol-prefix="archive"
           c:type="FuArchive"
           parent="GObject.Object"
           glib:type-name="FuArchive"
           glib:get-type="fu_archive_get_type"
           glib:type-struct="ArchiveClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-archive.c"
           line="21">An in-memory archive decompressor</doc>
      <source-position filename="../libfwupdplugin/fu-archive.h" line="13"/>
      <constructor name="new"
                   c:identifier="fu_archive_new"
                   version="1.2.2"
                   throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-archive.c"
             line="238">Parses @data as an archive and decompresses all files to memory blobs.</doc>
        <source-position filename="../libfwupdplugin/fu-archive.h" line="46"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-archive.c"
               line="246">a #FuArchive, or %NULL if the archive was invalid in any way.</doc>
          <type name="Archive" c:type="FuArchive*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-archive.c"
                 line="240">archive contents</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-archive.c"
                 line="241">archive flags, e.g. %FU_ARCHIVE_FLAG_NONE</doc>
            <type name="ArchiveFlags" c:type="FuArchiveFlags"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="iterate"
              c:identifier="fu_archive_iterate"
              version="1.3.4"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-archive.c"
             line="88">Iterates over the archive contents, calling the given function for each
of the files found. If any @callback returns %FALSE scanning is aborted.</doc>
        <source-position filename="../libfwupdplugin/fu-archive.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-archive.c"
               line="98">True if no @callback returned FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-archive.c"
                 line="90">a #FuArchive</doc>
            <type name="Archive" c:type="FuArchive*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-archive.c"
                 line="91">a #FuArchiveIterateFunc.</doc>
            <type name="ArchiveIterateFunc" c:type="FuArchiveIterateFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-archive.c"
                 line="92">user data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_by_fn"
              c:identifier="fu_archive_lookup_by_fn"
              version="1.2.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-archive.c"
             line="57">Finds the blob referenced by filename</doc>
        <source-position filename="../libfwupdplugin/fu-archive.h" line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-archive.c"
               line="65">a #GBytes, or %NULL if the filename was not found</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-archive.c"
                 line="59">a #FuArchive</doc>
            <type name="Archive" c:type="FuArchive*"/>
          </instance-parameter>
          <parameter name="fn" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-archive.c"
                 line="60">a filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="ArchiveClass"
            c:type="FuArchiveClass"
            glib:is-gtype-struct-for="Archive">
      <source-position filename="../libfwupdplugin/fu-archive.h" line="13"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <bitfield name="ArchiveFlags" c:type="FuArchiveFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-archive.h"
           line="15">The flags to use when loading the archive.</doc>
      <source-position filename="../libfwupdplugin/fu-archive.h" line="27"/>
      <member name="none" value="0" c:identifier="FU_ARCHIVE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-archive.h"
             line="17">No flags set</doc>
      </member>
      <member name="ignore_path"
              value="1"
              c:identifier="FU_ARCHIVE_FLAG_IGNORE_PATH">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-archive.h"
             line="18">Ignore any path component</doc>
      </member>
    </bitfield>
    <callback name="ArchiveIterateFunc"
              c:type="FuArchiveIterateFunc"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-archive.h"
           line="29">The archive iteration callback.</doc>
      <source-position filename="../libfwupdplugin/fu-archive.h" line="39"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-archive.h"
               line="31">a #FuArchive</doc>
          <type name="Archive" c:type="FuArchive*"/>
        </parameter>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-archive.h"
               line="32">a filename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-archive.h"
               line="33">the blob referenced by @filename</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-archive.h"
               line="34">user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <constant name="BATTERY_VALUE_INVALID"
              value="101"
              c:type="FU_BATTERY_VALUE_INVALID">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="111">This value signifies the battery level is either unset, or the value cannot
be discovered.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="117"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="BUILD_HASH"
              value="db81d5c69501c62995f3e8f5fd5b3c32bab4f57796e87bbd0d2e2c183aeb8552"
              c:type="FU_BUILD_HASH">
      <source-position filename="../libfwupdplugin/fu-hash.h" line="2"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="Backend"
           c:symbol-prefix="backend"
           c:type="FuBackend"
           parent="GObject.Object"
           glib:type-name="FuBackend"
           glib:get-type="fu_backend_get_type"
           glib:type-struct="BackendClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-backend.c"
           line="13">An device discovery backend, for instance USB, BlueZ or UDev.

See also: [class@FuDevice]</doc>
      <source-position filename="../libfwupdplugin/fu-backend.h" line="27"/>
      <virtual-method name="coldplug"
                      invoker="coldplug"
                      version="1.6.1"
                      throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="138">Adds devices using the subclassed backend. If fu_backend_setup() has not
already been called then it is run before this function automatically.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="22"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="146">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="140">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="setup" invoker="setup" version="1.6.1" throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="105">Sets up the backend ready for use, which typically calls the subclassed setup
function. No devices should be added or removed at this point.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="19"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="113">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="107">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="coldplug"
              c:identifier="fu_backend_coldplug"
              version="1.6.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="138">Adds devices using the subclassed backend. If fu_backend_setup() has not
already been called then it is run before this function automatically.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="146">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="140">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="device_added"
              c:identifier="fu_backend_device_added"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="48">Emits a signal that indicates the device has been added.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="50">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="51">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="device_changed"
              c:identifier="fu_backend_device_changed"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="88">Emits a signal that indicates the device has been changed.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="47"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="90">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="91">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="device_removed"
              c:identifier="fu_backend_device_removed"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="69">Emits a signal that indicates the device has been removed.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="71">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="72">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_context"
              c:identifier="fu_backend_get_context"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="181">Gets the context for a backend.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="30"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="187">a #FuContext or %NULL if not set</doc>
          <type name="Context" c:type="FuContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="183">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_devices"
              c:identifier="fu_backend_get_devices"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="261">Gets all the devices added by the backend.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="34"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="267">devices</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Device"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="263">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_enabled"
              c:identifier="fu_backend_get_enabled"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="198">Return the boolean value of a key if it's been configured</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="31"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="204">%TRUE if the backend is enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="200">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="fu_backend_get_name"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="163">Return the name of the backend, which is normally set by the subclass.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="29"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="169">backend name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="165">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup_by_id"
              c:identifier="fu_backend_lookup_by_id"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="233">Gets a device previously added by the backend.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="240">device, or %NULL if not found</doc>
          <type name="Device" c:type="FuDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="235">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
          <parameter name="device_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="236">a DeviceID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_enabled"
              c:identifier="fu_backend_set_enabled"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="216">Sets the backend enabled state.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="32"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="218">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
          <parameter name="enabled" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="219">enabled state</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="setup"
              c:identifier="fu_backend_setup"
              version="1.6.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-backend.c"
             line="105">Sets up the backend ready for use, which typically calls the subclassed setup
function. No devices should be added or removed at this point.</doc>
        <source-position filename="../libfwupdplugin/fu-backend.h" line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-backend.c"
               line="113">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="107">a #FuBackend</doc>
            <type name="Backend" c:type="FuBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="context"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Context"/>
      </property>
      <property name="name"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="device-added" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Device"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Device"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-removed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Device"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="BackendClass"
            c:type="FuBackendClass"
            glib:is-gtype-struct-for="Backend">
      <source-position filename="../libfwupdplugin/fu-backend.h" line="27"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="setup">
        <callback name="setup" throws="1">
          <source-position filename="../libfwupdplugin/fu-backend.h"
                           line="19"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="113">%TRUE for success</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-backend.c"
                   line="107">a #FuBackend</doc>
              <type name="Backend" c:type="FuBackend*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="coldplug">
        <callback name="coldplug" throws="1">
          <source-position filename="../libfwupdplugin/fu-backend.h"
                           line="22"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-backend.c"
                 line="146">%TRUE for success</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-backend.c"
                   line="140">a #FuBackend</doc>
              <type name="Backend" c:type="FuBackend*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="29">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="BatteryState" c:type="FuBatteryState">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="119">The device battery state.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="137"/>
      <member name="unknown" value="0" c:identifier="FU_BATTERY_STATE_UNKNOWN">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="121">Unknown</doc>
      </member>
      <member name="charging"
              value="1"
              c:identifier="FU_BATTERY_STATE_CHARGING">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="122">Charging</doc>
      </member>
      <member name="discharging"
              value="2"
              c:identifier="FU_BATTERY_STATE_DISCHARGING">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="123">Discharging</doc>
      </member>
      <member name="empty" value="3" c:identifier="FU_BATTERY_STATE_EMPTY">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="124">Empty</doc>
      </member>
      <member name="fully_charged"
              value="4"
              c:identifier="FU_BATTERY_STATE_FULLY_CHARGED">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="125">Fully charged</doc>
      </member>
    </enumeration>
    <class name="BluezDevice"
           c:symbol-prefix="bluez_device"
           c:type="FuBluezDevice"
           parent="Device"
           glib:type-name="FuBluezDevice"
           glib:get-type="fu_bluez_device_get_type"
           glib:type-struct="BluezDeviceClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-bluez-device.c"
           line="20">A BlueZ Bluetooth device.

See also: [class@FuDevice]</doc>
      <source-position filename="../libfwupdplugin/fu-bluez-device.h"
                       line="18"/>
      <method name="notify_start"
              c:identifier="fu_bluez_device_notify_start"
              version="1.5.8"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-bluez-device.c"
             line="508">Enables notifications for property changes in a UUID (StartNotify
method).</doc>
        <source-position filename="../libfwupdplugin/fu-bluez-device.h"
                         line="30"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-bluez-device.c"
               line="517">%TRUE if the method call completed successfully.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="510">a #FuBluezDevice</doc>
            <type name="BluezDevice" c:type="FuBluezDevice*"/>
          </instance-parameter>
          <parameter name="uuid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="511">the UUID, e.g. `00cde35c-7062-11eb-9439-0242ac130002`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="notify_stop"
              c:identifier="fu_bluez_device_notify_stop"
              version="1.5.8"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-bluez-device.c"
             line="545">Disables notifications for property changes in a UUID (StopNotify
method).</doc>
        <source-position filename="../libfwupdplugin/fu-bluez-device.h"
                         line="33"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-bluez-device.c"
               line="554">%TRUE if the method call completed successfully.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="547">a #FuBluezDevice</doc>
            <type name="BluezDevice" c:type="FuBluezDevice*"/>
          </instance-parameter>
          <parameter name="uuid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="548">the UUID, e.g. `00cde35c-7062-11eb-9439-0242ac130002`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read"
              c:identifier="fu_bluez_device_read"
              version="1.5.7"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-bluez-device.c"
             line="370">Reads from a UUID on the device.</doc>
        <source-position filename="../libfwupdplugin/fu-bluez-device.h"
                         line="20"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-bluez-device.c"
               line="378">data, or %NULL for error</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="372">a #FuBluezDevice</doc>
            <type name="BluezDevice" c:type="FuBluezDevice*"/>
          </instance-parameter>
          <parameter name="uuid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="373">the UUID, e.g. `00cde35c-7062-11eb-9439-0242ac130002`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_string"
              c:identifier="fu_bluez_device_read_string"
              version="1.5.7"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-bluez-device.c"
             line="427">Reads a string from a UUID on the device.</doc>
        <source-position filename="../libfwupdplugin/fu-bluez-device.h"
                         line="23"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-bluez-device.c"
               line="435">data, or %NULL for error</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="429">a #FuBluezDevice</doc>
            <type name="BluezDevice" c:type="FuBluezDevice*"/>
          </instance-parameter>
          <parameter name="uuid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="430">the UUID, e.g. `00cde35c-7062-11eb-9439-0242ac130002`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write"
              c:identifier="fu_bluez_device_write"
              version="1.5.7"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-bluez-device.c"
             line="448">Writes to a UUID on the device.</doc>
        <source-position filename="../libfwupdplugin/fu-bluez-device.h"
                         line="26"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-bluez-device.c"
               line="457">%TRUE if all the data was written</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="450">a #FuBluezDevice</doc>
            <type name="BluezDevice" c:type="FuBluezDevice*"/>
          </instance-parameter>
          <parameter name="uuid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="451">the UUID, e.g. `00cde35c-7062-11eb-9439-0242ac130002`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-bluez-device.c"
                 line="452">data array</doc>
            <array name="GLib.ByteArray" c:type="GByteArray*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <property name="object-manager"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gio.DBusObjectManager"/>
      </property>
      <property name="proxy"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gio.DBusProxy"/>
      </property>
      <field name="parent_instance">
        <type name="Device" c:type="FuDevice"/>
      </field>
      <glib:signal name="changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="BluezDeviceClass"
            c:type="FuBluezDeviceClass"
            glib:is-gtype-struct-for="BluezDevice">
      <source-position filename="../libfwupdplugin/fu-bluez-device.h"
                       line="18"/>
      <field name="parent_class">
        <type name="DeviceClass" c:type="FuDeviceClass"/>
      </field>
      <field name="__reserved">
        <array zero-terminated="0" fixed-size="31">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="Cabinet"
           c:symbol-prefix="cabinet"
           c:type="FuCabinet"
           parent="GObject.Object"
           glib:type-name="FuCabinet"
           glib:get-type="fu_cabinet_get_type"
           glib:type-struct="CabinetClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-cabinet.c"
           line="21">Cabinet archive parser and writer.

See also: [class@FuArchive]</doc>
      <source-position filename="../libfwupdplugin/fu-cabinet.h" line="15"/>
      <constructor name="new" c:identifier="fu_cabinet_new" version="1.4.0">
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="53"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-cabinet.c"
               line="1041">a #FuCabinet</doc>
          <type name="Cabinet" c:type="FuCabinet*"/>
        </return-value>
      </constructor>
      <method name="add_file"
              c:identifier="fu_cabinet_add_file"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="141">Adds a file to the silo.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="143">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
          <parameter name="basename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="144">filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="145">file data</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="export"
              c:identifier="fu_cabinet_export"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="744">Exports the cabinet archive.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-cabinet.c"
               line="752">a data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="746">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="747">export flags, e.g. %FU_CABINET_EXPORT_FLAG_NONE</doc>
            <type name="CabinetExportFlags" c:type="FuCabinetExportFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_file"
              c:identifier="fu_cabinet_get_file"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="182">Gets a file from the archive.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-cabinet.c"
               line="190">a #GBytes, or %NULL if the file does not exist</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="184">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
          <parameter name="basename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="185">filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_silo"
              c:identifier="fu_cabinet_get_silo"
              version="1.4.0"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="108">Gets the silo that represents the superset metadata of all the metainfo files
found in the archive.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-cabinet.c"
               line="115">a #XbSilo, or %NULL if the archive has not been parsed</doc>
          <type c:type="XbSilo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="110">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse"
              c:identifier="fu_cabinet_parse"
              version="1.4.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="951">Parses the cabinet archive.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-cabinet.c"
               line="960">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="953">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="954">cabinet archive</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="955">parse flags, e.g. %FU_CABINET_PARSE_FLAG_NONE</doc>
            <type name="CabinetParseFlags" c:type="FuCabinetParseFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_jcat_context"
              c:identifier="fu_cabinet_set_jcat_context"
              version="1.4.0"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="90">Sets the Jcat context, which is used for setting the trust flags on the
each release in the archive.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="56"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="92">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
          <parameter name="jcat_context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="93">a Jcat context</doc>
            <type c:type="JcatContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size_max"
              c:identifier="fu_cabinet_set_size_max"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="74">Sets the maximum size of the decompressed cabinet file.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="54"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="76">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
          <parameter name="size_max" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="77">size in bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign"
              c:identifier="fu_cabinet_sign"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.c"
             line="877">Sign the cabinet archive using JCat.</doc>
        <source-position filename="../libfwupdplugin/fu-cabinet.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-cabinet.c"
               line="887">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="879">a #FuCabinet</doc>
            <type name="Cabinet" c:type="FuCabinet*"/>
          </instance-parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="880">a PCKS#7 certificate</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="privkey" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="881">a private key</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-cabinet.c"
                 line="882">signing flags, e.g. %FU_CABINET_SIGN_FLAG_NONE</doc>
            <type name="CabinetSignFlags" c:type="FuCabinetSignFlags"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="CabinetClass"
            c:type="FuCabinetClass"
            glib:is-gtype-struct-for="Cabinet">
      <source-position filename="../libfwupdplugin/fu-cabinet.h" line="15"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="CabinetExportFlags" c:type="FuCabinetExportFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-cabinet.h"
           line="29">The flags to use when exporting the archive.</doc>
      <source-position filename="../libfwupdplugin/fu-cabinet.h" line="39"/>
      <member name="none" value="0" c:identifier="FU_CABINET_EXPORT_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.h"
             line="31">No flags set</doc>
      </member>
    </enumeration>
    <enumeration name="CabinetParseFlags" c:type="FuCabinetParseFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-cabinet.h"
           line="17">The flags to use when loading the cabinet.</doc>
      <source-position filename="../libfwupdplugin/fu-cabinet.h" line="27"/>
      <member name="none" value="0" c:identifier="FU_CABINET_PARSE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.h"
             line="19">No flags set</doc>
      </member>
    </enumeration>
    <enumeration name="CabinetSignFlags" c:type="FuCabinetSignFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-cabinet.h"
           line="41">The flags to use when signing the archive.</doc>
      <source-position filename="../libfwupdplugin/fu-cabinet.h" line="51"/>
      <member name="none" value="0" c:identifier="FU_CABINET_SIGN_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-cabinet.h"
             line="43">No flags set</doc>
      </member>
    </enumeration>
    <class name="Chunk"
           c:symbol-prefix="chunk"
           c:type="FuChunk"
           parent="GObject.Object"
           glib:type-name="FuChunk"
           glib:get-type="fu_chunk_get_type"
           glib:type-struct="ChunkClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-chunk.c"
           line="16">A optionally mutable packet of chunked data with address, page and index.</doc>
      <source-position filename="../libfwupdplugin/fu-chunk.h" line="13"/>
      <constructor name="bytes_new"
                   c:identifier="fu_chunk_bytes_new"
                   version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="274">Creates a new packet of data.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="15"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="280">a #FuChunk</doc>
          <type name="Chunk" c:type="FuChunk*"/>
        </return-value>
        <parameters>
          <parameter name="bytes"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="276">data</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new" c:identifier="fu_chunk_new" version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="244">Creates a new packet of chunked data.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="32"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="254">a #FuChunk</doc>
          <type name="Chunk" c:type="FuChunk*"/>
        </return-value>
        <parameters>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="246">the packet number</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="page" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="247">the hardware memory page</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="248">the address *within* the page</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="249">the data</doc>
            <type name="guint8" c:type="const guint8*"/>
          </parameter>
          <parameter name="data_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="250">size of @data_sz</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="array_mutable_new"
                c:identifier="fu_chunk_array_mutable_new"
                version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="364">Chunks a mutable blob of memory into packets, ensuring each packet does not
cross a package boundary and is less that a specific transfer size.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="45"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="375">array of packets</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Chunk"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="366">a mutable blob of memory</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="data_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="367">size of @data_sz</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="addr_start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="368">the hardware address offset, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="page_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="369">the hardware page size, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="packet_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="370">the transfer size, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </function>
      <function name="array_new"
                c:identifier="fu_chunk_array_new"
                version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="401">Chunks a linear blob of memory into packets, ensuring each packet does not
cross a package boundary and is less that a specific transfer size.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="40"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="412">array of packets</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Chunk"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="403">an optional linear blob of memory</doc>
            <type name="guint8" c:type="const guint8*"/>
          </parameter>
          <parameter name="data_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="404">size of @data_sz</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="addr_start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="405">the hardware address offset, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="page_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="406">the hardware page size, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="packet_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="407">the transfer size, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </function>
      <function name="array_new_from_bytes"
                c:identifier="fu_chunk_array_new_from_bytes"
                version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="485">Chunks a linear blob of memory into packets, ensuring each packet does not
cross a package boundary and is less that a specific transfer size.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="50"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="495">array of packets</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Chunk"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="blob" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="487">data</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="addr_start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="488">the hardware address offset, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="page_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="489">the hardware page size, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="packet_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="490">the transfer size, or 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </function>
      <function name="array_to_string"
                c:identifier="fu_chunk_array_to_string"
                version="1.0.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="336">Converts all the chunked packets in an array to a string representation.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="39"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="342">a string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="chunks" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="338">array of chunks</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="Chunk"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <method name="get_address"
              c:identifier="fu_chunk_get_address"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="117">Gets the address of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="24"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="123">address</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="119">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bytes"
              c:identifier="fu_chunk_get_bytes"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="225">Gets the data of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="30"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="231">data</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="227">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="fu_chunk_get_data" version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="134">Gets the data of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="25"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="140">bytes</doc>
          <type name="guint8" c:type="const guint8*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="136">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data_out"
              c:identifier="fu_chunk_get_data_out"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="151">Gets the mutable data of the chunk.

WARNING: At the moment fu_chunk_get_data_out() returns the same data as
fu_chunk_get_data() in all cases. The caller should verify the data passed to
fu_chunk_array_new() is also writable (i.e. not `const` or `mmap`) before
using this function.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="26"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="162">bytes</doc>
          <type name="guint8" c:type="guint8*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="153">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data_sz"
              c:identifier="fu_chunk_get_data_sz"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="179">Gets the data size of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="27"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="185">size in bytes</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="181">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_idx" c:identifier="fu_chunk_get_idx" version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="51">Gets the index of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="18"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="57">index</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="53">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_page" c:identifier="fu_chunk_get_page" version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="84">Gets the page of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="21"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="90">page</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="86">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_address"
              c:identifier="fu_chunk_set_address"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="101">Sets the address of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="22"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="103">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="104">memory address</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_bytes"
              c:identifier="fu_chunk_set_bytes"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="196">Sets the data to use for the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="28"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="198">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
          <parameter name="bytes"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="199">data</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_idx" c:identifier="fu_chunk_set_idx" version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="35">Sets the index of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="16"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="37">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="38">index, starting at 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_page" c:identifier="fu_chunk_set_page" version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="68">Sets the page of the chunk.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="19"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="70">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
          <parameter name="page" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="71">page number, starting at 0</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="fu_chunk_to_string"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-chunk.c"
             line="312">Converts the chunked packet to a string representation.</doc>
        <source-position filename="../libfwupdplugin/fu-chunk.h" line="37"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-chunk.c"
               line="318">a string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-chunk.c"
                 line="314">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="ChunkClass"
            c:type="FuChunkClass"
            glib:is-gtype-struct-for="Chunk">
      <source-position filename="../libfwupdplugin/fu-chunk.h" line="13"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="Context"
           c:symbol-prefix="context"
           c:type="FuContext"
           parent="GObject.Object"
           glib:type-name="FuContext"
           glib:get-type="fu_context_get_type"
           glib:type-struct="ContextClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-context.c"
           line="15">A context that represents the shared system state. This object is shared
between the engine, the plugins and the devices.</doc>
      <source-position filename="../libfwupdplugin/fu-context.h" line="22"/>
      <constructor name="new" c:identifier="fu_context_new" version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="801">Creates a new #FuContext</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="13"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="806">the object</doc>
          <type name="Context" c:type="FuContext*"/>
        </return-value>
      </constructor>
      <virtual-method name="security_changed"
                      invoker="security_changed"
                      version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="489">Informs the daemon that the HSI state may have changed.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="19"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="491">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="add_compile_version"
              c:identifier="fu_context_add_compile_version"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="246">Sets a compile-time version of a specific dependency.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="58"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="248">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="component_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="249">an AppStream component id, e.g. `org.gnome.Software`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="250">a version string, e.g. `1.2.3`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_firmware_gtype"
              c:identifier="fu_context_add_firmware_gtype"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="338">Adds a firmware #GType which is used when creating devices. If @id is not
specified then it is guessed using the #GType name.

Plugins can use this method only in fu_plugin_init()</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="23"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="340">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="341">an optional string describing the type, e.g. `ihex`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="342">a #GType e.g. `FU_TYPE_FOO_FIRMWARE`</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_quirk_key"
              c:identifier="fu_context_add_quirk_key"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="417">Adds a possible quirk key. If added by a plugin it should be namespaced
using the plugin name, where possible.

Plugins can use this method only in fu_plugin_init()</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="70"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="419">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="420">a quirk string, e.g. `DfuVersion`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_runtime_version"
              c:identifier="fu_context_add_runtime_version"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="200">Sets a runtime version of a specific dependency.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="202">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="component_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="203">an AppStream component id, e.g. `org.gnome.Software`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="204">a version string, e.g. `1.2.3`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_udev_subsystem"
              c:identifier="fu_context_add_udev_subsystem"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="292">Registers the udev subsystem to be watched by the daemon.

Plugins can use this method only in fu_plugin_init()</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="294">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="subsystem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="295">a subsystem name, e.g. `pciport`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_battery_level"
              c:identifier="fu_context_get_battery_level"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="603">Gets the system battery level in percent.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="609">percentage value, or %FU_BATTERY_VALUE_INVALID for unknown</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="605">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_battery_state"
              c:identifier="fu_context_get_battery_state"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="563">Gets if the system is on battery power, e.g. UPS or laptop battery.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="569">a battery state, e.g. %FU_BATTERY_STATE_DISCHARGING</doc>
          <type name="BatteryState" c:type="FuBatteryState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="565">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_battery_threshold"
              c:identifier="fu_context_get_battery_threshold"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="643">Gets the system battery threshold in percent.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="649">percentage value, or %FU_BATTERY_VALUE_INVALID for unknown</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="645">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_firmware_gtype_by_id"
              c:identifier="fu_context_get_firmware_gtype_by_id"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="362">Returns the #GType using the firmware @id.</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="27"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="369">a #GType, or %G_TYPE_INVALID</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="364">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="365">an string describing the type, e.g. `ihex`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_firmware_gtype_ids"
              c:identifier="fu_context_get_firmware_gtype_ids"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="390">Returns all the firmware #GType IDs.</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="26"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="396">List of subsystems</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="392">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_hwid_guids"
              c:identifier="fu_context_get_hwid_guids"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="138">Returns all the HWIDs defined in the system. All hardware IDs on a
specific system can be shown using the `fwupdmgr hwids` command.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="145">an array of GUIDs</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="140">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_hwid_replace_value"
              c:identifier="fu_context_get_hwid_replace_value"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="178">Gets the replacement value for a specific key. All hardware IDs on a
specific system can be shown using the `fwupdmgr hwids` command.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="187">a string, or %NULL for error.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="180">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="181">a key, e.g. `HardwareID-3` or %FU_HWIDS_KEY_PRODUCT_SKU</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_hwid_value"
              c:identifier="fu_context_get_hwid_value"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="157">Gets the cached value for one specific key that is valid ASCII and suitable
for display.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="165">the string, e.g. `1.2.3`, or %NULL if not found</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="159">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="160">a DMI ID, e.g. `BiosVersion`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_smbios_data"
              c:identifier="fu_context_get_smbios_data"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="77">Gets a hardware SMBIOS data.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="84">a #GBytes, or %NULL</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="79">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="structure_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="80">a SMBIOS structure type, e.g. %FU_SMBIOS_STRUCTURE_TYPE_BIOS</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_smbios_integer"
              c:identifier="fu_context_get_smbios_integer"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="96">Reads an integer value from the SMBIOS string table of a specific structure.

The @type and @offset can be referenced from the DMTF SMBIOS specification:
https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="107">an integer, or %G_MAXUINT if invalid or not found</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="98">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="99">a structure type, e.g. %FU_SMBIOS_STRUCTURE_TYPE_BIOS</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="100">a structure offset</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_smbios_string"
              c:identifier="fu_context_get_smbios_string"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="54">Gets a hardware SMBIOS string.

The @type and @offset can be referenced from the DMTF SMBIOS specification:
https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="38"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="65">a string, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="56">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="structure_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="57">a SMBIOS structure type, e.g. %FU_SMBIOS_STRUCTURE_TYPE_BIOS</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="58">a SMBIOS offset</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_udev_subsystems"
              c:identifier="fu_context_get_udev_subsystems"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="320">Gets the udev subsystems required by all plugins.</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="29"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="326">List of subsystems</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="322">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_hwid_guid"
              c:identifier="fu_context_has_hwid_guid"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="119">Finds out if a hardware GUID exists.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="126">%TRUE if the GUID exists</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="121">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="122">a GUID, e.g. `059eb22d-6dc7-59af-abd3-94bbe017f67c`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_hwinfo"
              c:identifier="fu_context_load_hwinfo"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="504">Loads all hardware information parts of the context.</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="14"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="511">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="506">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load_quirks"
              c:identifier="fu_context_load_quirks"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="534">Loads all quirks into the context.</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="16"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="542">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="536">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="537">quirks load flags, e.g. %FU_QUIRKS_LOAD_FLAG_READONLY_FS</doc>
            <type name="QuirksLoadFlags" c:type="FuQuirksLoadFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_quirk_by_id"
              c:identifier="fu_context_lookup_quirk_by_id"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="440">Looks up an entry in the hardware database using a string value.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="448">values from the database, or %NULL if not found</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="442">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="443">GUID to lookup</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="444">an ID to match the entry, e.g. `Summary`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_quirk_by_id_iter"
              c:identifier="fu_context_lookup_quirk_by_id_iter"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="465">Looks up all entries in the hardware database using a GUID value.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.c"
               line="474">%TRUE if the ID was found, and @iter was called</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="467">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="468">GUID to lookup</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="iter_cb"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="469">a function to call for each result</doc>
            <type name="ContextLookupIter" c:type="FuContextLookupIter"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="470">user data passed to @iter_cb</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="security_changed"
              c:identifier="fu_context_security_changed"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="489">Informs the daemon that the HSI state may have changed.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="491">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_battery_level"
              c:identifier="fu_context_set_battery_level"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="621">Sets the system battery level in percent.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="623">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="battery_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="624">value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_battery_state"
              c:identifier="fu_context_set_battery_state"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="581">Sets if the system is on battery power, e.g. UPS or laptop battery.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="583">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="battery_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="584">a battery state, e.g. %FU_BATTERY_STATE_DISCHARGING</doc>
            <type name="BatteryState" c:type="FuBatteryState"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_battery_threshold"
              c:identifier="fu_context_set_battery_threshold"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="661">Sets the system battery threshold in percent.</doc>
        <source-position filename="../libfwupdplugin/fu-context.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="663">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="battery_threshold" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="664">value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_compile_versions"
              c:identifier="fu_context_set_compile_versions"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="274">Sets the compile time versions for a plugin.</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="21"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="276">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="compile_versions" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="277">dictionary of versions</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="set_runtime_versions"
              c:identifier="fu_context_set_runtime_versions"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-context.c"
             line="228">Sets the runtime versions for a plugin.</doc>
        <source-position filename="../libfwupdplugin/fu-context-private.h"
                         line="19"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="230">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </instance-parameter>
          <parameter name="runtime_versions" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-context.c"
                 line="231">dictionary of versions</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <property name="battery-level" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="battery-state" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="battery-threshold"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="security-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ContextClass"
            c:type="FuContextClass"
            glib:is-gtype-struct-for="Context">
      <source-position filename="../libfwupdplugin/fu-context.h" line="22"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="security_changed">
        <callback name="security_changed">
          <source-position filename="../libfwupdplugin/fu-context.h"
                           line="19"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-context.c"
                   line="491">a #FuContext</doc>
              <type name="Context" c:type="FuContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="30">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <callback name="ContextLookupIter" c:type="FuContextLookupIter">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-context.h"
           line="24">The context lookup iteration callback.</doc>
      <source-position filename="../libfwupdplugin/fu-context.h" line="33"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.h"
               line="26">a #FuContext</doc>
          <type name="Context" c:type="FuContext*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.h"
               line="27">a key</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.h"
               line="28">a value</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-context.h"
               line="29">user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="CpuVendor" c:type="FuCpuVendor">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="95">The CPU vendor.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="109"/>
      <member name="unknown" value="0" c:identifier="FU_CPU_VENDOR_UNKNOWN">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="97">Unknown</doc>
      </member>
      <member name="intel" value="1" c:identifier="FU_CPU_VENDOR_INTEL">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="98">Intel</doc>
      </member>
      <member name="amd" value="2" c:identifier="FU_CPU_VENDOR_AMD">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="99">AMD</doc>
      </member>
    </enumeration>
    <constant name="DEVICE_METADATA_TBT_IS_SAFE_MODE"
              value="Thunderbolt::IsSafeMode"
              c:type="FU_DEVICE_METADATA_TBT_IS_SAFE_MODE">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device-metadata.h"
           line="11">If the Thunderbolt hardware is stuck in safe mode.
Consumed by the thunderbolt plugin.</doc>
      <source-position filename="../libfwupdplugin/fu-device-metadata.h"
                       line="17"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DEVICE_METADATA_UEFI_CAPSULE_FLAGS"
              value="UefiCapsuleFlags"
              c:type="FU_DEVICE_METADATA_UEFI_CAPSULE_FLAGS">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device-metadata.h"
           line="38">The capsule flags for the UEFI device, e.g. %EFI_CAPSULE_HEADER_FLAGS_PERSIST_ACROSS_RESET
Consumed by the uefi plugin when other devices register fake devices that
need to be handled as a capsule update.</doc>
      <source-position filename="../libfwupdplugin/fu-device-metadata.h"
                       line="45"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DEVICE_METADATA_UEFI_DEVICE_KIND"
              value="UefiDeviceKind"
              c:type="FU_DEVICE_METADATA_UEFI_DEVICE_KIND">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device-metadata.h"
           line="19">The type of UEFI device, e.g. "system-firmware" or "device-firmware"
Consumed by the uefi plugin when other devices register fake devices that
need to be handled as a capsule update.</doc>
      <source-position filename="../libfwupdplugin/fu-device-metadata.h"
                       line="26"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DEVICE_METADATA_UEFI_FW_VERSION"
              value="UefiFwVersion"
              c:type="FU_DEVICE_METADATA_UEFI_FW_VERSION">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device-metadata.h"
           line="28">The firmware version of the UEFI device specified as a 32 bit unsigned
integer.
Consumed by the uefi plugin when other devices register fake devices that
need to be handled as a capsule update.</doc>
      <source-position filename="../libfwupdplugin/fu-device-metadata.h"
                       line="36"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DEVICE_REMOVE_DELAY_RE_ENUMERATE"
              value="10000"
              c:type="FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device.h"
           line="121">The default removal delay for device re-enumeration taking into account a
chain of slow USB hubs. This should be used when the device is able to
reset itself between bootloader-&gt;runtime-&gt;bootloader.</doc>
      <source-position filename="../libfwupdplugin/fu-device.h" line="128"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="DEVICE_REMOVE_DELAY_USER_REPLUG"
              value="40000"
              c:type="FU_DEVICE_REMOVE_DELAY_USER_REPLUG">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device.h"
           line="130">The default removal delay for device re-plug taking into account humans
being slow and clumsy. This should be used when the user has to do something,
e.g. unplug, press a magic button and then replug.</doc>
      <source-position filename="../libfwupdplugin/fu-device.h" line="137"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="DFU_FIRMARE_VERSION_ATMEL_AVR"
              value="65281"
              c:type="FU_DFU_FIRMARE_VERSION_ATMEL_AVR"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-dfu-firmware.h"
           line="55">The Atmel AVR version of the DFU standard in BCD format.</doc>
      <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                       line="62"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="DFU_FIRMARE_VERSION_DFUSE"
              value="282"
              c:type="FU_DFU_FIRMARE_VERSION_DFUSE"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-dfu-firmware.h"
           line="46">The DfuSe version of the DFU standard in BCD format, defined by ST.</doc>
      <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                       line="53"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="DFU_FIRMARE_VERSION_DFU_1_0"
              value="256"
              c:type="FU_DFU_FIRMARE_VERSION_DFU_1_0"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-dfu-firmware.h"
           line="28">The 1.0 version of the DFU standard in BCD format.</doc>
      <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                       line="35"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="DFU_FIRMARE_VERSION_DFU_1_1"
              value="272"
              c:type="FU_DFU_FIRMARE_VERSION_DFU_1_1"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-dfu-firmware.h"
           line="37">The 1.1 version of the DFU standard in BCD format.</doc>
      <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                       line="44"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="DFU_FIRMARE_VERSION_UNKNOWN"
              value="0"
              c:type="FU_DFU_FIRMARE_VERSION_UNKNOWN"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-dfu-firmware.h"
           line="19">Unknown version of the DFU standard in BCD format.</doc>
      <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                       line="26"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Device"
           c:symbol-prefix="device"
           c:type="FuDevice"
           parent="Fwupd.Device"
           glib:type-name="FuDevice"
           glib:get-type="fu_device_get_type"
           glib:type-struct="DeviceClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device.c"
           line="29">A physical or logical device that is exported to the daemon.

See also: [class@FuDeviceLocker], [class@Fwupd.Device]</doc>
      <source-position filename="../libfwupdplugin/fu-device.h" line="105"/>
      <constructor name="new" c:identifier="fu_device_new" version="0.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="4046">Creates a new #Fudevice</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="154"/>
        <return-value transfer-ownership="full">
          <type name="Device" c:type="FuDevice*"/>
        </return-value>
      </constructor>
      <function name="internal_flag_from_string"
                c:identifier="fu_device_internal_flag_from_string"
                version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="212">Converts a string to an internal device flag.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="15"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="218">enumerated value</doc>
          <type name="DeviceInternalFlags" c:type="FuDeviceInternalFlags"/>
        </return-value>
        <parameters>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="214">a string, e.g. `md-set-icon`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="internal_flag_to_string"
                c:identifier="fu_device_internal_flag_to_string"
                version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="176">Converts an internal device flag to a string.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="14"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="182">identifier string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="178">an internal device flag, e.g. %FU_DEVICE_INTERNAL_FLAG_MD_SET_ICON</doc>
            <type name="DeviceInternalFlags" c:type="FuDeviceInternalFlags"/>
          </parameter>
        </parameters>
      </function>
      <method name="activate"
              c:identifier="fu_device_activate"
              version="1.2.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3608">Activates up a device, which normally means the device switches to a new
firmware version. This should only be called when data loss cannot occur.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="428"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3616">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3610">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="add_child"
              c:identifier="fu_device_add_child"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="956">Sets any child device. An child device is logically linked to the primary
device in some way.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="269"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="958">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="959">Another #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_counterpart_guid"
              c:identifier="fu_device_add_counterpart_guid"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1556">Adds a GUID to the device. If the @guid argument is not a valid GUID then it
is converted to a GUID using fwupd_guid_hash_string().

A counterpart GUID is typically the GUID of the same device in bootloader
or runtime mode, if they have a different device PCI or USB ID. Adding this
type of GUID does not cause a "cascade" by matching using the quirk database.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="273"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1558">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1559">a GUID, e.g. `2082b5e0-7a64-478a-b1b2-e3404fab6dad`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_flag"
              c:identifier="fu_device_add_flag"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2423">Adds a device flag to the device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="325"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2425">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2426">a device flag</doc>
            <type name="Fwupd.DeviceFlags" c:type="FwupdDeviceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_guid"
              c:identifier="fu_device_add_guid"
              version="0.7.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1534">Adds a GUID to the device. If the @guid argument is not a valid GUID then it
is converted to a GUID using fwupd_guid_hash_string().</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="256"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1536">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1537">a GUID, e.g. `2082b5e0-7a64-478a-b1b2-e3404fab6dad`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_instance_id"
              c:identifier="fu_device_add_instance_id"
              version="1.2.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1516">Adds an instance ID to the device. If the @instance_id argument is already a
valid GUID then fu_device_add_guid() should be used instead.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="260"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1518">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="instance_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1519">the InstanceID, e.g. `PCI\VEN_10EC&amp;DEV_525A`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_instance_id_full"
              c:identifier="fu_device_add_instance_id_full"
              version="1.2.9">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1474">Adds an instance ID with all parameters set</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="262"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1476">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="instance_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1477">a Instance ID, e.g. `WacomAES`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1478">instance ID flags</doc>
            <type name="DeviceInstanceFlags" c:type="FuDeviceInstanceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_internal_flag"
              c:identifier="fu_device_add_internal_flag"
              version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="246">Adds a private flag that stays internal to the engine and is not leaked to the client.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="369"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="248">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="249">an internal device flag, e.g. %FU_DEVICE_INTERNAL_FLAG_MD_SET_ICON</doc>
            <type name="DeviceInternalFlags" c:type="FuDeviceInternalFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_parent_guid"
              c:identifier="fu_device_add_parent_guid"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1070">Sets any parent device using a GUID. An parent device is logically linked to
the primary device in some way and can be added before or after @self.

The GUIDs are searched in order, and so the order of adding GUIDs may be
important if more than one parent device might match.

If the parent device is removed, any children logically linked to it will
also be removed.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="271"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1072">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1073">a GUID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_possible_plugin"
              c:identifier="fu_device_add_possible_plugin"
              version="1.5.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="314">Adds a plugin name to the list of plugins that *might* be able to handle this
device. This is tyically called from a quirk handler.

Duplicate plugin names are ignored.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="35"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="316">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="plugin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="317">a plugin name, e.g. `dfu`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_security_attrs"
              c:identifier="fu_device_add_security_attrs"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3715">Adds HSI security attributes.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="466"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3717">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3718">a security attribute</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </parameter>
        </parameters>
      </method>
      <method name="attach"
              c:identifier="fu_device_attach"
              version="1.0.8"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3214">Attaches a device from the bootloader into application mode.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="391"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3221">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3216">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="bind_driver"
              c:identifier="fu_device_bind_driver"
              version="1.5.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3736">Binds a driver to the device, which normally means the kernel driver takes
control of the hardware.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="456"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3746">%TRUE if driver was bound.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3738">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="subsystem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3739">a subsystem string, e.g. `pci`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="driver" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3740">a kernel module name, e.g. `tg3`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="cleanup"
              c:identifier="fu_device_cleanup"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3297">Cleans up a device after an update. A different plugin can handle each of
FuDevice-&gt;write_firmware(), FuDevice-&gt;attach() and FuDevice-&gt;cleanup().</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="404"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3306">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3299">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3300">install flags</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="close"
              c:identifier="fu_device_close"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3406">Closes a device, optionally running a object-specific vfunc.

Plugins can call fu_device_close() multiple times without calling
fu_device_open(), but only the last call will actually invoke the vfunc.

It is expected that plugins issue the same number of fu_device_open() and
fu_device_close() methods when using a specific @self.

An error is returned if this method is called without having used the
fu_device_open() method beforehand.

If the close action completed successfully the internal device flag
%FU_DEVICE_INTERNAL_FLAG_IS_OPEN will be cleared.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="416"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3425">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3408">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="convert_instance_ids"
              c:identifier="fu_device_convert_instance_ids"
              version="1.2.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3530">Converts all the Device Instance IDs added using fu_device_add_instance_id()
into actual GUIDs, **unless** %FU_DEVICE_INTERNAL_FLAG_NO_AUTO_INSTANCE_IDS has
been set.

Plugins will only need to need to call this manually when adding child
devices, as fu_device_setup() automatically calls this after the
fu_device_probe() and fu_device_setup() virtual functions have been run.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="32"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3532">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="detach"
              c:identifier="fu_device_detach"
              version="1.0.8"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3187">Detaches a device from the application into bootloader mode.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="394"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3194">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3189">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dump_firmware"
              c:identifier="fu_device_dump_firmware"
              version="1.5.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3152">Reads the raw firmware image from the device by calling a plugin-specific
vfunc. This raw firmware image may contain serial numbers or device-specific
configuration but should be a byte-for-byte match compared to using an
external SPI programmer.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="388"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3162">a #GBytes, or %NULL for error</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3154">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ensure_id"
              c:identifier="fu_device_ensure_id"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2149">If not already set, generates a device ID with the optional physical and
logical IDs.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="27"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2157">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2151">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_alternate"
              c:identifier="fu_device_get_alternate"
              version="0.7.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="749">Gets any alternate device. An alternate device may be linked to the primary
device in some way.

The alternate object will be matched from the ID set in fu_device_set_alternate_id()
and will be assigned by the daemon. This means if the ID is not found as an
added device, then this function will return %NULL.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="265"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="760">a device or %NULL</doc>
          <type name="Device" c:type="FuDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="751">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_alternate_id"
              c:identifier="fu_device_get_alternate_id"
              version="1.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="706">Gets any alternate device ID. An alternate device may be linked to the primary
device in some way.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="250"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="713">a device or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="708">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_backend_id"
              c:identifier="fu_device_get_backend_id"
              version="1.5.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2248">Gets the ID set for the device as recognized by the backend. This is typically
a Linux sysfs path or USB platform ID. If unset, it also falls back to the
physical ID as this may be the same value.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="316"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2256">a string value, or %NULL if never set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2250">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_battery_level"
              c:identifier="fu_device_get_battery_level"
              version="1.5.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2729">Returns the battery level.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="353"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2735">value in percent</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2731">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_battery_threshold"
              c:identifier="fu_device_get_battery_threshold"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2772">Returns the battery threshold under which a firmware update cannot be
performed.

If fu_device_set_battery_threshold() has not been used, a default value is
used instead.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="356"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2782">value in percent</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2774">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_children"
              c:identifier="fu_device_get_children"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="938">Gets any child devices. A child device is logically "below" the current
device and this may be reflected in client tools.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="268"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="945">child devices</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Device"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="940">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_context"
              c:identifier="fu_device_get_context"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2947">Gets the context assigned for this device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="366"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2953">the #FuContext object, or %NULL</doc>
          <type name="Context" c:type="FuContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2949">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_custom_flags"
              c:identifier="fu_device_get_custom_flags"
              version="1.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2511">Gets the custom flags for the device from the quirk system.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="329"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2517">a string value, or %NULL if never set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2513">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_equivalent_id"
              c:identifier="fu_device_get_equivalent_id"
              version="0.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="665">Gets any equivalent ID for a device</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="253"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="671">a #gchar or NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="667">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_firmware_size_max"
              c:identifier="fu_device_get_firmware_size_max"
              version="1.2.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1420">Gets the maximum size of the firmware blob.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="349"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1426">Size in bytes, or 0 if unset</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1422">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_firmware_size_min"
              c:identifier="fu_device_get_firmware_size_min"
              version="1.2.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1402">Gets the minimum size of the firmware blob.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="348"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1408">Size in bytes, or 0 if unset</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1404">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_guids_as_str"
              c:identifier="fu_device_get_guids_as_str"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1587">Gets the device GUIDs as a joined string, which may be useful for error
messages.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="33"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1594">a string, which may be empty length but not %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1589">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_logical_id"
              c:identifier="fu_device_get_logical_id"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2193">Gets the logical ID set for the device, which disambiguates devices with the
same physical ID.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="313"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2200">a string value, or %NULL if never set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2195">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_metadata"
              c:identifier="fu_device_get_metadata"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1613">Gets an item of metadata from the device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="278"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1620">a string value, or %NULL for unfound.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1615">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1616">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_metadata_boolean"
              c:identifier="fu_device_get_metadata_boolean"
              version="0.9.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1637">Gets an item of metadata from the device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="280"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1644">a boolean value, or %FALSE for unfound or failure to parse.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1639">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1640">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_metadata_integer"
              c:identifier="fu_device_get_metadata_integer"
              version="0.9.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1667">Gets an item of metadata from the device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="282"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1674">a string value, or %G_MAXUINT for unfound or failure to parse.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1669">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1670">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_order"
              c:identifier="fu_device_get_order"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="593">Gets the device order, where higher numbers are installed after lower
numbers.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="22"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="600">the integer value</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="595">a #FuPlugin</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="fu_device_get_parent"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="792">Gets any parent device. An parent device is logically "above" the current
device and this may be reflected in client tools.

This information also allows the plugin to optionally verify the parent
device, for instance checking the parent device firmware version.

The parent object is not refcounted and if destroyed this function will then
return %NULL.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="267"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="805">a device or %NULL</doc>
          <type name="Device" c:type="FuDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="794">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent_guids"
              c:identifier="fu_device_get_parent_guids"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1020">Gets any parent device GUIDs. If a device is added to the daemon that matches
any GUIDs added from fu_device_add_parent_guid() then this device is marked the parent of @self.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="17"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1027">a list of GUIDs</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1022">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_physical_id"
              c:identifier="fu_device_get_physical_id"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2382">Gets the physical ID set for the device, which represents the electrical
connection used to compare devices.

Multiple #FuDevices can share a single physical ID.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="310"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2391">a string value, or %NULL if never set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2384">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_possible_plugins"
              c:identifier="fu_device_get_possible_plugins"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="297">Gets the list of possible plugin names, typically added from quirk files.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="34"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="303">plugin names</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="299">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_priority"
              c:identifier="fu_device_get_priority"
              version="1.1.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="630">Gets the device priority, where higher numbers are better.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="322"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="636">the integer value</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="632">a #FuPlugin</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_progress"
              c:identifier="fu_device_get_progress"
              version="1.0.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2633">Returns the progress completion.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="350"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2639">value in percent</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2635">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_proxy"
              c:identifier="fu_device_get_proxy"
              version="1.4.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="915">Gets any proxy device. A proxy device can be used to perform an action on
behalf of another device, for instance attach()ing it after a successful
update.

The proxy object is not refcounted and if destroyed this function will then
return %NULL.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="275"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="926">a device or %NULL</doc>
          <type name="Device" c:type="FuDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="917">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_proxy_guid"
              c:identifier="fu_device_get_proxy_guid"
              version="1.4.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2297">Gets the proxy GUID device, which which is set to let the engine match up the
proxy between plugins.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="319"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2304">a string value, or %NULL if never set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2299">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_release_default"
              c:identifier="fu_device_get_release_default"
              version="1.0.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2965">Gets the default release for the device, creating one if not found.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="367"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2971">the #FwupdRelease object</doc>
          <type name="Fwupd.Release" c:type="FwupdRelease*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2967">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remove_delay"
              c:identifier="fu_device_get_remove_delay"
              version="1.0.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2559">Returns the maximum delay expected when replugging the device going into
bootloader mode.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="336"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2566">time in milliseconds</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2561">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_root"
              c:identifier="fu_device_get_root"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="816">Gets the root parent device. A parent device is logically "above" the current
device and this may be reflected in client tools.

If there is no parent device defined, then @self is returned.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="266"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="825">a device</doc>
          <type name="Device" c:type="FuDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="818">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_specialized_gtype"
              c:identifier="fu_device_get_specialized_gtype"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1311">Gets the specialized type of the device</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="368"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1317">#GType</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1313">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_status"
              c:identifier="fu_device_get_status"
              version="1.0.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2600">Returns what the device is currently doing.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="339"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2606">the status value, e.g. %FWUPD_STATUS_DEVICE_WRITE</doc>
          <type name="Fwupd.Status" c:type="FwupdStatus"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2602">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_custom_flag"
              c:identifier="fu_device_has_custom_flag"
              version="1.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2528">Checks if the custom flag exists for the device from the quirk system.

It may be more efficient to call fu_device_get_custom_flags() and split the
string locally if checking for lots of different flags.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="330"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2538">%TRUE if the hint exists</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2530">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="hint" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2531">a string, e.g. `bootloader`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_guid"
              c:identifier="fu_device_has_guid"
              version="1.2.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1447">Finds out if the device has a specific GUID.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="258"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1454">%TRUE if the GUID is found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1449">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1450">a GUID, e.g. `WacomAES`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_internal_flag"
              c:identifier="fu_device_has_internal_flag"
              version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="280">Tests for a private flag that stays internal to the engine and is not leaked to the client.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="373"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="282">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="283">an internal device flag, e.g. %FU_DEVICE_INTERNAL_FLAG_MD_SET_ICON</doc>
            <type name="DeviceInternalFlags" c:type="FuDeviceInternalFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_parent_guid"
              c:identifier="fu_device_has_parent_guid"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1041">Searches the list of parent GUIDs for a string match.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="18"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="1048">%TRUE if the parent GUID exists</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1043">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1044">a GUID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="incorporate"
              c:identifier="fu_device_incorporate"
              version="1.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3812">Copy all properties from the donor object if they have not already been set.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="408"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3814">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="donor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3815">Another #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="incorporate_flag"
              c:identifier="fu_device_incorporate_flag"
              version="1.3.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3886">Copy the value of a specific flag from the donor object.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="410"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3888">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="donor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3889">another device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3890">device flags</doc>
            <type name="Fwupd.DeviceFlags" c:type="FwupdDeviceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="incorporate_from_component"
              c:identifier="fu_device_incorporate_from_component"
              version="1.2.4"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3908">Copy all properties from the donor AppStream component.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="30"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3910">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="component" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3911">a Xmlb node</doc>
            <type c:type="XbNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="inhibit" c:identifier="fu_device_inhibit" version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2076">Prevent the device from being updated, changing it from %FWUPD_DEVICE_FLAG_UPDATABLE
to %FWUPD_DEVICE_FLAG_UPDATABLE_HIDDEN if not already inhibited.

If the device already has an inhibit with the same @inhibit_id then the request
is ignored.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="305"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2078">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="inhibit_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2079">an ID used for uninhibiting, e.g. `low-power`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="reason"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2080">a string, e.g. `Cannot update as foo [bar] needs reboot`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open"
              c:identifier="fu_device_open"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3333">Opens a device, optionally running a object-specific vfunc.

Plugins can call fu_device_open() multiple times without calling
fu_device_close(), but only the first call will actually invoke the vfunc.

It is expected that plugins issue the same number of fu_device_open() and
fu_device_close() methods when using a specific @self.

If the `-&gt;probe()`, `-&gt;open()` and `-&gt;setup()` actions all complete
successfully the internal device flag %FU_DEVICE_INTERNAL_FLAG_IS_OPEN will
be set.

NOTE: It is important to still call fu_device_close() even if this function
fails as the device may still be partially initialized.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="413"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3353">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3335">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="poll"
              c:identifier="fu_device_poll"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="519">Polls a device, typically querying the hardware for status.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="432"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="526">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="521">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prepare"
              c:identifier="fu_device_prepare"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3268">Prepares a device for update. A different plugin can handle each of
FuDevice-&gt;prepare(), FuDevice-&gt;detach() and FuDevice-&gt;write_firmware().</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="400"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3277">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3270">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3271">install flags</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_firmware"
              c:identifier="fu_device_prepare_firmware"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3033">Prepares the firmware by calling an optional device-specific vfunc for the
device, which can do things like decompressing or parsing of the firmware
data.

For all firmware, this checks the size of the firmware if limits have been
set using fu_device_set_firmware_size_min(), fu_device_set_firmware_size_max()
or using a quirk entry.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="380"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3048">a new #GBytes, or %NULL for error</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3035">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3036">firmware blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3037">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="probe"
              c:identifier="fu_device_probe"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3460">Probes a device, setting parameters on the object that does not need
the device open or the interface claimed.
If the device is not compatible then an error should be returned.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="419"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3469">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3462">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="probe_invalidate"
              c:identifier="fu_device_probe_invalidate"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3637">Normally when calling fu_device_probe() multiple times it is only done once.
Calling this method causes the next requests to fu_device_probe() and
fu_device_setup() actually probe the hardware.

This should be done in case the backing device has changed, for instance if
a USB device has been replugged.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="431"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3639">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read_firmware"
              c:identifier="fu_device_read_firmware"
              version="1.0.8"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3107">Reads firmware from the device by calling a plugin-specific vfunc.
The device subclass should try to ensure the firmware does not contain any
serial numbers or user-configuration values and can be used to calculate the
device checksum.

The return value can be converted to a blob of memory using fu_firmware_write().</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="385"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3119">a #FuFirmware, or %NULL for error</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3109">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="reload"
              c:identifier="fu_device_reload"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3241">Reloads a device that has just gone from bootloader into application mode.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="397"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3248">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3243">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_flag"
              c:identifier="fu_device_remove_flag"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2403">Removes a device flag from the device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="327"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2405">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2406">a device flag</doc>
            <type name="Fwupd.DeviceFlags" c:type="FwupdDeviceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_internal_flag"
              c:identifier="fu_device_remove_internal_flag"
              version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="263">Removes a private flag that stays internal to the engine and is not leaked to the client.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="371"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="265">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="266">an internal device flag, e.g. %FU_DEVICE_INTERNAL_FLAG_MD_SET_ICON</doc>
            <type name="DeviceInternalFlags" c:type="FuDeviceInternalFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_metadata"
              c:identifier="fu_device_remove_metadata"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1704">Removes an item of metadata on the device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="284"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1706">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1707">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="report_metadata_post"
              c:identifier="fu_device_report_metadata_post"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3687">Collects metadata that would be useful for debugging a failed update report.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="465"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3693">a #GHashTable, or %NULL if there is no data</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3689">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="report_metadata_pre"
              c:identifier="fu_device_report_metadata_pre"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3659">Collects metadata that would be useful for debugging a failed update report.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="464"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3665">a #GHashTable, or %NULL if there is no data</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3661">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="rescan"
              c:identifier="fu_device_rescan"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3495">Rescans a device, re-adding GUIDs or flags based on some hardware change.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="425"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3502">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3497">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="retry"
              c:identifier="fu_device_retry"
              version="1.4.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="487">Calls a specific function a number of times, optionally handling the error
with a reset action.

If fu_device_retry_add_recovery() has not been used then all errors are
considered non-fatal until the last try.

If the reset function returns %FALSE, then the function returns straight away
without processing any pending retries.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="443"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="489">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="490">a function to execute</doc>
            <type name="DeviceRetryFunc" c:type="FuDeviceRetryFunc"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="491">the number of tries to try the function</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="492">a helper to pass to @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="retry_add_recovery"
              c:identifier="fu_device_retry_add_recovery"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="343">Sets the optional function to be called when fu_device_retry() fails, which
is possibly a device reset.

If @func is %NULL then recovery is not possible and an error is returned
straight away.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="439"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="345">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="domain" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="346">a #GQuark, or %0 for all domains</doc>
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="347">a #GError code</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="348">a function to recover the device</doc>
            <type name="DeviceRetryFunc" c:type="FuDeviceRetryFunc"/>
          </parameter>
        </parameters>
      </method>
      <method name="retry_full"
              c:identifier="fu_device_retry_full"
              version="1.5.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="394">Calls a specific function a number of times, optionally handling the error
with a reset action.

If fu_device_retry_add_recovery() has not been used then all errors are
considered non-fatal until the last try.

If the reset function returns %FALSE, then the function returns straight away
without processing any pending retries.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="449"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="396">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="397">a function to execute</doc>
            <type name="DeviceRetryFunc" c:type="FuDeviceRetryFunc"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="398">the number of tries to try the function</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="delay" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="399">the delay between each try in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="400">a helper to pass to @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="retry_set_delay"
              c:identifier="fu_device_retry_set_delay"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="377">Sets the recovery delay between failed retries.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="437"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="379">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="delay" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="380">delay in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_alternate"
              c:identifier="fu_device_set_alternate"
              version="0.7.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="772">Sets any alternate device. An alternate device may be linked to the primary
device in some way.

This function is only usable by the daemon, not directly from plugins.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="25"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="774">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="alternate" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="775">Another #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_alternate_id"
              c:identifier="fu_device_set_alternate_id"
              version="1.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="725">Sets any alternate device ID. An alternate device may be linked to the primary
device in some way.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="251"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="727">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="alternate_id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="728">Another #FuDevice ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_backend_id"
              c:identifier="fu_device_set_backend_id"
              version="1.5.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2270">Sets the backend ID on the device. This is designed to disambiguate devices
with the same physical ID. This is typically a Linux sysfs path or USB
platform ID.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="317"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2272">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="backend_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2273">a string, e.g. `dev2`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_battery_level"
              c:identifier="fu_device_set_battery_level"
              version="1.5.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2747">Sets the battery level, or %FU_BATTERY_VALUE_INVALID.

Setting this allows fwupd to show a warning if the device change is too low
to perform the update.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="354"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2749">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="battery_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2750">the percentage value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_battery_threshold"
              c:identifier="fu_device_set_battery_threshold"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2799">Sets the battery level, or %FU_BATTERY_VALUE_INVALID for the default.

Setting this allows fwupd to show a warning if the device change is too low
to perform the update.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="357"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2801">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="battery_threshold" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2802">the percentage value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_context"
              c:identifier="fu_device_set_context"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2927">Sets the optional context which may be useful to this device.
This is typically set after the device has been created, but before
the device has been opened or probed.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="364"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2929">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="ctx"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2930">optional #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_custom_flags"
              c:identifier="fu_device_set_custom_flags"
              version="1.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2484">Sets the custom flags from the quirk system that can be used to
affect device matching. The actual string format is defined by the plugin.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="332"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2486">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="custom_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2487">a string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_equivalent_id"
              c:identifier="fu_device_set_equivalent_id"
              version="0.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="683">Sets any equivalent ID for a device</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="254"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="685">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="equivalent_id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="686">a string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_firmware_size"
              c:identifier="fu_device_set_firmware_size"
              version="1.2.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1350">Sets the exact allowed size of the firmware blob.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="342"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1352">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1353">Size in bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_firmware_size_max"
              c:identifier="fu_device_set_firmware_size_max"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1385">Sets the maximum allowed size of the firmware blob.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="346"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1387">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="size_max" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1388">Size in bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_firmware_size_min"
              c:identifier="fu_device_set_firmware_size_min"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1368">Sets the minimum allowed size of the firmware blob.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="344"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1370">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="size_min" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1371">Size in bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_id" c:identifier="fu_device_set_id" version="0.7.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1833">Sets the ID on the device. The ID should represent the *connection* of the
device, so that any similar device plugged into a different slot will
have a different @id string.

The @id will be converted to a SHA1 hash if required before the device is
added to the daemon, and plugins should not assume that the ID that is set
here is the same as what is returned by fu_device_get_id().</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="295"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1835">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1836">a string, e.g. `tbt-port1`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_logical_id"
              c:identifier="fu_device_set_logical_id"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2212">Sets the logical ID on the device. This is designed to disambiguate devices
with the same physical ID.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="314"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2214">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="logical_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2215">a string, e.g. `dev2`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_metadata"
              c:identifier="fu_device_set_metadata"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1726">Sets an item of metadata on the device.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="286"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1728">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1729">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1730">the string value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_metadata_boolean"
              c:identifier="fu_device_set_metadata_boolean"
              version="0.9.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1752">Sets an item of metadata on the device. When @value is set to %TRUE
the actual stored value is `true`.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="289"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1754">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1755">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1756">the boolean value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_metadata_integer"
              c:identifier="fu_device_set_metadata_integer"
              version="0.9.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1772">Sets an item of metadata on the device. The integer is stored as a
base-10 string internally.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="292"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1774">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1775">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1776">the unsigned integer value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name"
              c:identifier="fu_device_set_name"
              version="0.7.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1794">Sets the name on the device. Any invalid parts will be converted or removed.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="334"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1796">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1797">a device name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_order"
              c:identifier="fu_device_set_order"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="612">Sets the device order, where higher numbers are installed after lower
numbers.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="23"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="614">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="order" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="615">an integer value</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parent"
              c:identifier="fu_device_set_parent"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="858">Sets any parent device. An parent device is logically "above" the current
device and this may be reflected in client tools.

This information also allows the plugin to optionally verify the parent
device, for instance checking the parent device firmware version.</doc>
        <source-position filename="../libfwupdplugin/fu-device-private.h"
                         line="20"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="860">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="861">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_physical_id"
              c:identifier="fu_device_set_physical_id"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2339">Sets the physical ID on the device which represents the electrical connection
of the device to the system. Multiple #FuDevices can share a physical ID.

The physical ID is used to remove logical devices when a physical device has
been removed from the system.

A sysfs or devpath is not a physical ID, but could be something like
`PCI_SLOT_NAME=0000:3e:00.0`.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="311"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2341">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="physical_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2342">a string that identifies the physical device connection</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_poll_interval"
              c:identifier="fu_device_set_poll_interval"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="560">Polls the hardware every interval period. If the subclassed `-&gt;poll()` method
returns %FALSE then a warning is printed to the console and the poll is
disabled until the next call to fu_device_set_poll_interval().</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="435"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="562">a #FuPlugin</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="interval" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="563">duration in ms, or 0 to disable</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_priority"
              c:identifier="fu_device_set_priority"
              version="1.1.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="648">Sets the device priority, where higher numbers are better.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="323"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="650">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="priority" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="651">an integer value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_progress"
              c:identifier="fu_device_set_progress"
              version="1.0.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2651">Sets the progress completion.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="351"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2653">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="progress" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2654">the progress percentage value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_progress_full"
              c:identifier="fu_device_set_progress_full"
              version="1.0.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2671">Sets the progress completion using the raw progress values.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="359"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2673">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="progress_done" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2674">the bytes already done</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="progress_total" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2675">the total number of bytes</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_proxy"
              c:identifier="fu_device_set_proxy"
              version="1.4.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="890">Sets any proxy device. A proxy device can be used to perform an action on
behalf of another device, for instance attach()ing it after a successful
update.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="276"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="892">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="893">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_proxy_guid"
              c:identifier="fu_device_set_proxy_guid"
              version="1.4.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2316">Sets the GUID of the proxy device. The proxy device may update @self.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="320"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2318">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="proxy_guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2319">a string, e.g. `USB\VID_413C&amp;PID_B06E&amp;hub`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_remove_delay"
              c:identifier="fu_device_set_remove_delay"
              version="1.0.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2578">Sets the amount of time a device is allowed to return in bootloader mode.

NOTE: this should be less than 3000ms for devices that just have to reset
and automatically re-enumerate, but significantly longer if it involves a
user removing a cable, pressing several buttons and removing a cable.
A suggested value for this would be 10,000ms.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="337"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2580">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="remove_delay" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2581">the delay value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_status"
              c:identifier="fu_device_set_status"
              version="1.0.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2617">Sets what the device is currently doing.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="340"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2619">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2620">the status value, e.g. %FWUPD_STATUS_DEVICE_WRITE</doc>
            <type name="Fwupd.Status" c:type="FwupdStatus"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version"
              c:identifier="fu_device_set_version"
              version="1.2.9">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1900">Sets the device version, sanitizing the string if required.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="299"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1902">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="version"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1903">a string, e.g. `1.2.3`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version_bootloader"
              c:identifier="fu_device_set_version_bootloader"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1986">Sets the device bootloader version, sanitizing the string if required.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="303"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1988">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="version"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1989">a string, e.g. `1.2.3`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version_format"
              c:identifier="fu_device_set_version_format"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1876">Sets the device version format.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="297"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1878">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="fmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1879">the version format, e.g. %FWUPD_VERSION_FORMAT_PLAIN</doc>
            <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version_lowest"
              c:identifier="fu_device_set_version_lowest"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="1943">Sets the device lowest version, sanitizing the string if required.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="301"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1945">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="version"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="1946">a string, e.g. `1.2.3`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setup"
              c:identifier="fu_device_setup"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3560">Sets up a device, setting parameters on the object that requires
the device to be open and have the interface claimed.
If the device is not compatible then an error should be returned.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="422"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3569">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3562">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="sleep_with_progress"
              c:identifier="fu_device_sleep_with_progress"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2691">Sleeps, setting the device progress from 0..100% as time continues.
The value is gven in whole seconds as it does not make sense to show the
progressbar advancing so quickly for durations of less than one second.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="362"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2693">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="delay_secs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2694">the delay in seconds</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="fu_device_to_string"
              version="0.9.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2908">This allows us to easily print the device, the release and the
daemon-specific metadata.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="249"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2915">a string value, or %NULL for invalid.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2910">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unbind_driver"
              c:identifier="fu_device_unbind_driver"
              version="1.5.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="3776">Unbinds the driver from the device, which normally means the kernel releases
the hardware so it can be used from userspace.

If there is no driver bound then this function will return with success
without actually doing anything.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="461"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="3787">%TRUE if driver was unbound.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="3778">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="uninhibit"
              c:identifier="fu_device_uninhibit"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2122">Allow the device from being updated if there are no other inhibitors,
changing it from %FWUPD_DEVICE_FLAG_UPDATABLE_HIDDEN to %FWUPD_DEVICE_FLAG_UPDATABLE.

If the device already has no inhibit with the @inhibit_id then the request
is ignored.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="308"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2124">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="inhibit_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2125">an ID used for uninhibiting, e.g. `low-power`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_firmware"
              c:identifier="fu_device_write_firmware"
              version="1.0.8"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.c"
             line="2987">Writes firmware to the device by calling a plugin-specific vfunc.</doc>
        <source-position filename="../libfwupdplugin/fu-device.h" line="375"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.c"
               line="2996">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2989">a #FuDevice</doc>
            <type name="Device" c:type="FuDevice*"/>
          </instance-parameter>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2990">firmware blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device.c"
                 line="2991">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <property name="backend-id" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="battery-level" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="battery-threshold"
                writable="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="context" writable="1" transfer-ownership="none">
        <type name="Context"/>
      </property>
      <property name="logical-id" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="parent"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Device"/>
      </property>
      <property name="physical-id" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="progress" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="proxy"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Device"/>
      </property>
      <field name="parent_instance">
        <type name="Fwupd.Device" c:type="FwupdDevice"/>
      </field>
    </class>
    <record name="DeviceClass"
            c:type="FuDeviceClass"
            glib:is-gtype-struct-for="Device">
      <source-position filename="../libfwupdplugin/fu-device.h" line="105"/>
      <field name="parent_class">
        <type name="Fwupd.DeviceClass" c:type="FwupdDeviceClass"/>
      </field>
    </record>
    <bitfield name="DeviceInstanceFlags" c:type="FuDeviceInstanceFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device.h"
           line="107">The flags to use when interacting with a device instance</doc>
      <source-position filename="../libfwupdplugin/fu-device.h" line="119"/>
      <member name="none"
              value="0"
              c:identifier="FU_DEVICE_INSTANCE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="109">No flags set</doc>
      </member>
      <member name="only_quirks"
              value="1"
              c:identifier="FU_DEVICE_INSTANCE_FLAG_ONLY_QUIRKS">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="110">Only use instance ID for quirk matching</doc>
      </member>
    </bitfield>
    <bitfield name="DeviceInternalFlags" c:type="FuDeviceInternalFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device.h"
           line="214">The device internal flags.</doc>
      <source-position filename="../libfwupdplugin/fu-device.h" line="246"/>
      <member name="none"
              value="0"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="216">No flags set</doc>
      </member>
      <member name="no_auto_instance_ids"
              value="1"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_NO_AUTO_INSTANCE_IDS">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="217">Do not add instance IDs from the device baseclass</doc>
      </member>
      <member name="ensure_semver"
              value="2"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_ENSURE_SEMVER">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="218">Ensure the version is a valid semantic version, e.g. numbers separated with dots</doc>
      </member>
      <member name="only_supported"
              value="4"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_ONLY_SUPPORTED">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="219">Only devices supported in the metadata will be opened</doc>
      </member>
      <member name="md_set_name"
              value="8"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_MD_SET_NAME">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="220">Set the device name from the metadata `name` if available</doc>
      </member>
      <member name="md_set_name_category"
              value="16"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_MD_SET_NAME_CATEGORY">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="221">Set the device name from the metadata `category` if available</doc>
      </member>
      <member name="md_set_verfmt"
              value="32"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_MD_SET_VERFMT">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="222">Set the device version format from the metadata if available</doc>
      </member>
      <member name="md_set_icon"
              value="64"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_MD_SET_ICON">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="223">Set the device icon from the metadata if available</doc>
      </member>
      <member name="retry_open"
              value="128"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_RETRY_OPEN">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="224">Retry the device open up to 5 times if it fails</doc>
      </member>
      <member name="replug_match_guid"
              value="256"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_REPLUG_MATCH_GUID">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="225">Match GUIDs on device replug where the physical and logical IDs will be different</doc>
      </member>
      <member name="inherit_activation"
              value="512"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_INHERIT_ACTIVATION">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="226">Inherit activation status from the history database on startup</doc>
      </member>
      <member name="is_open"
              value="1024"
              c:identifier="FU_DEVICE_INTERNAL_FLAG_IS_OPEN">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="227">The device opened successfully and ready to use</doc>
      </member>
    </bitfield>
    <class name="DeviceLocker"
           c:symbol-prefix="device_locker"
           c:type="FuDeviceLocker"
           parent="GObject.Object"
           glib:type-name="FuDeviceLocker"
           glib:get-type="fu_device_locker_get_type"
           glib:type-struct="DeviceLockerClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device-locker.c"
           line="19">Easily close a shared resource (such as a device) when an object goes out of
scope.

See also: [class@FuDevice]</doc>
      <source-position filename="../libfwupdplugin/fu-device-locker.h"
                       line="13"/>
      <constructor name="new"
                   c:identifier="fu_device_locker_new"
                   version="1.0.0"
                   throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device-locker.c"
             line="109">Opens the device for use. When the #FuDeviceLocker is deallocated the device
will be closed and any error will just be directed to the console.
This object is typically called using g_autoptr() but the device can also be
manually closed using g_clear_object().

The functions used for opening and closing the device are set automatically.
If the @device is not a type or supertype of #GUsbDevice or #FuDevice then
this function will not work.

For custom objects please use fu_device_locker_new_full().

NOTE: If the @open_func failed then the @close_func will not be called.

Think of this object as the device ownership.</doc>
        <source-position filename="../libfwupdplugin/fu-device-locker.h"
                         line="23"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device-locker.c"
               line="129">a device locker, or %NULL if the @open_func failed.</doc>
          <type name="DeviceLocker" c:type="FuDeviceLocker*"/>
        </return-value>
        <parameters>
          <parameter name="device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device-locker.c"
                 line="111">a #GObject</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full"
                   c:identifier="fu_device_locker_new_full"
                   version="1.0.0"
                   throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device-locker.c"
             line="163">Opens the device for use. When the #FuDeviceLocker is deallocated the device
will be closed and any error will just be directed to the console.
This object is typically called using g_autoptr() but the device can also be
manually closed using g_clear_object().

NOTE: If the @open_func failed then the @close_func will not be called.

Think of this object as the device ownership.</doc>
        <source-position filename="../libfwupdplugin/fu-device-locker.h"
                         line="26"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device-locker.c"
               line="179">a device locker, or %NULL if the @open_func failed.</doc>
          <type name="DeviceLocker" c:type="FuDeviceLocker*"/>
        </return-value>
        <parameters>
          <parameter name="device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device-locker.c"
                 line="165">a #GObject</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="open_func" transfer-ownership="none" scope="async">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device-locker.c"
                 line="166">a function to open the device</doc>
            <type name="DeviceLockerFunc" c:type="FuDeviceLockerFunc"/>
          </parameter>
          <parameter name="close_func" transfer-ownership="none" scope="async">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device-locker.c"
                 line="167">a function to close the device</doc>
            <type name="DeviceLockerFunc" c:type="FuDeviceLockerFunc"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="close"
              c:identifier="fu_device_locker_close"
              version="1.4.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device-locker.c"
             line="66">Closes the locker before it gets cleaned up.

This function can be used to manually close a device managed by a locker,
and allows the caller to properly handle the error.</doc>
        <source-position filename="../libfwupdplugin/fu-device-locker.h"
                         line="31"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device-locker.c"
               line="76">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-device-locker.c"
                 line="68">a #FuDeviceLocker</doc>
            <type name="DeviceLocker" c:type="FuDeviceLocker*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="DeviceLockerClass"
            c:type="FuDeviceLockerClass"
            glib:is-gtype-struct-for="DeviceLocker">
      <source-position filename="../libfwupdplugin/fu-device-locker.h"
                       line="13"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <callback name="DeviceLockerFunc" c:type="FuDeviceLockerFunc" throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device-locker.h"
           line="15">Callback to use when opening and closing using [ctor@DeviceLocker.new_full].</doc>
      <source-position filename="../libfwupdplugin/fu-device-locker.h"
                       line="20"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="DeviceRetryFunc" c:type="FuDeviceRetryFunc" throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-device.h"
           line="139">The device retry iteration callback.</doc>
      <source-position filename="../libfwupdplugin/fu-device.h" line="149"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-device.h"
             line="147">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.h"
               line="141">a #FuDevice</doc>
          <type name="Device" c:type="FuDevice*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-device.h"
               line="142">user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="DfuFirmware"
           c:symbol-prefix="dfu_firmware"
           c:type="FuDfuFirmware"
           parent="Firmware"
           glib:type-name="FuDfuFirmware"
           glib:get-type="fu_dfu_firmware_get_type"
           glib:type-struct="DfuFirmwareClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-dfu-firmware.c"
           line="16">A DFU firmware image.

See also: [class@FuFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                       line="17"/>
      <constructor name="new"
                   c:identifier="fu_dfu_firmware_new"
                   version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="397">Creates a new #FuFirmware of sub type Dfu</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="64"/>
        <return-value transfer-ownership="full">
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
      </constructor>
      <method name="get_pid"
              c:identifier="fu_dfu_firmware_get_pid"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="75">Gets the product ID, or 0xffff for no restriction.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-dfu-firmware.c"
               line="81">integer</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="77">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_release"
              c:identifier="fu_dfu_firmware_get_release"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="93">Gets the device ID, or 0xffff for no restriction.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-dfu-firmware.c"
               line="99">integer</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="95">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_version"
              c:identifier="fu_dfu_firmware_get_version"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="111">Gets the file format version with is 0x0100 by default.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-dfu-firmware.c"
               line="117">integer</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="113">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_vid"
              c:identifier="fu_dfu_firmware_get_vid"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="57">Gets the vendor ID, or 0xffff for no restriction.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-dfu-firmware.c"
               line="63">integer</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="59">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_pid"
              c:identifier="fu_dfu_firmware_set_pid"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="146">Sets the product ID.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="71"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="148">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
          <parameter name="pid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="149">product ID, or 0xffff if the firmware should match any product</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_release"
              c:identifier="fu_dfu_firmware_set_release"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="163">Sets the release for the dfu firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="165">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
          <parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="166">release, or 0xffff if the firmware should match any release</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version"
              c:identifier="fu_dfu_firmware_set_version"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="180">Sets the file format version.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="182">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="183">integer</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_vid"
              c:identifier="fu_dfu_firmware_set_vid"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfu-firmware.c"
             line="129">Sets the vendor ID.</doc>
        <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                         line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="131">a #FuDfuFirmware</doc>
            <type name="DfuFirmware" c:type="FuDfuFirmware*"/>
          </instance-parameter>
          <parameter name="vid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-dfu-firmware.c"
                 line="132">vendor ID, or 0xffff if the firmware should match any vendor</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Firmware" c:type="FuFirmware"/>
      </field>
    </class>
    <record name="DfuFirmwareClass"
            c:type="FuDfuFirmwareClass"
            glib:is-gtype-struct-for="DfuFirmware">
      <source-position filename="../libfwupdplugin/fu-dfu-firmware.h"
                       line="17"/>
      <field name="parent_class">
        <type name="FirmwareClass" c:type="FuFirmwareClass"/>
      </field>
    </record>
    <class name="DfuseFirmware"
           c:symbol-prefix="dfuse_firmware"
           c:type="FuDfuseFirmware"
           parent="DfuFirmware"
           glib:type-name="FuDfuseFirmware"
           glib:get-type="fu_dfuse_firmware_get_type"
           glib:type-struct="DfuseFirmwareClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-dfuse-firmware.c"
           line="18">A DfuSe firmware image.

See also: [class@FuDfuFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-dfuse-firmware.h"
                       line="17"/>
      <constructor name="new"
                   c:identifier="fu_dfuse_firmware_new"
                   version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-dfuse-firmware.c"
             line="344">Creates a new #FuFirmware of sub type DfuSe</doc>
        <source-position filename="../libfwupdplugin/fu-dfuse-firmware.h"
                         line="19"/>
        <return-value transfer-ownership="full">
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
      </constructor>
      <field name="parent_instance">
        <type name="DfuFirmware" c:type="FuDfuFirmware"/>
      </field>
    </class>
    <record name="DfuseFirmwareClass"
            c:type="FuDfuseFirmwareClass"
            glib:is-gtype-struct-for="DfuseFirmware">
      <source-position filename="../libfwupdplugin/fu-dfuse-firmware.h"
                       line="17"/>
      <field name="parent_class">
        <type name="DfuFirmwareClass" c:type="FuDfuFirmwareClass"/>
      </field>
    </record>
    <bitfield name="DumpFlags" c:type="FuDumpFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="28">The flags to use when configuring debugging</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="42"/>
      <member name="none" value="0" c:identifier="FU_DUMP_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="30">No flags set</doc>
      </member>
      <member name="show_ascii"
              value="1"
              c:identifier="FU_DUMP_FLAGS_SHOW_ASCII">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="31">Show ASCII in debugging dumps</doc>
      </member>
      <member name="show_addresses"
              value="2"
              c:identifier="FU_DUMP_FLAGS_SHOW_ADDRESSES">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="32">Show addresses in debugging dumps</doc>
      </member>
    </bitfield>
    <constant name="EFIVAR_ATTR_APPEND_WRITE"
              value="64"
              c:type="FU_EFIVAR_ATTR_APPEND_WRITE">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="24"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="EFIVAR_ATTR_AUTHENTICATED_WRITE_ACCESS"
              value="16"
              c:type="FU_EFIVAR_ATTR_AUTHENTICATED_WRITE_ACCESS">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="22"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="EFIVAR_ATTR_BOOTSERVICE_ACCESS"
              value="2"
              c:type="FU_EFIVAR_ATTR_BOOTSERVICE_ACCESS">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="19"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="EFIVAR_ATTR_HARDWARE_ERROR_RECORD"
              value="8"
              c:type="FU_EFIVAR_ATTR_HARDWARE_ERROR_RECORD">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="21"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="EFIVAR_ATTR_NON_VOLATILE"
              value="1"
              c:type="FU_EFIVAR_ATTR_NON_VOLATILE">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="18"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="EFIVAR_ATTR_RUNTIME_ACCESS"
              value="4"
              c:type="FU_EFIVAR_ATTR_RUNTIME_ACCESS">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="20"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="EFIVAR_ATTR_TIME_BASED_AUTHENTICATED_WRITE_ACCESS"
              value="32"
              c:type="FU_EFIVAR_ATTR_TIME_BASED_AUTHENTICATED_WRITE_ACCESS">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="23"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="EFIVAR_GUID_EFI_GLOBAL"
              value="8be4df61-93ca-11d2-aa0d-00e098032b8c"
              c:type="FU_EFIVAR_GUID_EFI_GLOBAL">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="12"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="EFIVAR_GUID_FWUPDATE"
              value="0abba7dc-e516-4167-bbf5-4d9d1c739416"
              c:type="FU_EFIVAR_GUID_FWUPDATE">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="13"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="EFIVAR_GUID_SECURITY_DATABASE"
              value="d719b2cb-3d3a-4596-a3bc-dad00e67656f"
              c:type="FU_EFIVAR_GUID_SECURITY_DATABASE">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="15"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="EFIVAR_GUID_UX_CAPSULE"
              value="3b8c8162-188c-46a4-aec9-be43f1d65697"
              c:type="FU_EFIVAR_GUID_UX_CAPSULE">
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="14"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="EFI_SIGNATURE_GUID_MICROSOFT"
              value="77fa9abd-0359-4d32-bd60-28f4e78f784b"
              c:type="FU_EFI_SIGNATURE_GUID_MICROSOFT">
      <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                       line="33"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="EFI_SIGNATURE_GUID_OVMF"
              value="a0baa8a3-041d-48a8-bc87-c36d121b5e3d"
              c:type="FU_EFI_SIGNATURE_GUID_OVMF">
      <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                       line="34"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="EFI_SIGNATURE_GUID_OVMF_LEGACY"
              value="d5c1df0b-1bac-4edf-ba48-08834009ca5a"
              c:type="FU_EFI_SIGNATURE_GUID_OVMF_LEGACY">
      <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                       line="35"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="EFI_SIGNATURE_GUID_ZERO"
              value="00000000-0000-0000-0000-000000000000"
              c:type="FU_EFI_SIGNATURE_GUID_ZERO">
      <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                       line="32"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="EfiSignature"
           c:symbol-prefix="efi_signature"
           c:type="FuEfiSignature"
           parent="Firmware"
           glib:type-name="FuEfiSignature"
           glib:get-type="fu_efi_signature_get_type"
           glib:type-struct="EfiSignatureClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efi-signature.c"
           line="11">A UEFI Signature as found in an `EFI_SIGNATURE_LIST`.

See also: [class@FuFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                       line="14"/>
      <function name="kind_to_string"
                c:identifier="fu_efi_signature_kind_to_string"
                version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efi-signature.c"
             line="27">Converts the signature kind to a text representation.</doc>
        <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                         line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efi-signature.c"
               line="33">text, e.g. `x509_cert`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-efi-signature.c"
                 line="29">A #FuEfiSignatureKind, e.g. %FU_EFI_SIGNATURE_KIND_X509</doc>
            <type name="EfiSignatureKind" c:type="FuEfiSignatureKind"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_kind"
              c:identifier="fu_efi_signature_get_kind"
              version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efi-signature.c"
             line="67">Returns the signature kind.</doc>
        <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                         line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efi-signature.c"
               line="73">#FuEfiSignatureKind, e.g. %FU_EFI_SIGNATURE_KIND_SHA256</doc>
          <type name="EfiSignatureKind" c:type="FuEfiSignatureKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-efi-signature.c"
                 line="69">A #FuEfiSignature</doc>
            <type name="EfiSignature" c:type="FuEfiSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_owner"
              c:identifier="fu_efi_signature_get_owner"
              version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efi-signature.c"
             line="84">Returns the GUID of the signature owner.</doc>
        <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                         line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efi-signature.c"
               line="90">GUID owner, perhaps %FU_EFI_SIGNATURE_GUID_MICROSOFT</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-efi-signature.c"
                 line="86">A #FuEfiSignature</doc>
            <type name="EfiSignature" c:type="FuEfiSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="EfiSignatureClass"
            c:type="FuEfiSignatureClass"
            glib:is-gtype-struct-for="EfiSignature">
      <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                       line="14"/>
      <field name="parent_class">
        <type name="FirmwareClass" c:type="FuFirmwareClass"/>
      </field>
    </record>
    <enumeration name="EfiSignatureKind" c:type="FuEfiSignatureKind">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efi-signature.h"
           line="16">The kind of EFI signature.</doc>
      <source-position filename="../libfwupdplugin/fu-efi-signature.h"
                       line="30"/>
      <member name="unknown"
              value="0"
              c:identifier="FU_EFI_SIGNATURE_KIND_UNKNOWN">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efi-signature.h"
             line="18">No signature</doc>
      </member>
      <member name="sha256"
              value="1"
              c:identifier="FU_EFI_SIGNATURE_KIND_SHA256">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efi-signature.h"
             line="19">SHA256 hash</doc>
      </member>
      <member name="x509" value="2" c:identifier="FU_EFI_SIGNATURE_KIND_X509">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efi-signature.h"
             line="20">X509 certificate</doc>
      </member>
    </enumeration>
    <class name="EfiSignatureList"
           c:symbol-prefix="efi_signature_list"
           c:type="FuEfiSignatureList"
           parent="Firmware"
           glib:type-name="FuEfiSignatureList"
           glib:get-type="fu_efi_signature_list_get_type"
           glib:type-struct="EfiSignatureListClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efi-signature-list.c"
           line="16">A UEFI signature list typically found in the `PK` and `KEK` keys.

See also: [class@FuFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-efi-signature-list.h"
                       line="12"/>
      <constructor name="new"
                   c:identifier="fu_efi_signature_list_new"
                   version="1.5.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efi-signature-list.c"
             line="252">Creates a new #FuFirmware that can parse an EFI_SIGNATURE_LIST</doc>
        <source-position filename="../libfwupdplugin/fu-efi-signature-list.h"
                         line="14"/>
        <return-value transfer-ownership="full">
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
      </constructor>
    </class>
    <record name="EfiSignatureListClass"
            c:type="FuEfiSignatureListClass"
            glib:is-gtype-struct-for="EfiSignatureList">
      <source-position filename="../libfwupdplugin/fu-efi-signature-list.h"
                       line="12"/>
      <field name="parent_class">
        <type name="FirmwareClass" c:type="FuFirmwareClass"/>
      </field>
    </record>
    <constant name="FIRMWARE_ALIGNMENT_1"
              value="0"
              c:type="FU_FIRMWARE_ALIGNMENT_1">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="157"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_128"
              value="7"
              c:type="FU_FIRMWARE_ALIGNMENT_128">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="164"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_128K"
              value="17"
              c:type="FU_FIRMWARE_ALIGNMENT_128K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="174"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_128M"
              value="27"
              c:type="FU_FIRMWARE_ALIGNMENT_128M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="184"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_16"
              value="4"
              c:type="FU_FIRMWARE_ALIGNMENT_16">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="161"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_16K"
              value="14"
              c:type="FU_FIRMWARE_ALIGNMENT_16K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="171"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_16M"
              value="24"
              c:type="FU_FIRMWARE_ALIGNMENT_16M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="181"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_1G"
              value="30"
              c:type="FU_FIRMWARE_ALIGNMENT_1G">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="187"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_1K"
              value="10"
              c:type="FU_FIRMWARE_ALIGNMENT_1K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="167"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_1M"
              value="20"
              c:type="FU_FIRMWARE_ALIGNMENT_1M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="177"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_2"
              value="1"
              c:type="FU_FIRMWARE_ALIGNMENT_2">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="158"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_256"
              value="8"
              c:type="FU_FIRMWARE_ALIGNMENT_256">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="165"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_256K"
              value="18"
              c:type="FU_FIRMWARE_ALIGNMENT_256K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="175"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_256M"
              value="28"
              c:type="FU_FIRMWARE_ALIGNMENT_256M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="185"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_2G"
              value="31"
              c:type="FU_FIRMWARE_ALIGNMENT_2G">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="188"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_2K"
              value="11"
              c:type="FU_FIRMWARE_ALIGNMENT_2K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="168"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_2M"
              value="21"
              c:type="FU_FIRMWARE_ALIGNMENT_2M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="178"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_32"
              value="5"
              c:type="FU_FIRMWARE_ALIGNMENT_32">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="162"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_32K"
              value="15"
              c:type="FU_FIRMWARE_ALIGNMENT_32K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="172"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_32M"
              value="25"
              c:type="FU_FIRMWARE_ALIGNMENT_32M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="182"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_4"
              value="2"
              c:type="FU_FIRMWARE_ALIGNMENT_4">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="159"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_4G"
              value="32"
              c:type="FU_FIRMWARE_ALIGNMENT_4G">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="189"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_4K"
              value="12"
              c:type="FU_FIRMWARE_ALIGNMENT_4K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="169"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_4M"
              value="22"
              c:type="FU_FIRMWARE_ALIGNMENT_4M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="179"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_512"
              value="9"
              c:type="FU_FIRMWARE_ALIGNMENT_512">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="166"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_512K"
              value="19"
              c:type="FU_FIRMWARE_ALIGNMENT_512K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="176"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_512M"
              value="29"
              c:type="FU_FIRMWARE_ALIGNMENT_512M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="186"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_64"
              value="6"
              c:type="FU_FIRMWARE_ALIGNMENT_64">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="163"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_64K"
              value="16"
              c:type="FU_FIRMWARE_ALIGNMENT_64K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="173"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_64M"
              value="26"
              c:type="FU_FIRMWARE_ALIGNMENT_64M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="183"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_8"
              value="3"
              c:type="FU_FIRMWARE_ALIGNMENT_8">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="160"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_8K"
              value="13"
              c:type="FU_FIRMWARE_ALIGNMENT_8K">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="170"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ALIGNMENT_8M"
              value="23"
              c:type="FU_FIRMWARE_ALIGNMENT_8M">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="180"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_EXPORT_FLAG_ASCII_DATA"
              value="2"
              c:type="FU_FIRMWARE_EXPORT_FLAG_ASCII_DATA"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="35">Write the data as UTF-8 strings.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="42"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_EXPORT_FLAG_INCLUDE_DEBUG"
              value="1"
              c:type="FU_FIRMWARE_EXPORT_FLAG_INCLUDE_DEBUG"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="27">Include debug information when exporting.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="34"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_EXPORT_FLAG_NONE"
              value="0"
              c:type="FU_FIRMWARE_EXPORT_FLAG_NONE"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="19">No flags set.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="26"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_FLAG_DEDUPE_ID"
              value="1"
              c:type="FU_FIRMWARE_FLAG_DEDUPE_ID"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="92">Dedupe imges by ID.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="99"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_FLAG_DEDUPE_IDX"
              value="2"
              c:type="FU_FIRMWARE_FLAG_DEDUPE_IDX"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="100">Dedupe imges by IDX.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="107"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_FLAG_HAS_CHECKSUM"
              value="4"
              c:type="FU_FIRMWARE_FLAG_HAS_CHECKSUM"
              version="1.5.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="108">Has a CRC or checksum to test internal consistency.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="115"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_FLAG_HAS_VID_PID"
              value="8"
              c:type="FU_FIRMWARE_FLAG_HAS_VID_PID"
              version="1.5.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="116">Has a vendor or product ID in the firmware.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="123"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_FLAG_NONE"
              value="0"
              c:type="FU_FIRMWARE_FLAG_NONE"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="84">No flags set.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="91"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FIRMWARE_ID_HEADER"
              value="header"
              c:type="FU_FIRMWARE_ID_HEADER"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="148">The usual firmware ID string for the header.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="155"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="FIRMWARE_ID_PAYLOAD"
              value="payload"
              c:type="FU_FIRMWARE_ID_PAYLOAD"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="132">The usual firmware ID string for the payload.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="139"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="FIRMWARE_ID_SIGNATURE"
              value="signature"
              c:type="FU_FIRMWARE_ID_SIGNATURE"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.h"
           line="140">The usual firmware ID string for the signature.</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="147"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="FMAP_FIRMWARE_STRLEN"
              value="32"
              c:type="FU_FMAP_FIRMWARE_STRLEN">
      <source-position filename="../libfwupdplugin/fu-fmap-firmware.h"
                       line="11"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <enumeration name="FirmareSrecRecordKind" c:type="FuFirmareSrecRecordKind">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-srec-firmware.h"
           line="20">The kind of SREC record kind.</doc>
      <source-position filename="../libfwupdplugin/fu-srec-firmware.h"
                       line="48"/>
      <member name="s0_header"
              value="0"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S0_HEADER">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="22">Header</doc>
      </member>
      <member name="s1_data_16"
              value="1"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S1_DATA_16">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="23">16 bit data</doc>
      </member>
      <member name="s2_data_24"
              value="2"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S2_DATA_24">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="24">24 bit data</doc>
      </member>
      <member name="s3_data_32"
              value="3"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S3_DATA_32">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="25">32 bit data</doc>
      </member>
      <member name="s4_reserved"
              value="4"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S4_RESERVED">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="26">Reserved value</doc>
      </member>
      <member name="s5_count_16"
              value="5"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S5_COUNT_16">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="27">16 bit count</doc>
      </member>
      <member name="s6_count_24"
              value="6"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S6_COUNT_24">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="28">24 bit count</doc>
      </member>
      <member name="s7_count_32"
              value="7"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S7_COUNT_32">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="29">32 bit count</doc>
      </member>
      <member name="s8_termination_24"
              value="8"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S8_TERMINATION_24">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="30">24 bit termination</doc>
      </member>
      <member name="s9_termination_16"
              value="9"
              c:identifier="FU_FIRMWARE_SREC_RECORD_KIND_S9_TERMINATION_16">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.h"
             line="31">16 bit termination</doc>
      </member>
    </enumeration>
    <class name="Firmware"
           c:symbol-prefix="firmware"
           c:type="FuFirmware"
           parent="GObject.Object"
           glib:type-name="FuFirmware"
           glib:get-type="fu_firmware_get_type"
           glib:type-struct="FirmwareClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-firmware.c"
           line="15">A firmware file which can have children which represent the images within.

See also: [class@FuDfuFirmware], [class@FuIhexFirmware], [class@FuSrecFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="82"/>
      <constructor name="new" c:identifier="fu_firmware_new" version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1623">Creates an empty firmware object.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="194"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1628">a #FuFirmware</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_bytes"
                   c:identifier="fu_firmware_new_from_bytes"
                   version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1639">Creates a firmware object with the provided image set as default.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="195"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1645">a #FuFirmware</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
        <parameters>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1641">firmware blob image</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_gtypes"
                   c:identifier="fu_firmware_new_from_gtypes"
                   version="1.5.6"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1657">Tries to parse the firmware with each #GType in order.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="196"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1666">a #FuFirmware, or %NULL</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
        <parameters>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1659">firmware blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1660">install flags, e.g. %FWUPD_INSTALL_FLAG_IGNORE_CHECKSUM</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
          <parameter name="error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1661">optional return location for an error</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1662">an array of #GTypes, ending with %G_TYPE_INVALID</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <function name="flag_from_string"
                c:identifier="fu_firmware_flag_from_string"
                version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="68">Converts a string to a #FuFirmwareFlags.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="192"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="74">enumerated value</doc>
          <type name="FirmwareFlags" c:type="FuFirmwareFlags"/>
        </return-value>
        <parameters>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="70">a string, e.g. `dedupe-id`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="flag_to_string"
                c:identifier="fu_firmware_flag_to_string"
                version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="42">Converts a #FuFirmwareFlags to a string.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="191"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="48">identifier string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="44">a #FuFirmwareFlags, e.g. %FU_FIRMWARE_FLAG_DEDUPE_ID</doc>
            <type name="FirmwareFlags" c:type="FuFirmwareFlags"/>
          </parameter>
        </parameters>
      </function>
      <function name="strparse_uint16_safe"
                c:identifier="fu_firmware_strparse_uint16_safe"
                version="1.5.6"
                throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware-common.c"
             line="80">Parses a base 16 number from a string of 4 characters in length.
The returned @value will range from from 0 to 0xffff.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware-common.h"
                         line="21"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware-common.c"
               line="91">%TRUE if parsed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="82">destination buffer</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="datasz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="83">size of @data, typcally the same as `strlen(data)`</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="84">offset in chars into @data to read</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="85">parsed value</doc>
            <type name="guint16" c:type="guint16*"/>
          </parameter>
        </parameters>
      </function>
      <function name="strparse_uint24_safe"
                c:identifier="fu_firmware_strparse_uint24_safe"
                version="1.5.6"
                throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware-common.c"
             line="112">Parses a base 16 number from a string of 6 characters in length.
The returned @value will range from from 0 to 0xffffff.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware-common.h"
                         line="26"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware-common.c"
               line="123">%TRUE if parsed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="114">destination buffer</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="datasz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="115">size of @data, typcally the same as `strlen(data)`</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="116">offset in chars into @data to read</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="117">parsed value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="strparse_uint32_safe"
                c:identifier="fu_firmware_strparse_uint32_safe"
                version="1.5.6"
                throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware-common.c"
             line="144">Parses a base 16 number from a string of 8 characters in length.
The returned @value will range from from 0 to 0xffffffff.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware-common.h"
                         line="31"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware-common.c"
               line="155">%TRUE if parsed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="146">destination buffer</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="datasz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="147">size of @data, typcally the same as `strlen(data)`</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="148">offset in chars into @data to read</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="149">parsed value</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="strparse_uint4_safe"
                c:identifier="fu_firmware_strparse_uint4_safe"
                version="1.5.6"
                throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware-common.c"
             line="16">Parses a base 16 number from a string of 1 character in length.
The returned @value will range from from 0 to 0xf.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware-common.h"
                         line="11"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware-common.c"
               line="27">%TRUE if parsed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="18">destination buffer</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="datasz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="19">size of @data, typcally the same as `strlen(data)`</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="20">offset in chars into @data to read</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="21">parsed value</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
        </parameters>
      </function>
      <function name="strparse_uint8_safe"
                c:identifier="fu_firmware_strparse_uint8_safe"
                version="1.5.6"
                throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware-common.c"
             line="48">Parses a base 16 number from a string of 2 characters in length.
The returned @value will range from from 0 to 0xff.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware-common.h"
                         line="16"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware-common.c"
               line="59">%TRUE if parsed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="50">destination buffer</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="datasz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="51">size of @data, typcally the same as `strlen(data)`</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="52">offset in chars into @data to read</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware-common.c"
                 line="53">parsed value</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="build"
                      invoker="build"
                      version="1.5.0"
                      introspectable="0"
                      throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="734">Builds a firmware from an XML manifest. The manifest would typically have the
following form:

|[&lt;!-- language="XML" --&gt;
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;firmware gtype="FuBcm57xxFirmware"&gt;
  &lt;version&gt;1.2.3&lt;/version&gt;
  &lt;firmware gtype="FuBcm57xxStage1Image"&gt;
    &lt;version&gt;7.8.9&lt;/version&gt;
    &lt;id&gt;stage1&lt;/id&gt;
    &lt;idx&gt;0x01&lt;/idx&gt;
    &lt;filename&gt;stage1.bin&lt;/filename&gt;
  &lt;/firmware&gt;
  &lt;firmware gtype="FuBcm57xxStage2Image"&gt;
    &lt;id&gt;stage2&lt;/id&gt;
    &lt;data/&gt; &lt;!-- empty! --&gt;
  &lt;/firmware&gt;
  &lt;firmware gtype="FuBcm57xxDictImage"&gt;
    &lt;id&gt;ape&lt;/id&gt;
    &lt;addr&gt;0x7&lt;/addr&gt;
    &lt;data&gt;aGVsbG8gd29ybGQ=&lt;/data&gt; &lt;!-- base64 --&gt;
  &lt;/firmware&gt;
&lt;/firmware&gt;
]|

This would be used in a build-system to merge images from generated files:
`fwupdtool firmware-build fw.builder.xml test.fw`

Static binary content can be specified in the `&lt;firmware&gt;/&lt;data&gt;` section and
is encoded as base64 text if not empty.

Additionally, extra nodes can be included under nested `&lt;firmware&gt;` objects
which can be parsed by the subclassed objects. You should verify the
subclassed object `FuFirmware-&gt;build` vfunc for the specific additional
options supported.

Plugins should manually g_type_ensure() subclassed image objects if not
constructed as part of the plugin fu_plugin_init() or fu_plugin_setup()
functions.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="780">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="736">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="737">a Xmlb node</doc>
            <type c:type="XbNode*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="export"
                      invoker="export"
                      version="1.6.0"
                      introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1454">This allows us to build an XML object for the nested firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h" line="64"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1456">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1457">firmware export flags, e.g. %FU_FIRMWARE_EXPORT_FLAG_INCLUDE_DEBUG</doc>
            <type name="FirmwareExportFlags" c:type="FuFirmwareExportFlags"/>
          </parameter>
          <parameter name="bn" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1458">a Xmlb builder node</doc>
            <type c:type="XbBuilderNode*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_checksum"
                      invoker="get_checksum"
                      version="1.6.0"
                      throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="592">Returns a checksum of the payload data.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h" line="76"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="600">a checksum string, or %NULL if the checksum is not available</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="594">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="csum_kind" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="595">a checksum type, e.g. %G_CHECKSUM_SHA256</doc>
            <type name="GLib.ChecksumType" c:type="GChecksumType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="parse" throws="1">
        <source-position filename="../libfwupdplugin/fu-firmware.h" line="54"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="fw" transfer-ownership="none">
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="addr_start" transfer-ownership="none">
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="addr_end" transfer-ownership="none">
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tokenize"
                      invoker="tokenize"
                      version="1.3.2"
                      throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="631">Tokenizes a firmware, typically breaking the firmware into records.

Records can be enumerated using subclass-specific functionality, for example
using fu_srec_firmware_get_records().</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="643">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="633">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="634">firmware blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="635">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write" invoker="write" version="1.3.1" throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1011">Writes a firmware, typically packing the images into a binary blob.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1018">a data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1013">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="add_chunk"
              c:identifier="fu_firmware_add_chunk"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="572">Adds a chunk to the image.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="242"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="574">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="chk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="575">a #FuChunk</doc>
            <type name="Chunk" c:type="FuChunk*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_flag"
              c:identifier="fu_firmware_add_flag"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="92">Adds a specific firmware flag to the firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="213"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="firmware" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="94">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="95">the firmare flag</doc>
            <type name="FirmwareFlags" c:type="FuFirmwareFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_image"
              c:identifier="fu_firmware_add_image"
              version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1147">Adds an image to the firmware.

If %FU_FIRMWARE_FLAG_DEDUPE_ID is set, an image with the same ID is already
present it is replaced.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="293"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1149">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="img" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1150">a child firmware image</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </parameter>
        </parameters>
      </method>
      <method name="build"
              c:identifier="fu_firmware_build"
              version="1.5.0"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="734">Builds a firmware from an XML manifest. The manifest would typically have the
following form:

|[&lt;!-- language="XML" --&gt;
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;firmware gtype="FuBcm57xxFirmware"&gt;
  &lt;version&gt;1.2.3&lt;/version&gt;
  &lt;firmware gtype="FuBcm57xxStage1Image"&gt;
    &lt;version&gt;7.8.9&lt;/version&gt;
    &lt;id&gt;stage1&lt;/id&gt;
    &lt;idx&gt;0x01&lt;/idx&gt;
    &lt;filename&gt;stage1.bin&lt;/filename&gt;
  &lt;/firmware&gt;
  &lt;firmware gtype="FuBcm57xxStage2Image"&gt;
    &lt;id&gt;stage2&lt;/id&gt;
    &lt;data/&gt; &lt;!-- empty! --&gt;
  &lt;/firmware&gt;
  &lt;firmware gtype="FuBcm57xxDictImage"&gt;
    &lt;id&gt;ape&lt;/id&gt;
    &lt;addr&gt;0x7&lt;/addr&gt;
    &lt;data&gt;aGVsbG8gd29ybGQ=&lt;/data&gt; &lt;!-- base64 --&gt;
  &lt;/firmware&gt;
&lt;/firmware&gt;
]|

This would be used in a build-system to merge images from generated files:
`fwupdtool firmware-build fw.builder.xml test.fw`

Static binary content can be specified in the `&lt;firmware&gt;/&lt;data&gt;` section and
is encoded as base64 text if not empty.

Additionally, extra nodes can be included under nested `&lt;firmware&gt;` objects
which can be parsed by the subclassed objects. You should verify the
subclassed object `FuFirmware-&gt;build` vfunc for the specific additional
options supported.

Plugins should manually g_type_ensure() subclassed image objects if not
constructed as part of the plugin fu_plugin_init() or fu_plugin_setup()
functions.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="252"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="780">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="736">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="737">a Xmlb node</doc>
            <type c:type="XbNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="build_from_xml"
              c:identifier="fu_firmware_build_from_xml"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="903">Builds a firmware from an XML manifest. The manifest would typically have the
following form:

|[&lt;!-- language="XML" --&gt;
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;firmware gtype="FuBcm57xxFirmware"&gt;
  &lt;version&gt;1.2.3&lt;/version&gt;
  &lt;firmware gtype="FuBcm57xxStage1Image"&gt;
    &lt;version&gt;7.8.9&lt;/version&gt;
    &lt;id&gt;stage1&lt;/id&gt;
    &lt;idx&gt;0x01&lt;/idx&gt;
    &lt;filename&gt;stage1.bin&lt;/filename&gt;
  &lt;/firmware&gt;
  &lt;firmware gtype="FuBcm57xxStage2Image"&gt;
    &lt;id&gt;stage2&lt;/id&gt;
    &lt;data/&gt; &lt;!-- empty! --&gt;
  &lt;/firmware&gt;
  &lt;firmware gtype="FuBcm57xxDictImage"&gt;
    &lt;id&gt;ape&lt;/id&gt;
    &lt;addr&gt;0x7&lt;/addr&gt;
    &lt;data&gt;aGVsbG8gd29ybGQ=&lt;/data&gt; &lt;!-- base64 --&gt;
  &lt;/firmware&gt;
&lt;/firmware&gt;
]|

This would be used in a build-system to merge images from generated files:
`fwupdtool firmware-build fw.builder.xml test.fw`

Static binary content can be specified in the `&lt;firmware&gt;/&lt;data&gt;` section and
is encoded as base64 text if not empty.

Additionally, extra nodes can be included under nested `&lt;firmware&gt;` objects
which can be parsed by the subclassed objects. You should verify the
subclassed object `FuFirmware-&gt;build` vfunc for the specific additional
options supported.

Plugins should manually g_type_ensure() subclassed image objects if not
constructed as part of the plugin fu_plugin_init() or fu_plugin_setup()
functions.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="256"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="949">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="905">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="xml" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="906">XML text</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="export"
              c:identifier="fu_firmware_export"
              version="1.6.0"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1454">This allows us to build an XML object for the nested firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="201"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1456">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1457">firmware export flags, e.g. %FU_FIRMWARE_EXPORT_FLAG_INCLUDE_DEBUG</doc>
            <type name="FirmwareExportFlags" c:type="FuFirmwareExportFlags"/>
          </parameter>
          <parameter name="bn" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1458">a Xmlb builder node</doc>
            <type c:type="XbBuilderNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="export_to_xml"
              c:identifier="fu_firmware_export_to_xml"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1538">This allows us to build an XML object for the nested firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="204"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1546">a string value, or %NULL for invalid.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1540">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1541">firmware export flags, e.g. %FU_FIRMWARE_EXPORT_FLAG_INCLUDE_DEBUG</doc>
            <type name="FirmwareExportFlags" c:type="FuFirmwareExportFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_addr"
              c:identifier="fu_firmware_get_addr"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="306">Gets the base address of the image.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="223"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="312">integer</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="308">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_alignment"
              c:identifier="fu_firmware_get_alignment"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="508">Gets the alignment of the firmware.

This allows a firmware to pad to a power of 2 boundary, where @alignment
is the bit position to align to.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="239"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="517">integer</doc>
          <type name="guint8" c:type="guint8"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="510">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bytes"
              c:identifier="fu_firmware_get_bytes"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="459">Gets the firmware payload, which does not have any header or footer included.

If there is more than one potential payload or image section then fu_firmware_add_image()
should be used instead.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="235"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="469">a #GBytes, or %NULL if the payload has never been set</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="461">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_checksum"
              c:identifier="fu_firmware_get_checksum"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="592">Returns a checksum of the payload data.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="289"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="600">a checksum string, or %NULL if the checksum is not available</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="594">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="csum_kind" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="595">a checksum type, e.g. %G_CHECKSUM_SHA256</doc>
            <type name="GLib.ChecksumType" c:type="GChecksumType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_chunks"
              c:identifier="fu_firmware_get_chunks"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="529">Gets the optional image chunks.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="244"/>
        <return-value transfer-ownership="container" nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="536">chunk data, or %NULL</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Chunk"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="531">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_filename"
              c:identifier="fu_firmware_get_filename"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="209">Gets an optional filename that represents the image source or destination.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="217"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="215">a string, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="211">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="fu_firmware_get_id" version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="271">Gets the image ID, typically set at construction.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="220"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="277">image ID, e.g. `config`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="273">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_idx"
              c:identifier="fu_firmware_get_idx"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="420">Gets the index of the image which is used for ordering.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="232"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="426">integer</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="422">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_image_by_checksum"
              c:identifier="fu_firmware_get_image_by_checksum"
              version="1.5.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1388">Gets the firmware image using the image checksum. The checksum type is guessed
based on the length of the input string.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="317"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1397">a #FuFirmware, or %NULL if the image is not found</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1390">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1391">checksum string of any format</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_image_by_id"
              c:identifier="fu_firmware_get_image_by_id"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1303">Gets the firmware image using the image ID.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="305"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1311">a #FuFirmware, or %NULL if the image is not found</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1305">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1306">image ID, e.g. `config`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_image_by_id_bytes"
              c:identifier="fu_firmware_get_image_by_id_bytes"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1335">Gets the firmware image bytes using the image ID.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="308"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1343">a #GBytes of a #FuFirmware, or %NULL if the image is not found</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1337">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1338">image ID, e.g. `config`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_image_by_idx"
              c:identifier="fu_firmware_get_image_by_idx"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1356">Gets the firmware image using the image index.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="311"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1364">a #FuFirmware, or %NULL if the image is not found</doc>
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1358">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1359">image index</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_image_by_idx_bytes"
              c:identifier="fu_firmware_get_image_by_idx_bytes"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1433">Gets the firmware image bytes using the image index.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="314"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1441">a #GBytes of a #FuFirmware, or %NULL if the image is not found</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1435">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1436">image index</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_images"
              c:identifier="fu_firmware_get_images"
              version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1277">Returns all the images in the firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="304"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1283">images</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Firmware"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1279">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_offset"
              c:identifier="fu_firmware_get_offset"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="341">Gets the base offset of the image.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="226"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="347">integer</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="343">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="fu_firmware_get_size"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="377">Gets the total size of the image, which is typically the same size as the
data from fu_firmware_write().

If the size has not been explicitly set, and fu_firmware_set_bytes() has been
used then the size of this is used instead.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="229"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="387">integer</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="379">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_version"
              c:identifier="fu_firmware_get_version"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="129">Gets an optional version that represents the firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="207"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="135">a string, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="131">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_version_raw"
              c:identifier="fu_firmware_get_version_raw"
              version="1.5.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="170">Gets an raw version that represents the firmware. This is most frequently
used when building firmware with `&lt;version_raw&gt;0x123456&lt;/version_raw&gt;` in a
`firmware.builder.xml` file to avoid string splitting and sanity checks.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="210"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="178">an integer, or %G_MAXUINT64 for invalid</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="172">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_flag"
              c:identifier="fu_firmware_has_flag"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="110">Finds if the firmware has a specific firmware flag.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="215"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="117">%TRUE if the flag is set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="firmware" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="112">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="113">the firmare flag</doc>
            <type name="FirmwareFlags" c:type="FuFirmwareFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse"
              c:identifier="fu_firmware_parse"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="715">Parses a firmware, typically breaking the firmware into images.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="260"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="724">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="717">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="718">firmware blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="719">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_file"
              c:identifier="fu_firmware_parse_file"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="981">Parses a firmware file, typically breaking the firmware into images.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="265"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="990">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="983">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="984">a file</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="985">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_full"
              c:identifier="fu_firmware_parse_full"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="663">Parses a firmware, typically breaking the firmware into images.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="270"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="674">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="665">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="666">firmware blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="addr_start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="667">start address, useful for ignoring a bootloader</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="addr_end" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="668">end address, useful for ignoring config bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="669">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_image"
              c:identifier="fu_firmware_remove_image"
              version="1.5.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1188">Remove an image from the firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="295"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1196">%TRUE if the image was removed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1190">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="img" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1191">a child firmware image</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_image_by_id"
              c:identifier="fu_firmware_remove_image_by_id"
              version="1.5.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1249">Removes the first image from the firmware matching the ID.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="301"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1257">%TRUE if an image was removed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1251">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1252">image ID, e.g. `config`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_image_by_idx"
              c:identifier="fu_firmware_remove_image_by_idx"
              version="1.5.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1221">Removes the first image from the firmware matching the index.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="298"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1229">%TRUE if an image was removed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1223">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1224">index</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_addr"
              c:identifier="fu_firmware_set_addr"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="289">Sets the base address of the image.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="224"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="291">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="addr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="292">integer</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_alignment"
              c:identifier="fu_firmware_set_alignment"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="488">Sets the alignment of the firmware.

This allows a firmware to pad to a power of 2 boundary, where @alignment
is the bit position to align to.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="240"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="490">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="alignment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="491">integer, or 0 to disable</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_bytes"
              c:identifier="fu_firmware_set_bytes"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="438">Sets the contents of the image if not created with fu_firmware_new_from_bytes().</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="237"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="440">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="441">data blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filename"
              c:identifier="fu_firmware_set_filename"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="227">Sets an optional filename that represents the image source or destination.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="218"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="229">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="filename"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="230">a string filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_id" c:identifier="fu_firmware_set_id" version="1.6.0">
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="221"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="252">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="253">image ID, e.g. `config`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_idx"
              c:identifier="fu_firmware_set_idx"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="403">Sets the index of the image which is used for ordering.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="233"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="405">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="406">integer</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_offset"
              c:identifier="fu_firmware_set_offset"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="324">Sets the base offset of the image.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="227"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="326">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="327">integer</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size"
              c:identifier="fu_firmware_set_size"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="359">Sets the total size of the image, which should be the same size as the
data from fu_firmware_write().</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="230"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="361">a #FuPlugin</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="362">integer</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version"
              c:identifier="fu_firmware_set_version"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="147">Sets an optional version that represents the firmware.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="208"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="149">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="version"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="150">optional string version</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version_raw"
              c:identifier="fu_firmware_set_version_raw"
              version="1.5.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="190">Sets an raw version that represents the firmware.

This is optional, and is typically only used for debugging.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="211"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="192">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="version_raw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="193">a raw version, or %G_MAXUINT64 for invalid</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="fu_firmware_to_string"
              version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1566">This allows us to easily print the object.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="200"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1572">a string value, or %NULL for invalid.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1568">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tokenize"
              c:identifier="fu_firmware_tokenize"
              version="1.3.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="631">Tokenizes a firmware, typically breaking the firmware into records.

Records can be enumerated using subclass-specific functionality, for example
using fu_srec_firmware_get_records().</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="247"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="643">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="633">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="634">firmware blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="635">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="write"
              c:identifier="fu_firmware_write"
              version="1.3.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1011">Writes a firmware, typically packing the images into a binary blob.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="277"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1018">a data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1013">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_chunk"
              c:identifier="fu_firmware_write_chunk"
              version="1.6.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1047">Gets a block of data from the image. If the contents of the image is
smaller than the requested chunk size then the #GBytes will be smaller
than @chunk_sz_max. Use fu_common_bytes_pad() if padding is required.

If the @address is larger than the size of the image then an error is returned.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="280"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1060">a #GBytes, or %NULL</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1049">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1050">an address smaller than fu_firmware_get_addr()</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="chunk_sz_max" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1051">the size of the new chunk</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_file"
              c:identifier="fu_firmware_write_file"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-firmware.c"
             line="1115">Writes a firmware, typically packing the images into a binary blob.</doc>
        <source-position filename="../libfwupdplugin/fu-firmware.h"
                         line="285"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-firmware.c"
               line="1123">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1117">a #FuFirmware</doc>
            <type name="Firmware" c:type="FuFirmware*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1118">a file</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="FirmwareClass"
            c:type="FuFirmwareClass"
            glib:is-gtype-struct-for="Firmware">
      <source-position filename="../libfwupdplugin/fu-firmware.h" line="82"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="parse">
        <callback name="parse" throws="1">
          <source-position filename="../libfwupdplugin/fu-firmware.h"
                           line="54"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Firmware" c:type="FuFirmware*"/>
            </parameter>
            <parameter name="fw" transfer-ownership="none">
              <type name="GLib.Bytes" c:type="GBytes*"/>
            </parameter>
            <parameter name="addr_start" transfer-ownership="none">
              <type name="guint64" c:type="guint64"/>
            </parameter>
            <parameter name="addr_end" transfer-ownership="none">
              <type name="guint64" c:type="guint64"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write">
        <callback name="write" throws="1">
          <source-position filename="../libfwupdplugin/fu-firmware.h"
                           line="61"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="1018">a data blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="1013">a #FuFirmware</doc>
              <type name="Firmware" c:type="FuFirmware*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="export" introspectable="0">
        <callback name="export" introspectable="0">
          <source-position filename="../libfwupdplugin/fu-firmware.h"
                           line="64"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="1456">a #FuFirmware</doc>
              <type name="Firmware" c:type="FuFirmware*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="1457">firmware export flags, e.g. %FU_FIRMWARE_EXPORT_FLAG_INCLUDE_DEBUG</doc>
              <type name="FirmwareExportFlags" c:type="FuFirmwareExportFlags"/>
            </parameter>
            <parameter name="bn" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="1458">a Xmlb builder node</doc>
              <type c:type="XbBuilderNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tokenize">
        <callback name="tokenize" throws="1">
          <source-position filename="../libfwupdplugin/fu-firmware.h"
                           line="67"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="643">%TRUE for success</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="633">a #FuFirmware</doc>
              <type name="Firmware" c:type="FuFirmware*"/>
            </parameter>
            <parameter name="fw" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="634">firmware blob</doc>
              <type name="GLib.Bytes" c:type="GBytes*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="635">install flags, e.g. %FWUPD_INSTALL_FLAG_FORCE</doc>
              <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="build" introspectable="0">
        <callback name="build" introspectable="0" throws="1">
          <source-position filename="../libfwupdplugin/fu-firmware.h"
                           line="72"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="780">%TRUE for success</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="736">a #FuFirmware</doc>
              <type name="Firmware" c:type="FuFirmware*"/>
            </parameter>
            <parameter name="n" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="737">a Xmlb node</doc>
              <type c:type="XbNode*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_checksum">
        <callback name="get_checksum" throws="1">
          <source-position filename="../libfwupdplugin/fu-firmware.h"
                           line="76"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-firmware.c"
                 line="600">a checksum string, or %NULL if the checksum is not available</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="594">a #FuPlugin</doc>
              <type name="Firmware" c:type="FuFirmware*"/>
            </parameter>
            <parameter name="csum_kind" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-firmware.c"
                   line="595">a checksum type, e.g. %G_CHECKSUM_SHA256</doc>
              <type name="GLib.ChecksumType" c:type="GChecksumType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="26">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="Fmap" c:type="FuFmap">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-fmap-firmware.h"
           line="42">Mapping of volatile and static regions in firmware binary.</doc>
      <source-position filename="../libfwupdplugin/fu-fmap-firmware.h"
                       line="57"/>
      <field name="signature" writable="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
      <field name="ver_major" writable="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="ver_minor" writable="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="base" writable="1">
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="size" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="name" writable="1">
        <array zero-terminated="0" fixed-size="32">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
      <field name="nareas" writable="1">
        <type name="guint16" c:type="guint16"/>
      </field>
      <field name="areas" writable="1">
        <array zero-terminated="0">
          <type name="FmapArea" c:type="FuFmapArea"/>
        </array>
      </field>
    </record>
    <record name="FmapArea" c:type="FuFmapArea">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-fmap-firmware.h"
           line="30">Specific area of volatile and static regions in firmware binary.</doc>
      <source-position filename="../libfwupdplugin/fu-fmap-firmware.h"
                       line="40"/>
      <field name="offset" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="size" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="name" writable="1">
        <array zero-terminated="0" fixed-size="32">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
      <field name="flags" writable="1">
        <type name="guint16" c:type="guint16"/>
      </field>
    </record>
    <class name="FmapFirmware"
           c:symbol-prefix="fmap_firmware"
           c:type="FuFmapFirmware"
           parent="Firmware"
           glib:type-name="FuFmapFirmware"
           glib:get-type="fu_fmap_firmware_get_type"
           glib:type-struct="FmapFirmwareClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-fmap-firmware.c"
           line="14">A FMAP firmware image.

See also: [class@FuFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-fmap-firmware.h"
                       line="28"/>
      <constructor name="new"
                   c:identifier="fu_fmap_firmware_new"
                   version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-fmap-firmware.c"
             line="236">Creates a new #FuFirmware of sub type fmap</doc>
        <source-position filename="../libfwupdplugin/fu-fmap-firmware.h"
                         line="59"/>
        <return-value transfer-ownership="full">
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
      </constructor>
      <field name="parent_instance">
        <type name="Firmware" c:type="FuFirmware"/>
      </field>
    </class>
    <record name="FmapFirmwareClass"
            c:type="FuFmapFirmwareClass"
            glib:is-gtype-struct-for="FmapFirmware">
      <source-position filename="../libfwupdplugin/fu-fmap-firmware.h"
                       line="28"/>
      <field name="parent_class">
        <type name="FirmwareClass" c:type="FuFirmwareClass"/>
      </field>
      <field name="parse">
        <callback name="parse" throws="1">
          <source-position filename="../libfwupdplugin/fu-fmap-firmware.h"
                           line="20"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Firmware" c:type="FuFirmware*"/>
            </parameter>
            <parameter name="fw" transfer-ownership="none">
              <type name="GLib.Bytes" c:type="GBytes*"/>
            </parameter>
            <parameter name="addr_start" transfer-ownership="none">
              <type name="guint64" c:type="guint64"/>
            </parameter>
            <parameter name="addr_end" transfer-ownership="none">
              <type name="guint64" c:type="guint64"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="14">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="HWIDS_KEY_BASEBOARD_MANUFACTURER"
              value="BaseboardManufacturer"
              c:type="FU_HWIDS_KEY_BASEBOARD_MANUFACTURER"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="17">The HwID key for the baseboard (motherboard) vendor.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="24"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_BASEBOARD_PRODUCT"
              value="BaseboardProduct"
              c:type="FU_HWIDS_KEY_BASEBOARD_PRODUCT"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="25">The HwID key for baseboard (motherboard) product.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="32"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_BIOS_MAJOR_RELEASE"
              value="BiosMajorRelease"
              c:type="FU_HWIDS_KEY_BIOS_MAJOR_RELEASE"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="33">The HwID key for the BIOS major version.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="40"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_BIOS_MINOR_RELEASE"
              value="BiosMinorRelease"
              c:type="FU_HWIDS_KEY_BIOS_MINOR_RELEASE"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="41">The HwID key for the BIOS minor version.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="48"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_BIOS_VENDOR"
              value="BiosVendor"
              c:type="FU_HWIDS_KEY_BIOS_VENDOR"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="49">The HwID key for the BIOS vendor.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="56"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_BIOS_VERSION"
              value="BiosVersion"
              c:type="FU_HWIDS_KEY_BIOS_VERSION"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="57">The HwID key for the BIOS version.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="64"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_ENCLOSURE_KIND"
              value="EnclosureKind"
              c:type="FU_HWIDS_KEY_ENCLOSURE_KIND"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="81">The HwID key for the enclosure kind.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="88"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_FAMILY"
              value="Family"
              c:type="FU_HWIDS_KEY_FAMILY"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="89">The HwID key for the deice family.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="96"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_FIRMWARE_MAJOR_RELEASE"
              value="FirmwareMajorRelease"
              c:type="FU_HWIDS_KEY_FIRMWARE_MAJOR_RELEASE"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="65">The HwID key for the firmware major version.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="72"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_FIRMWARE_MINOR_RELEASE"
              value="FirmwareMinorRelease"
              c:type="FU_HWIDS_KEY_FIRMWARE_MINOR_RELEASE"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="73">The HwID key for the firmware minor version.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="80"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_MANUFACTURER"
              value="Manufacturer"
              c:type="FU_HWIDS_KEY_MANUFACTURER"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="97">The HwID key for the top-level product vendor.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="104"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_PRODUCT_NAME"
              value="ProductName"
              c:type="FU_HWIDS_KEY_PRODUCT_NAME"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="105">The HwID key for the top-level product product name.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="112"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="HWIDS_KEY_PRODUCT_SKU"
              value="ProductSku"
              c:type="FU_HWIDS_KEY_PRODUCT_SKU"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.h"
           line="113">The HwID key for the top-level product SKU.</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="120"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="HidDevice"
           c:symbol-prefix="hid_device"
           c:type="FuHidDevice"
           parent="UsbDevice"
           glib:type-name="FuHidDevice"
           glib:get-type="fu_hid_device_get_type"
           glib:type-struct="HidDeviceClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hid-device.c"
           line="22">A Human Interface Device (HID) device.

See also: [class@FuDevice], [class@FuUsbDevice]</doc>
      <source-position filename="../libfwupdplugin/fu-hid-device.h" line="20"/>
      <constructor name="new" c:identifier="fu_hid_device_new" version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.c"
             line="457">Creates a new HID device.</doc>
        <source-position filename="../libfwupdplugin/fu-hid-device.h"
                         line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hid-device.c"
               line="463">a #FuHidDevice</doc>
          <type name="HidDevice" c:type="FuHidDevice*"/>
        </return-value>
        <parameters>
          <parameter name="usb_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="459">a USB device</doc>
            <type name="GUsb.Device" c:type="GUsbDevice*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_flag"
              c:identifier="fu_hid_device_add_flag"
              version="1.5.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.c"
             line="205">Adds a flag to be used for all set and get report messages.</doc>
        <source-position filename="../libfwupdplugin/fu-hid-device.h"
                         line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="207">a #FuHidDevice</doc>
            <type name="HidDevice" c:type="FuHidDevice*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="208">HID device flags, e.g. %FU_HID_DEVICE_FLAG_RETRY_FAILURE</doc>
            <type name="HidDeviceFlags" c:type="FuHidDeviceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_interface"
              c:identifier="fu_hid_device_get_interface"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.c"
             line="187">Gets the HID USB interface number.</doc>
        <source-position filename="../libfwupdplugin/fu-hid-device.h"
                         line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hid-device.c"
               line="193">integer</doc>
          <type name="guint8" c:type="guint8"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="189">a #FuHidDevice</doc>
            <type name="HidDevice" c:type="FuHidDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_report"
              c:identifier="fu_hid_device_get_report"
              version="1.4.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.c"
             line="397">Calls GetReport on the hardware.</doc>
        <source-position filename="../libfwupdplugin/fu-hid-device.h"
                         line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hid-device.c"
               line="409">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="399">a #FuHidDevice</doc>
            <type name="HidDevice" c:type="FuHidDevice*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="400">low byte of wValue</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
          <parameter name="buf"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="401">a mutable buffer of data to send</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="bufsz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="402">size of @buf</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="403">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="404">HID device flags e.g. %FU_HID_DEVICE_FLAG_ALLOW_TRUNC</doc>
            <type name="HidDeviceFlags" c:type="FuHidDeviceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_interface"
              c:identifier="fu_hid_device_set_interface"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.c"
             line="165">Sets the HID USB interface number.

In most cases the HID interface is auto-detected, but this function can be
used where there are multiple HID interfaces or where the device USB
interface descriptor is invalid.</doc>
        <source-position filename="../libfwupdplugin/fu-hid-device.h"
                         line="47"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="167">a #FuHidDevice</doc>
            <type name="HidDevice" c:type="FuHidDevice*"/>
          </instance-parameter>
          <parameter name="interface" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="168">an interface number, e.g. `0x03`</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_report"
              c:identifier="fu_hid_device_set_report"
              version="1.4.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.c"
             line="284">Calls SetReport on the hardware.</doc>
        <source-position filename="../libfwupdplugin/fu-hid-device.h"
                         line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hid-device.c"
               line="296">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="286">a #FuHidDevice</doc>
            <type name="HidDevice" c:type="FuHidDevice*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="287">low byte of wValue</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
          <parameter name="buf"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="288">a mutable buffer of data to send</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="bufsz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="289">size of @buf</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="290">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hid-device.c"
                 line="291">HID device flags e.g. %FU_HID_DEVICE_FLAG_ALLOW_TRUNC</doc>
            <type name="HidDeviceFlags" c:type="FuHidDeviceFlags"/>
          </parameter>
        </parameters>
      </method>
      <property name="interface" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="UsbDevice" c:type="FuUsbDevice"/>
      </field>
    </class>
    <record name="HidDeviceClass"
            c:type="FuHidDeviceClass"
            glib:is-gtype-struct-for="HidDevice">
      <source-position filename="../libfwupdplugin/fu-hid-device.h" line="20"/>
      <field name="parent_class">
        <type name="UsbDeviceClass" c:type="FuUsbDeviceClass"/>
      </field>
      <field name="__reserved">
        <array zero-terminated="0" fixed-size="31">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="HidDeviceFlags" c:type="FuHidDeviceFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hid-device.h"
           line="22">Flags used when calling fu_hid_device_get_report() and fu_hid_device_set_report().</doc>
      <source-position filename="../libfwupdplugin/fu-hid-device.h" line="42"/>
      <member name="none" value="0" c:identifier="FU_HID_DEVICE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.h"
             line="24">No flags set</doc>
      </member>
      <member name="allow_trunc"
              value="1"
              c:identifier="FU_HID_DEVICE_FLAG_ALLOW_TRUNC">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.h"
             line="25">Allow truncated reads and writes</doc>
      </member>
      <member name="is_feature"
              value="2"
              c:identifier="FU_HID_DEVICE_FLAG_IS_FEATURE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.h"
             line="26">Use %FU_HID_REPORT_TYPE_FEATURE for wValue</doc>
      </member>
      <member name="retry_failure"
              value="4"
              c:identifier="FU_HID_DEVICE_FLAG_RETRY_FAILURE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.h"
             line="27">Retry up to 10 times on failure</doc>
      </member>
      <member name="no_kernel_unbind"
              value="8"
              c:identifier="FU_HID_DEVICE_FLAG_NO_KERNEL_UNBIND">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.h"
             line="28">Do not unbind the kernel driver on open</doc>
      </member>
      <member name="no_kernel_rebind"
              value="16"
              c:identifier="FU_HID_DEVICE_FLAG_NO_KERNEL_REBIND">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hid-device.h"
             line="29">Do not rebind the kernel driver on close</doc>
      </member>
    </bitfield>
    <class name="Hwids"
           c:symbol-prefix="hwids"
           c:type="FuHwids"
           parent="GObject.Object"
           glib:type-name="FuHwids"
           glib:get-type="fu_hwids_get_type"
           glib:type-struct="HwidsClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-hwids.c"
           line="20">A the hardware IDs on the system.

Note, these are called "CHIDs" in Microsoft Windows and the results here
will match that of `ComputerHardwareIds.exe`.

See also: [class@FuSmbios]</doc>
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="15"/>
      <constructor name="new" c:identifier="fu_hwids_new" version="0.9.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="532">Creates a new #FuHwids</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="122"/>
        <return-value transfer-ownership="full">
          <type name="Hwids" c:type="FuHwids*"/>
        </return-value>
      </constructor>
      <method name="add_smbios_override"
              c:identifier="fu_hwids_add_smbios_override"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="246">Sets SMBIOS override values so you can emulate another system.

This function has no effect if called after fu_hwids_setup()</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="126"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="248">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="249">a key, e.g. %FU_HWIDS_KEY_PRODUCT_SKU</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="250">a new value, e.g. `ExampleModel`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_guid"
              c:identifier="fu_hwids_get_guid"
              version="0.9.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="310">Gets the GUID for a specific key.</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="135"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="318">a string, or %NULL for error.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="312">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="313">a key, e.g. `HardwareID-3` or %FU_HWIDS_KEY_PRODUCT_SKU</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_guids"
              c:identifier="fu_hwids_get_guids"
              version="0.9.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="77">Returns all the defined HWIDs</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="139"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="83">an array of GUIDs</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="79">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_keys" c:identifier="fu_hwids_get_keys" version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="93">Returns all the defined HWID keys.</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="123"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="99">All the known keys,
e.g. %FU_HWIDS_KEY_FAMILY</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="95">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_replace_keys"
              c:identifier="fu_hwids_get_replace_keys"
              version="0.9.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="156">Gets the replacement key for a well known value.</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="163">the replacement value, e.g. `Manufacturer&amp;ProductName`, or %NULL for error.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="158">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="159">a HardwareID key, e.g. `HardwareID-3`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_replace_values"
              c:identifier="fu_hwids_get_replace_values"
              version="0.9.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="266">Gets the replacement values for a HardwareID key or plain key.</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="131"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="274">a string, e.g. `LENOVO&amp;ThinkPad T440s`, or %NULL for error.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="268">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="269">a key, e.g. `HardwareID-3` or %FU_HWIDS_KEY_PRODUCT_SKU</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_value"
              c:identifier="fu_hwids_get_value"
              version="0.9.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="42">Gets the cached value for one specific key that is valid ASCII and suitable
for display.</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="50">the string, e.g. `1.2.3`, or %NULL if not found</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="44">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="45">a DMI ID, e.g. `BiosVersion`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_guid" c:identifier="fu_hwids_has_guid" version="0.9.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="60">Finds out if a hardware GUID exists.</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="67">%TRUE if the GUID exists</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="62">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="63">a GUID, e.g. `059eb22d-6dc7-59af-abd3-94bbe017f67c`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setup"
              c:identifier="fu_hwids_setup"
              version="0.9.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-hwids.c"
             line="377">Reads all the SMBIOS values from the hardware.</doc>
        <source-position filename="../libfwupdplugin/fu-hwids.h" line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-hwids.c"
               line="385">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="379">a #FuHwids</doc>
            <type name="Hwids" c:type="FuHwids*"/>
          </instance-parameter>
          <parameter name="smbios"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-hwids.c"
                 line="380">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="HwidsClass"
            c:type="FuHwidsClass"
            glib:is-gtype-struct-for="Hwids">
      <source-position filename="../libfwupdplugin/fu-hwids.h" line="15"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="I2cDevice"
           c:symbol-prefix="i2c_device"
           c:type="FuI2cDevice"
           parent="UdevDevice"
           glib:type-name="FuI2cDevice"
           glib:get-type="fu_i2c_device_get_type"
           glib:type-struct="I2cDeviceClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-i2c-device.c"
           line="21">A I²C device with an assigned bus number.

See also: #FuUdevDevice</doc>
      <source-position filename="../libfwupdplugin/fu-i2c-device.h" line="20"/>
      <method name="get_bus_number"
              c:identifier="fu_i2c_device_get_bus_number"
              version="1.6.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-i2c-device.c"
             line="158">Gets the I²C bus number.</doc>
        <source-position filename="../libfwupdplugin/fu-i2c-device.h"
                         line="22"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-i2c-device.c"
               line="164">integer</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-i2c-device.c"
                 line="160">a #FuI2cDevice</doc>
            <type name="I2cDevice" c:type="FuI2cDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read"
              c:identifier="fu_i2c_device_read"
              version="1.6.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-i2c-device.c"
             line="194">Read a single byte from the I²C device.</doc>
        <source-position filename="../libfwupdplugin/fu-i2c-device.h"
                         line="23"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-i2c-device.c"
               line="202">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-i2c-device.c"
                 line="196">a #FuI2cDevice</doc>
            <type name="I2cDevice" c:type="FuI2cDevice*"/>
          </instance-parameter>
          <parameter name="data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-i2c-device.c"
                 line="197">value</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write"
              c:identifier="fu_i2c_device_write"
              version="1.6.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-i2c-device.c"
             line="176">Write a single byte to the I²C device.</doc>
        <source-position filename="../libfwupdplugin/fu-i2c-device.h"
                         line="27"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-i2c-device.c"
               line="184">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-i2c-device.c"
                 line="178">a #FuI2cDevice</doc>
            <type name="I2cDevice" c:type="FuI2cDevice*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-i2c-device.c"
                 line="179">value</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <property name="bus-number" writable="1" transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="UdevDevice" c:type="FuUdevDevice"/>
      </field>
    </class>
    <record name="I2cDeviceClass"
            c:type="FuI2cDeviceClass"
            glib:is-gtype-struct-for="I2cDevice">
      <source-position filename="../libfwupdplugin/fu-i2c-device.h" line="20"/>
      <field name="parent_class">
        <type name="UdevDeviceClass" c:type="FuUdevDeviceClass"/>
      </field>
      <field name="__reserved">
        <array zero-terminated="0" fixed-size="31">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="IHEX_FIRMWARE_RECORD_TYPE_DATA"
              value="0"
              c:type="FU_IHEX_FIRMWARE_RECORD_TYPE_DATA">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="33"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="IHEX_FIRMWARE_RECORD_TYPE_EOF"
              value="1"
              c:type="FU_IHEX_FIRMWARE_RECORD_TYPE_EOF">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="34"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="IHEX_FIRMWARE_RECORD_TYPE_EXTENDED_LINEAR"
              value="4"
              c:type="FU_IHEX_FIRMWARE_RECORD_TYPE_EXTENDED_LINEAR">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="37"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="IHEX_FIRMWARE_RECORD_TYPE_EXTENDED_SEGMENT"
              value="2"
              c:type="FU_IHEX_FIRMWARE_RECORD_TYPE_EXTENDED_SEGMENT">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="35"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="IHEX_FIRMWARE_RECORD_TYPE_SIGNATURE"
              value="253"
              c:type="FU_IHEX_FIRMWARE_RECORD_TYPE_SIGNATURE">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="39"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="IHEX_FIRMWARE_RECORD_TYPE_START_LINEAR"
              value="5"
              c:type="FU_IHEX_FIRMWARE_RECORD_TYPE_START_LINEAR">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="38"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="IHEX_FIRMWARE_RECORD_TYPE_START_SEGMENT"
              value="3"
              c:type="FU_IHEX_FIRMWARE_RECORD_TYPE_START_SEGMENT">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="36"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="IOChannel"
           c:symbol-prefix="io_channel"
           c:type="FuIOChannel"
           parent="GObject.Object"
           glib:type-name="FuIOChannel"
           glib:get-type="fu_io_channel_get_type"
           glib:type-struct="IOChannelClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-io-channel.c"
           line="25">A bidirectional IO channel which can be read from and written to.</doc>
      <source-position filename="../libfwupdplugin/fu-io-channel.h" line="13"/>
      <constructor name="new_file"
                   c:identifier="fu_io_channel_new_file"
                   version="1.2.2"
                   throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="485">Creates a new object to write and read from.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="34"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="492">a #FuIOChannel</doc>
          <type name="IOChannel" c:type="FuIOChannel*"/>
        </return-value>
        <parameters>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="487">device file</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="unix_new"
                   c:identifier="fu_io_channel_unix_new"
                   version="1.2.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="466">Creates a new object to write and read from.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="33"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="472">a #FuIOChannel</doc>
          <type name="IOChannel" c:type="FuIOChannel*"/>
        </return-value>
        <parameters>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="468">file descriptor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="read_byte_array"
              c:identifier="fu_io_channel_read_byte_array"
              version="1.3.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="272">Reads bytes from the TTY, that will fail if exceeding @timeout_ms.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="282">a #GByteArray, or %NULL for error</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="274">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
          <parameter name="max_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="275">maximum size of the returned blob, or -1 for no limit</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="276">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="277">channel flags, e.g. %FU_IO_CHANNEL_FLAG_SINGLE_SHOT</doc>
            <type name="IOChannelFlags" c:type="FuIOChannelFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_bytes"
              c:identifier="fu_io_channel_read_bytes"
              version="1.2.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="241">Reads bytes from the TTY, that will fail if exceeding @timeout_ms.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="69"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="251">a #GBytes, or %NULL for error</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="243">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
          <parameter name="max_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="244">maximum size of the returned blob, or -1 for no limit</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="245">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="246">channel flags, e.g. %FU_IO_CHANNEL_FLAG_SINGLE_SHOT</doc>
            <type name="IOChannelFlags" c:type="FuIOChannelFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_raw"
              c:identifier="fu_io_channel_read_raw"
              version="1.2.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="402">Reads bytes from the TTY, that will fail if exceeding @timeout_ms.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="414">a #GBytes, or %NULL for error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="404">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
          <parameter name="buf"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="405">optional buffer</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="bufsz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="406">size of @buf</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="bytes_read"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="407">data written to @buf</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="408">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="409">channel flags, e.g. %FU_IO_CHANNEL_FLAG_SINGLE_SHOT</doc>
            <type name="IOChannelFlags" c:type="FuIOChannelFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="shutdown"
              c:identifier="fu_io_channel_shutdown"
              version="1.2.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="55">Closes the file descriptor for the device.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="62">%TRUE if all the FD was closed.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="57">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unix_get_fd"
              c:identifier="fu_io_channel_unix_get_fd"
              version="1.2.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="38">Gets the file descriptor for the device.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="38"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="44">fd, or -1 for not open.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="40">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_byte_array"
              c:identifier="fu_io_channel_write_byte_array"
              version="1.3.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="119">Writes bytes to the TTY, that will fail if exceeding @timeout_ms.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="129">%TRUE if all the bytes was written</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="121">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="122">buffer to write</doc>
            <array name="GLib.ByteArray" c:type="GByteArray*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="123">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="124">channel flags, e.g. %FU_IO_CHANNEL_FLAG_SINGLE_SHOT</doc>
            <type name="IOChannelFlags" c:type="FuIOChannelFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_bytes"
              c:identifier="fu_io_channel_write_bytes"
              version="1.2.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="93">Writes bytes to the TTY, that will fail if exceeding @timeout_ms.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="103">%TRUE if all the bytes was written</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="95">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="96">buffer to write</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="97">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="98">channel flags, e.g. %FU_IO_CHANNEL_FLAG_SINGLE_SHOT</doc>
            <type name="IOChannelFlags" c:type="FuIOChannelFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_raw"
              c:identifier="fu_io_channel_write_raw"
              version="1.2.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.c"
             line="143">Writes bytes to the TTY, that will fail if exceeding @timeout_ms.</doc>
        <source-position filename="../libfwupdplugin/fu-io-channel.h"
                         line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-io-channel.c"
               line="154">%TRUE if all the bytes was written</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="145">a #FuIOChannel</doc>
            <type name="IOChannel" c:type="FuIOChannel*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="146">buffer to write</doc>
            <type name="guint8" c:type="const guint8*"/>
          </parameter>
          <parameter name="datasz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="147">size of @data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="timeout_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="148">timeout in ms</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-io-channel.c"
                 line="149">channel flags, e.g. %FU_IO_CHANNEL_FLAG_SINGLE_SHOT</doc>
            <type name="IOChannelFlags" c:type="FuIOChannelFlags"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="IOChannelClass"
            c:type="FuIOChannelClass"
            glib:is-gtype-struct-for="IOChannel">
      <source-position filename="../libfwupdplugin/fu-io-channel.h" line="13"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <bitfield name="IOChannelFlags" c:type="FuIOChannelFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-io-channel.h"
           line="15">The flags used when reading data from the TTY.</doc>
      <source-position filename="../libfwupdplugin/fu-io-channel.h" line="31"/>
      <member name="none" value="0" c:identifier="FU_IO_CHANNEL_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.h"
             line="17">No flags are set</doc>
      </member>
      <member name="single_shot"
              value="1"
              c:identifier="FU_IO_CHANNEL_FLAG_SINGLE_SHOT">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.h"
             line="18">Only one read or write is expected</doc>
      </member>
      <member name="flush_input"
              value="2"
              c:identifier="FU_IO_CHANNEL_FLAG_FLUSH_INPUT">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.h"
             line="19">Flush pending input before writing</doc>
      </member>
      <member name="use_blocking_io"
              value="4"
              c:identifier="FU_IO_CHANNEL_FLAG_USE_BLOCKING_IO">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-io-channel.h"
             line="20">Block waiting for the TTY</doc>
      </member>
    </bitfield>
    <class name="IhexFirmware"
           c:symbol-prefix="ihex_firmware"
           c:type="FuIhexFirmware"
           parent="Firmware"
           glib:type-name="FuIhexFirmware"
           glib:get-type="fu_ihex_firmware_get_type"
           glib:type-struct="IhexFirmwareClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-ihex-firmware.c"
           line="17">A Intel hex (ihex) firmware image.

See also: [class@FuFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="17"/>
      <constructor name="new"
                   c:identifier="fu_ihex_firmware_new"
                   version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-ihex-firmware.c"
             line="522">Creates a new #FuFirmware of sub type Ihex</doc>
        <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                         line="41"/>
        <return-value transfer-ownership="full">
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
      </constructor>
      <method name="get_records"
              c:identifier="fu_ihex_firmware_get_records"
              version="1.3.4">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-ihex-firmware.c"
             line="34">Returns the raw lines from tokenization.

This might be useful if the plugin is expecting the hex file to be a list
of operations, rather than a simple linear image with filled holes.</doc>
        <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                         line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-ihex-firmware.c"
               line="43">records</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="IhexFirmwareRecord"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-ihex-firmware.c"
                 line="36">A #FuIhexFirmware</doc>
            <type name="IhexFirmware" c:type="FuIhexFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_padding_value"
              c:identifier="fu_ihex_firmware_set_padding_value"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-ihex-firmware.c"
             line="55">Set the padding value to fill incomplete address ranges.

The default value of zero can be changed to `0xff` if functions like
fu_common_bytes_is_empty() are going to be used on subsections of the data.</doc>
        <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                         line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-ihex-firmware.c"
                 line="57">A #FuIhexFirmware</doc>
            <type name="IhexFirmware" c:type="FuIhexFirmware*"/>
          </instance-parameter>
          <parameter name="padding_value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-ihex-firmware.c"
                 line="58">the byte used to pad the image</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Firmware" c:type="FuFirmware"/>
      </field>
    </class>
    <record name="IhexFirmwareClass"
            c:type="FuIhexFirmwareClass"
            glib:is-gtype-struct-for="IhexFirmware">
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="17"/>
      <field name="parent_class">
        <type name="FirmwareClass" c:type="FuFirmwareClass"/>
      </field>
    </record>
    <record name="IhexFirmwareRecord" c:type="FuIhexFirmwareRecord">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-ihex-firmware.h"
           line="19">A single Intel HEX record.</doc>
      <source-position filename="../libfwupdplugin/fu-ihex-firmware.h"
                       line="31"/>
      <field name="ln" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="buf" writable="1">
        <type name="GLib.String" c:type="GString*"/>
      </field>
      <field name="byte_cnt" writable="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="addr" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="record_type" writable="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="data" writable="1">
        <array name="GLib.ByteArray" c:type="GByteArray*">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
    </record>
    <callback name="OutputHandler" c:type="FuOutputHandler">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="139">The process spawn iteration callback.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="146"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="line" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.h"
               line="141">text data</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.h"
               line="142">user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="PathKind" c:type="FuPathKind">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.h"
           line="51">Path types to use when dynamically determining a path at runtime</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="93"/>
      <member name="cachedir_pkg"
              value="0"
              c:identifier="FU_PATH_KIND_CACHEDIR_PKG">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="53">The cache directory (IE /var/cache/fwupd)</doc>
      </member>
      <member name="datadir_pkg"
              value="1"
              c:identifier="FU_PATH_KIND_DATADIR_PKG">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="54">The non-volatile data store (IE /usr/share/fwupd)</doc>
      </member>
      <member name="efiappdir" value="2" c:identifier="FU_PATH_KIND_EFIAPPDIR">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="55">The location to store EFI apps before install (IE /usr/libexec/fwupd/efi)</doc>
      </member>
      <member name="localstatedir"
              value="3"
              c:identifier="FU_PATH_KIND_LOCALSTATEDIR">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="56">The local state directory (IE /var)</doc>
      </member>
      <member name="localstatedir_pkg"
              value="4"
              c:identifier="FU_PATH_KIND_LOCALSTATEDIR_PKG">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="57">The local state directory for the package (IE /var/lib/fwupd)</doc>
      </member>
      <member name="plugindir_pkg"
              value="5"
              c:identifier="FU_PATH_KIND_PLUGINDIR_PKG">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="58">The location to look for plugins for package (IE /usr/lib/[triplet]/fwupd-plugins-3)</doc>
      </member>
      <member name="sysconfdir"
              value="6"
              c:identifier="FU_PATH_KIND_SYSCONFDIR">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="59">The configuration location (IE /etc)</doc>
      </member>
      <member name="sysconfdir_pkg"
              value="7"
              c:identifier="FU_PATH_KIND_SYSCONFDIR_PKG">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="60">The package configuration location (IE /etc/fwupd)</doc>
      </member>
      <member name="sysfsdir_fw"
              value="8"
              c:identifier="FU_PATH_KIND_SYSFSDIR_FW">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="61">The sysfs firmware location (IE /sys/firmware)</doc>
      </member>
      <member name="sysfsdir_drivers"
              value="9"
              c:identifier="FU_PATH_KIND_SYSFSDIR_DRIVERS">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="62">The platform sysfs directory (IE /sys/bus/platform/drivers)</doc>
      </member>
      <member name="sysfsdir_tpm"
              value="10"
              c:identifier="FU_PATH_KIND_SYSFSDIR_TPM">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="63">The TPM sysfs directory (IE /sys/class/tpm)</doc>
      </member>
      <member name="procfs" value="11" c:identifier="FU_PATH_KIND_PROCFS">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="64">The procfs location (IE /proc)</doc>
      </member>
      <member name="polkit_actions"
              value="12"
              c:identifier="FU_PATH_KIND_POLKIT_ACTIONS">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="65">The directory for policy kit actions (IE /usr/share/polkit-1/actions/)</doc>
      </member>
      <member name="offline_trigger"
              value="13"
              c:identifier="FU_PATH_KIND_OFFLINE_TRIGGER">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="66">The file for the offline trigger (IE /system-update)</doc>
      </member>
      <member name="sysfsdir_security"
              value="14"
              c:identifier="FU_PATH_KIND_SYSFSDIR_SECURITY">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="67">The sysfs security location (IE /sys/kernel/security)</doc>
      </member>
      <member name="acpi_tables"
              value="15"
              c:identifier="FU_PATH_KIND_ACPI_TABLES">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="68">The location of the ACPI tables</doc>
      </member>
      <member name="lockdir" value="16" c:identifier="FU_PATH_KIND_LOCKDIR">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.h"
             line="69">The lock directory (IE /run/lock)</doc>
      </member>
    </enumeration>
    <class name="Plugin"
           c:symbol-prefix="plugin"
           c:type="FuPlugin"
           parent="Fwupd.Plugin"
           glib:type-name="FuPlugin"
           glib:get-type="fu_plugin_get_type"
           glib:type-struct="PluginClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-plugin.c"
           line="22">A plugin which is used by fwupd to enumerate and update devices.

See also: [class@FuDevice], [class@Fwupd.Plugin]</doc>
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="56"/>
      <constructor name="new" c:identifier="fu_plugin_new" version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2331">Creates a new #FuPlugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="13"/>
        <return-value transfer-ownership="full">
          <type name="Plugin" c:type="FuPlugin*"/>
        </return-value>
        <parameters>
          <parameter name="ctx"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2333">a #FuContext</doc>
            <type name="Context" c:type="FuContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="guess_name_from_fn"
                c:identifier="fu_plugin_guess_name_from_fn"
                version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="301">Tries to guess the name of the plugin from a filename</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="128"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="307">the guessed name of the plugin</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="303">filename to guess</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="check_supported">
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="51"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="device_added">
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="device_register"
                      invoker="device_register"
                      version="0.9.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="490">Registers the device with other plugins so they can set metadata.

Plugins do not have to call this manually as this is done automatically
when using fu_plugin_device_add(). They may wish to use this manually
if for instance the coldplug should be ignored based on the metadata
set from other plugins.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="492">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="493">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="device_removed">
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="percentage_changed">
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="47"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="percentage" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="rules_changed">
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="53"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="status_changed">
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="status" transfer-ownership="none">
            <type name="Fwupd.Status" c:type="FwupdStatus"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_device_gtype"
              c:identifier="fu_plugin_add_device_gtype"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1237">Adds the device #GType which is used when creating devices.

If this method is used then fu_plugin_backend_device_added() is not called, and
instead the object is created in the daemon for the plugin.

Plugins can use this method only in fu_plugin_init()</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="114"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1239">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device_gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1240">a #GType, e.g. `FU_TYPE_DEVICE`</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_firmware_gtype"
              c:identifier="fu_plugin_add_firmware_gtype"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1282">Adds a firmware #GType which is used when creating devices. If @id is not
specified then it is guessed using the #GType name.

Plugins can use this method only in fu_plugin_init()</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="116"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1284">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1285">an optional string describing the type, e.g. `ihex`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1286">a #GType e.g. `FU_TYPE_FOO_FIRMWARE`</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_report_metadata"
              c:identifier="fu_plugin_add_report_metadata"
              version="1.0.4">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2110">Sets any additional metadata to be included in the firmware report to aid
debugging problems.

Any data included here will be sent to the metadata server after user
confirmation.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="130"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2112">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2113">a string, e.g. `FwupdateVersion`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2114">a string, e.g. `10`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_rule"
              c:identifier="fu_plugin_add_rule"
              version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2040">If the plugin name is found, the rule will be used to sort the plugin list,
for example the plugin specified by @name will be ordered after this plugin
when %FU_PLUGIN_RULE_RUN_AFTER is used.

NOTE: The depsolver is iterative and may not solve overly-complicated rules;
If depsolving fails then fwupd will not start.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="127"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2042">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2043">a plugin rule, e.g. %FU_PLUGIN_RULE_CONFLICTS</doc>
            <type name="PluginRule" c:type="FuPluginRule"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2044">a plugin name, e.g. `upower`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="alloc_data"
              c:identifier="fu_plugin_alloc_data"
              version="0.8.0"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="277">Allocates the per-plugin allocated private data.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="103"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="284">a pointer to a structure, or %NULL for unset.</doc>
          <type name="PluginData" c:type="FuPluginData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="279">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="data_sz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="280">the size to allocate</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="cache_add"
              c:identifier="fu_plugin_cache_add"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="208">Adds an object to the per-plugin cache.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="123"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="210">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="211">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="dev"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="212">a #GObject, typically a #FuDevice</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="cache_lookup"
              c:identifier="fu_plugin_cache_lookup"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="184">Finds an object in the per-plugin cache.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="119"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="191">a #GObject, or %NULL for unfound.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="186">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="187">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="cache_remove"
              c:identifier="fu_plugin_cache_remove"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="236">Removes an object from the per-plugin cache.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="121"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="238">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="239">the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="device_add"
              c:identifier="fu_plugin_device_add"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="404">Asks the daemon to add a device to the exported list. If this device ID
has already been added by a different plugin then this request will be
ignored.

Plugins should use fu_plugin_device_add_delay() if they are not capable of
actually flashing an image to the hardware so that higher-priority plugins
can add the device themselves.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="108"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="406">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="407">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="device_register"
              c:identifier="fu_plugin_device_register"
              version="0.9.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="490">Registers the device with other plugins so they can set metadata.

Plugins do not have to call this manually as this is done automatically
when using fu_plugin_device_add(). They may wish to use this manually
if for instance the coldplug should be ignored based on the metadata
set from other plugins.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="112"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="492">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="493">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="device_remove"
              c:identifier="fu_plugin_device_remove"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="524">Asks the daemon to remove a device from the exported list.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="526">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="527">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_build_hash"
              c:identifier="fu_plugin_get_build_hash"
              version="1.2.4">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="166">Gets the build hash a plugin was generated with.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="23"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="172">a #gchar, or %NULL for unset.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="168">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_config_value"
              c:identifier="fu_plugin_get_config_value"
              version="1.0.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2154">Return the value of a key if it's been configured</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="133"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2156">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2157">a settings key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_config_value_boolean"
              c:identifier="fu_plugin_get_config_value_boolean"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2185">Return the boolean value of a key if it's been configured</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="2192">%TRUE if the value is `true` (case insensitive), %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2187">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2188">a settings key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_context"
              c:identifier="fu_plugin_get_context"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="612">Gets the context for a plugin.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="618">a #FuContext or %NULL if not set</doc>
          <type name="Context" c:type="FuContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="614">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data"
              c:identifier="fu_plugin_get_data"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="258">Gets the per-plugin allocated private data. This will return %NULL unless
fu_plugin_alloc_data() has been called by the plugin.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="102"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="265">a pointer to a structure, or %NULL for unset.</doc>
          <type name="PluginData" c:type="FuPluginData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="260">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_devices"
              c:identifier="fu_plugin_get_devices"
              version="1.5.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="470">Returns all devices added by the plugin using fu_plugin_device_add() and
not yet removed with fu_plugin_device_remove().</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="477">devices</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Device"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="472">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="fu_plugin_get_name"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="108">Gets the plugin name.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="101"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="114">a plugin name, or %NULL for unknown.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="110">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_order"
              c:identifier="fu_plugin_get_order"
              version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1972">Gets the plugin order, where higher numbers are run after lower
numbers.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="15"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1979">the integer value</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1974">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_priority"
              c:identifier="fu_plugin_get_priority"
              version="1.1.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2007">Gets the plugin priority, where higher numbers are better.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="18"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="2013">the integer value</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2009">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_report_metadata"
              c:identifier="fu_plugin_get_report_metadata"
              version="1.0.4">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2137">Returns the list of additional metadata to be added when filing a report.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="29"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="2143">the map of report metadata</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2139">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_rules"
              c:identifier="fu_plugin_get_rules"
              version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2065">Gets the plugin IDs that should be run after this plugin.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="24"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="2072">the list of plugin names, e.g. `['appstream']`</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2067">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2068">a plugin rule, e.g. %FU_PLUGIN_RULE_CONFLICTS</doc>
            <type name="PluginRule" c:type="FuPluginRule"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_custom_flag"
              c:identifier="fu_plugin_has_custom_flag"
              version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="551">Returns if a per-plugin HwId custom flag exists, typically added from a DMI quirk.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="558">%TRUE if the quirk entry exists</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="553">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="554">a custom text flag, specific to the plugin, e.g. `uefi-force-enable`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_rule"
              c:identifier="fu_plugin_has_rule"
              version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2084">Gets the plugin IDs that should be run after this plugin.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="26"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="2092">%TRUE if the name exists for the specific rule</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2086">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="rule" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2087">a plugin rule, e.g. %FU_PLUGIN_RULE_CONFLICTS</doc>
            <type name="PluginRule" c:type="FuPluginRule"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2088">a plugin name, e.g. `upower`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_open" c:identifier="fu_plugin_is_open" version="1.3.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="91">Determines if the plugin is opened</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="14"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="97">TRUE for opened, FALSE for not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="93">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="name_compare"
              c:identifier="fu_plugin_name_compare"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2205">Compares two plugins by their names.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="2212">1, 0 or -1 if @plugin1 is greater, equal, or less than @plugin2.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2207">first #FuPlugin to compare.</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="plugin2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2208">second #FuPlugin to compare.</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open"
              c:identifier="fu_plugin_open"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="324">Opens the plugin module</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="30"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="332">TRUE for success, FALSE for fail</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="326">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="327">the shared object filename to open</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="order_compare"
              c:identifier="fu_plugin_order_compare"
              version="1.0.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2222">Compares two plugins by their depsolved order.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="2229">1, 0 or -1 if @plugin1 is greater, equal, or less than @plugin2.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="plugin1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2224">first #FuPlugin to compare.</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="plugin2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2225">second #FuPlugin to compare.</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_activate"
              c:identifier="fu_plugin_runner_activate"
              version="1.2.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1701">Call into the plugin's activate routine</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1709">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1703">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1704">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_add_security_attrs"
              c:identifier="fu_plugin_runner_add_security_attrs"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1209">Runs the `add_security_attrs()` routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="120"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1211">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1212">a security attribute</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_backend_device_added"
              c:identifier="fu_plugin_runner_backend_device_added"
              version="1.5.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1373">Call the backend_device_added routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1381">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1375">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1376">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_backend_device_changed"
              c:identifier="fu_plugin_runner_backend_device_changed"
              version="1.5.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1435">Call the backend_device_changed routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1443">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1437">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1438">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_clear_results"
              c:identifier="fu_plugin_runner_clear_results"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1866">Call into the plugin's clear results routine</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="112"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1874">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1868">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1869">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_coldplug"
              c:identifier="fu_plugin_runner_coldplug"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="908">Runs the coldplug routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="915">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="910">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="runner_coldplug_cleanup"
              c:identifier="fu_plugin_runner_coldplug_cleanup"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1007">Runs the coldplug_cleanup routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="43"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1014">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1009">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="runner_coldplug_prepare"
              c:identifier="fu_plugin_runner_coldplug_prepare"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="959">Runs the coldplug_prepare routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="966">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="961">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="runner_composite_cleanup"
              c:identifier="fu_plugin_runner_composite_cleanup"
              version="1.0.9"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1075">Runs the composite_cleanup routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1083">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1077">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="devices" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1078">an array of devices</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="Device"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="runner_composite_prepare"
              c:identifier="fu_plugin_runner_composite_prepare"
              version="1.0.9"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1055">Runs the composite_prepare routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1063">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1057">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="devices" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1058">an array of devices</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="Device"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="runner_device_added"
              c:identifier="fu_plugin_runner_device_added"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1488">Call the device_added routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1490">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1491">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_device_created"
              c:identifier="fu_plugin_runner_device_created"
              version="1.4.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1567">Call the device_created routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1575">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1569">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1570">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_device_register"
              c:identifier="fu_plugin_runner_device_register"
              version="0.9.7">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1538">Call the device_registered routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1540">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1541">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_device_removed"
              c:identifier="fu_plugin_runner_device_removed"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1517">Call the device_removed routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1519">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1520">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_get_results"
              c:identifier="fu_plugin_runner_get_results"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1919">Call into the plugin's get results routine</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1927">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1921">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1922">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_startup"
              c:identifier="fu_plugin_runner_startup"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="736">Runs the startup routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="34"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="743">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="738">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="runner_unlock"
              c:identifier="fu_plugin_runner_unlock"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1746">Call into the plugin's unlock routine</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1754">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1748">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1749">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_update"
              c:identifier="fu_plugin_runner_update"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1791">Call into the plugin's update routine</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1801">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1793">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1794">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
          <parameter name="blob_fw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1795">a data blob</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1796">install flags</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_update_attach"
              c:identifier="fu_plugin_runner_update_attach"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1139">Runs the update_attach routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1147">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1141">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1142">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_update_cleanup"
              c:identifier="fu_plugin_runner_update_cleanup"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1117">Runs the update_cleanup routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1126">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1119">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1120">install flags</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1121">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_update_detach"
              c:identifier="fu_plugin_runner_update_detach"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1160">Runs the update_detach routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1168">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1162">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1163">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_update_prepare"
              c:identifier="fu_plugin_runner_update_prepare"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1095">Runs the update_prepare routine for the plugin</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1104">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1097">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1098">install flags</doc>
            <type name="Fwupd.InstallFlags" c:type="FwupdInstallFlags"/>
          </parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1099">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_update_reload"
              c:identifier="fu_plugin_runner_update_reload"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1181">Runs reload routine for a device</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1189">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1183">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1184">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="runner_verify"
              c:identifier="fu_plugin_runner_verify"
              version="0.8.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1603">Call into the plugin's verify routine</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-plugin.c"
               line="1612">#TRUE for success, #FALSE for failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1605">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1606">a device</doc>
            <type name="Device" c:type="FuDevice*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1607">verify flags</doc>
            <type name="PluginVerifyFlags" c:type="FuPluginVerifyFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_build_hash"
              c:identifier="fu_plugin_set_build_hash"
              version="1.2.4">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="141">Sets the plugin build hash, typically a SHA256 checksum. All plugins must
set the correct checksum to avoid the daemon being marked as tainted.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin.h" line="106"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="143">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="build_hash" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="144">a checksum</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name"
              c:identifier="fu_plugin_set_name"
              version="0.8.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="125">Sets the plugin name.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="21"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="127">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="128">a string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_order"
              c:identifier="fu_plugin_set_order"
              version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="1990">Sets the plugin order, where higher numbers are run after lower
numbers.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="16"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1992">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="order" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="1993">an integer value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_priority"
              c:identifier="fu_plugin_set_priority"
              version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.c"
             line="2024">Sets the plugin priority, where higher numbers are better.</doc>
        <source-position filename="../libfwupdplugin/fu-plugin-private.h"
                         line="19"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2026">a #FuPlugin</doc>
            <type name="Plugin" c:type="FuPlugin*"/>
          </instance-parameter>
          <parameter name="priority" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-plugin.c"
                 line="2027">an integer value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Fwupd.Plugin" c:type="FwupdPlugin"/>
      </field>
      <glib:signal name="check-supported" when="last">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-added" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Device"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-register" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Device"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-removed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Device"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="rules-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="PluginClass"
            c:type="FuPluginClass"
            glib:is-gtype-struct-for="Plugin">
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="56"/>
      <field name="parent_class">
        <type name="Fwupd.PluginClass" c:type="FwupdPluginClass"/>
      </field>
      <field name="device_added">
        <callback name="device_added">
          <source-position filename="../libfwupdplugin/fu-plugin.h" line="41"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="FuPlugin*"/>
            </parameter>
            <parameter name="device" transfer-ownership="none">
              <type name="Device" c:type="FuDevice*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="device_removed">
        <callback name="device_removed">
          <source-position filename="../libfwupdplugin/fu-plugin.h" line="43"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="FuPlugin*"/>
            </parameter>
            <parameter name="device" transfer-ownership="none">
              <type name="Device" c:type="FuDevice*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="status_changed">
        <callback name="status_changed">
          <source-position filename="../libfwupdplugin/fu-plugin.h" line="45"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="FuPlugin*"/>
            </parameter>
            <parameter name="status" transfer-ownership="none">
              <type name="Fwupd.Status" c:type="FwupdStatus"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="percentage_changed">
        <callback name="percentage_changed">
          <source-position filename="../libfwupdplugin/fu-plugin.h" line="47"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="FuPlugin*"/>
            </parameter>
            <parameter name="percentage" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="device_register">
        <callback name="device_register">
          <source-position filename="../libfwupdplugin/fu-plugin.h" line="49"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-plugin.c"
                   line="492">a #FuPlugin</doc>
              <type name="Plugin" c:type="FuPlugin*"/>
            </parameter>
            <parameter name="device" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="../libfwupdplugin/fu-plugin.c"
                   line="493">a device</doc>
              <type name="Device" c:type="FuDevice*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="check_supported">
        <callback name="check_supported">
          <source-position filename="../libfwupdplugin/fu-plugin.h" line="51"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="FuPlugin*"/>
            </parameter>
            <parameter name="guid" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="rules_changed">
        <callback name="rules_changed">
          <source-position filename="../libfwupdplugin/fu-plugin.h" line="53"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Plugin" c:type="FuPlugin*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="20">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="PluginData" c:type="FuPluginData" disguised="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-plugin.h"
           line="93">The plugin-allocated private data.</doc>
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="98"/>
    </record>
    <enumeration name="PluginRule" c:type="FuPluginRule">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-plugin.h"
           line="70">The rules used for ordering plugins.
Plugins are expected to add rules in fu_plugin_initialize().</doc>
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="91"/>
      <member name="conflicts"
              value="0"
              c:identifier="FU_PLUGIN_RULE_CONFLICTS">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.h"
             line="72">The plugin conflicts with another</doc>
      </member>
      <member name="run_after"
              value="1"
              c:identifier="FU_PLUGIN_RULE_RUN_AFTER">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.h"
             line="73">Order the plugin after another</doc>
      </member>
      <member name="run_before"
              value="2"
              c:identifier="FU_PLUGIN_RULE_RUN_BEFORE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.h"
             line="74">Order the plugin before another</doc>
      </member>
      <member name="better_than"
              value="3"
              c:identifier="FU_PLUGIN_RULE_BETTER_THAN">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.h"
             line="75">Is better than another plugin</doc>
      </member>
      <member name="inhibits_idle"
              value="4"
              c:identifier="FU_PLUGIN_RULE_INHIBITS_IDLE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.h"
             line="76">The plugin inhibits the idle shutdown</doc>
      </member>
      <member name="metadata_source"
              value="5"
              c:identifier="FU_PLUGIN_RULE_METADATA_SOURCE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.h"
             line="77">Uses another plugin as a source of report metadata</doc>
      </member>
    </enumeration>
    <enumeration name="PluginVerifyFlags" c:type="FuPluginVerifyFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-plugin.h"
           line="58">Flags used when verifying, currently unused.</doc>
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="68"/>
      <member name="none" value="0" c:identifier="FU_PLUGIN_VERIFY_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-plugin.h"
             line="60">No flags set</doc>
      </member>
    </enumeration>
    <constant name="QUIRKS_BATTERY_THRESHOLD"
              value="BatteryThreshold"
              c:type="FU_QUIRKS_BATTERY_THRESHOLD"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="254">The quirk key for the battery theshold in percent.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="261"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_BRANCH"
              value="Branch"
              c:type="FU_QUIRKS_BRANCH"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="102">The quirk key for the firmware branch.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="109"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_CHILDREN"
              value="Children"
              c:type="FU_QUIRKS_CHILDREN"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="142">The quirk key for the children. This should contain the custom GType.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="149"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_COUNTERPART_GUID"
              value="CounterpartGuid"
              c:type="FU_QUIRKS_COUNTERPART_GUID"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="118">The quirk key for the counterpart GUID.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="125"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_FIRMWARE_SIZE"
              value="FirmwareSize"
              c:type="FU_QUIRKS_FIRMWARE_SIZE"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="190">The quirk key for the exact required firmware size in bytes.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="197"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_FIRMWARE_SIZE_MAX"
              value="FirmwareSizeMax"
              c:type="FU_QUIRKS_FIRMWARE_SIZE_MAX"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="182">The quirk key for the maximum firmware size in bytes.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="189"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_FIRMWARE_SIZE_MIN"
              value="FirmwareSizeMin"
              c:type="FU_QUIRKS_FIRMWARE_SIZE_MIN"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="174">The quirk key for the minimum firmware size in bytes.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="181"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_FLAGS"
              value="Flags"
              c:type="FU_QUIRKS_FLAGS"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="70">The quirk key for the public flags.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="77"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_GTYPE"
              value="GType"
              c:type="FU_QUIRKS_GTYPE"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="214">The quirk key for the custom GType.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="221"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_GUID"
              value="Guid"
              c:type="FU_QUIRKS_GUID"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="110">The quirk key for the GUID.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="117"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_ICON"
              value="Icon"
              c:type="FU_QUIRKS_ICON"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="86">The quirk key for the icon.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="93"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_INSTALL_DURATION"
              value="InstallDuration"
              c:type="FU_QUIRKS_INSTALL_DURATION"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="198">The quirk key for the install duration in seconds.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="205"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_NAME"
              value="Name"
              c:type="FU_QUIRKS_NAME"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="94">The quirk key for the name.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="101"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_PARENT_GUID"
              value="ParentGuid"
              c:type="FU_QUIRKS_PARENT_GUID"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="126">The quirk key for the parent GUID.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="133"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_PLUGIN"
              value="Plugin"
              c:type="FU_QUIRKS_PLUGIN"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="62">The quirk key for the plugin name.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="69"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_PRIORITY"
              value="Priority"
              c:type="FU_QUIRKS_PRIORITY"
              version="1.4.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="246">The quirk key for the device priority.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="253"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_PROTOCOL"
              value="Protocol"
              c:type="FU_QUIRKS_PROTOCOL"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="222">The quirk key for the protocol, e.g. `org.usb.dfu`.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="229"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_PROXY_GUID"
              value="ProxyGuid"
              c:type="FU_QUIRKS_PROXY_GUID"
              version="1.4.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="134">The quirk key for the proxy GUID.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="141"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_REMOVE_DELAY"
              value="RemoveDelay"
              c:type="FU_QUIRKS_REMOVE_DELAY"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="262">The quirk key for the device removal delay in seconds.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="269"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_SUMMARY"
              value="Summary"
              c:type="FU_QUIRKS_SUMMARY"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="78">The quirk key for the summary.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="85"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_UPDATE_IMAGE"
              value="UpdateImage"
              c:type="FU_QUIRKS_UPDATE_IMAGE"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="238">The quirk key for the update image shown before the update is performed.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="245"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_UPDATE_MESSAGE"
              value="UpdateMessage"
              c:type="FU_QUIRKS_UPDATE_MESSAGE"
              version="1.4.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="230">The quirk key for the update message shown after the transaction has completed.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="237"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_VENDOR"
              value="Vendor"
              c:type="FU_QUIRKS_VENDOR"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="158">The quirk key for the vendor name.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="165"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_VENDOR_ID"
              value="VendorId"
              c:type="FU_QUIRKS_VENDOR_ID"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="166">The quirk key for the vendor ID.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="173"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_VERSION"
              value="Version"
              c:type="FU_QUIRKS_VERSION"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="150">The quirk key for the version.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="157"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="QUIRKS_VERSION_FORMAT"
              value="VersionFormat"
              c:type="FU_QUIRKS_VERSION_FORMAT"
              version="1.3.7">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="206">The quirk key for the version format, e.g. `quad`.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="213"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="Quirks"
           c:symbol-prefix="quirks"
           c:type="FuQuirks"
           parent="GObject.Object"
           glib:type-name="FuQuirks"
           glib:get-type="fu_quirks_get_type"
           glib:type-struct="QuirksClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.c"
           line="24">Quirks can be used to modify device behavior.
When fwupd is installed in long-term support distros it's very hard to
backport new versions as new hardware is released.

There are several reasons why we can't just include the mapping and quirk
information in the AppStream metadata:

* The extra data is hugely specific to the installed fwupd plugin versions
* The device-id is per-device, and the mapping is usually per-plugin
* Often the information is needed before the FuDevice is created
* There are security implications in allowing plugins to handle new devices

The idea with quirks is that the end user can drop an additional (or replace
an existing) file in a .d director with a simple format and the hardware will
magically start working. This assumes no new quirks are required, as this would
obviously need code changes, but allows us to get most existing devices working
in an easy way without the user compiling anything.

See also: [class@FuDevice], [class@FuPlugin]</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="13"/>
      <constructor name="new"
                   c:identifier="fu_quirks_new"
                   version="1.0.1"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.c"
             line="540">Creates a new quirks object.</doc>
        <source-position filename="../libfwupdplugin/fu-quirks.h" line="47"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.c"
               line="545">a new #FuQuirks</doc>
          <type name="Quirks" c:type="FuQuirks*"/>
        </return-value>
      </constructor>
      <method name="add_possible_key"
              c:identifier="fu_quirks_add_possible_key"
              version="1.5.8">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.c"
             line="469">Adds a possible quirk key. If added by a plugin it should be namespaced
using the plugin name, where possible.</doc>
        <source-position filename="../libfwupdplugin/fu-quirks.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="471">a #FuQuirks</doc>
            <type name="Quirks" c:type="FuQuirks*"/>
          </instance-parameter>
          <parameter name="possible_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="472">a key name, e.g. `Flags`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load"
              c:identifier="fu_quirks_load"
              version="1.0.1"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.c"
             line="448">Loads the various files that define the hardware quirks used in plugins.</doc>
        <source-position filename="../libfwupdplugin/fu-quirks.h" line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.c"
               line="456">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="450">a #FuQuirks</doc>
            <type name="Quirks" c:type="FuQuirks*"/>
          </instance-parameter>
          <parameter name="load_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="451">load flags</doc>
            <type name="QuirksLoadFlags" c:type="FuQuirksLoadFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_by_id"
              c:identifier="fu_quirks_lookup_by_id"
              version="1.0.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.c"
             line="294">Looks up an entry in the hardware database using a string value.</doc>
        <source-position filename="../libfwupdplugin/fu-quirks.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.c"
               line="302">values from the database, or %NULL if not found</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="296">a #FuQuirks</doc>
            <type name="Quirks" c:type="FuQuirks*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="297">a string group, e.g. `DeviceInstanceId=USB\VID_1235&amp;PID_AB11`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="298">an ID to match the entry, e.g. `Name`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_by_id_iter"
              c:identifier="fu_quirks_lookup_by_id_iter"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.c"
             line="369">Looks up all entries in the hardware database using a GUID value.</doc>
        <source-position filename="../libfwupdplugin/fu-quirks.h" line="55"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.c"
               line="378">%TRUE if the ID was found, and @iter was called</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="371">a #FuQuirks</doc>
            <type name="Quirks" c:type="FuQuirks*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="372">string of group to lookup</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="iter_cb"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="373">a function to call for each result</doc>
            <type name="QuirksIter" c:type="FuQuirksIter"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-quirks.c"
                 line="374">user data passed to @iter_cb</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="QuirksClass"
            c:type="FuQuirksClass"
            glib:is-gtype-struct-for="Quirks">
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="13"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <callback name="QuirksIter" c:type="FuQuirksIter">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="33">The quirks iteration callback.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="42"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.h"
               line="35">a #FuQuirks</doc>
          <type name="Quirks" c:type="FuQuirks*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.h"
               line="36">a key</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.h"
               line="37">a value</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-quirks.h"
               line="38">user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <bitfield name="QuirksLoadFlags" c:type="FuQuirksLoadFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-quirks.h"
           line="15">The flags to use when loading quirks.</doc>
      <source-position filename="../libfwupdplugin/fu-quirks.h" line="31"/>
      <member name="none" value="0" c:identifier="FU_QUIRKS_LOAD_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.h"
             line="17">No flags set</doc>
      </member>
      <member name="readonly_fs"
              value="1"
              c:identifier="FU_QUIRKS_LOAD_FLAG_READONLY_FS">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.h"
             line="18">Ignore readonly filesystem errors</doc>
      </member>
      <member name="no_cache"
              value="2"
              c:identifier="FU_QUIRKS_LOAD_FLAG_NO_CACHE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.h"
             line="19">Do not save to a persistent cache</doc>
      </member>
      <member name="no_verify"
              value="4"
              c:identifier="FU_QUIRKS_LOAD_FLAG_NO_VERIFY">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-quirks.h"
             line="20">Do not check the key files for errors</doc>
      </member>
    </bitfield>
    <constant name="SMBIOS_STRUCTURE_TYPE_BASEBOARD"
              value="2"
              c:type="FU_SMBIOS_STRUCTURE_TYPE_BASEBOARD"
              version="1.5.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-smbios.h"
           line="35">The SMBIOS structure type for the baseboard (motherboard).</doc>
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="42"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SMBIOS_STRUCTURE_TYPE_BIOS"
              value="0"
              c:type="FU_SMBIOS_STRUCTURE_TYPE_BIOS"
              version="1.5.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-smbios.h"
           line="19">The SMBIOS structure type for the BIOS.</doc>
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="26"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SMBIOS_STRUCTURE_TYPE_CHASSIS"
              value="3"
              c:type="FU_SMBIOS_STRUCTURE_TYPE_CHASSIS"
              version="1.5.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-smbios.h"
           line="43">The SMBIOS structure type for the chassis.</doc>
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="50"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SMBIOS_STRUCTURE_TYPE_LAST"
              value="4"
              c:type="FU_SMBIOS_STRUCTURE_TYPE_LAST"
              version="1.5.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-smbios.h"
           line="51">The last possible SMBIOS structure type.</doc>
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="58"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SMBIOS_STRUCTURE_TYPE_SYSTEM"
              value="1"
              c:type="FU_SMBIOS_STRUCTURE_TYPE_SYSTEM"
              version="1.5.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-smbios.h"
           line="27">The SMBIOS structure type for the system as a whole.</doc>
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="34"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="SecurityAttrs"
           c:symbol-prefix="security_attrs"
           c:type="FuSecurityAttrs"
           parent="GObject.Object"
           glib:type-name="FuSecurityAttrs"
           glib:get-type="fu_security_attrs_get_type"
           glib:type-struct="SecurityAttrsClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-security-attrs.c"
           line="17">A set of Host Security ID attributes that represents the system state.</doc>
      <source-position filename="../libfwupdplugin/fu-security-attrs.h"
                       line="14"/>
      <constructor name="new"
                   c:identifier="fu_security_attrs_new"
                   version="1.5.0">
        <source-position filename="../libfwupdplugin/fu-security-attrs-private.h"
                         line="25"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-security-attrs.c"
               line="332">a security attribute</doc>
          <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
        </return-value>
      </constructor>
      <method name="append"
              c:identifier="fu_security_attrs_append"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs.c"
             line="54">Adds a #FwupdSecurityAttr to the array.</doc>
        <source-position filename="../libfwupdplugin/fu-security-attrs.h"
                         line="16"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="56">a #FuSecurityAttrs</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="57">a #FwupdSecurityAttr</doc>
            <type name="Fwupd.SecurityAttr" c:type="FwupdSecurityAttr*"/>
          </parameter>
        </parameters>
      </method>
      <method name="calculate_hsi"
              c:identifier="fu_security_attrs_calculate_hsi"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs.c"
             line="151">Calculates the HSI string from the appended attributes.</doc>
        <source-position filename="../libfwupdplugin/fu-security-attrs-private.h"
                         line="26"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-security-attrs.c"
               line="158">a string or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="153">a #FuSecurityAttrs</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="154">HSI attribute flags</doc>
            <type name="SecurityAttrsFlags" c:type="FuSecurityAttrsFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="depsolve"
              c:identifier="fu_security_attrs_depsolve"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs.c"
             line="268">Marks any attributes with %FWUPD_SECURITY_ATTR_FLAG_OBSOLETED that have been
defined as obsoleted by other attributes.

It is only required to call this function once, and should be done when all
attributes have been added. This will also sort the attrs.</doc>
        <source-position filename="../libfwupdplugin/fu-security-attrs-private.h"
                         line="28"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="270">a #FuSecurityAttrs</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_all"
              c:identifier="fu_security_attrs_get_all"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs.c"
             line="119">Gets all the attributes in the object.</doc>
        <source-position filename="../libfwupdplugin/fu-security-attrs-private.h"
                         line="30"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-security-attrs.c"
               line="125">attributes</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Fwupd.SecurityAttr"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="121">a #FuSecurityAttrs</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_all"
              c:identifier="fu_security_attrs_remove_all"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs.c"
             line="136">Removes all the attributes in the object.</doc>
        <source-position filename="../libfwupdplugin/fu-security-attrs.h"
                         line="18"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="138">a #FuSecurityAttrs</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="to_variant"
              c:identifier="fu_security_attrs_to_variant"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs.c"
             line="92">Serializes the #FwupdSecurityAttr objects.</doc>
        <source-position filename="../libfwupdplugin/fu-security-attrs-private.h"
                         line="29"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-security-attrs.c"
               line="98">a #GVariant or %NULL</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-security-attrs.c"
                 line="94">a #FuSecurityAttrs</doc>
            <type name="SecurityAttrs" c:type="FuSecurityAttrs*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="SecurityAttrsClass"
            c:type="FuSecurityAttrsClass"
            glib:is-gtype-struct-for="SecurityAttrs">
      <source-position filename="../libfwupdplugin/fu-security-attrs.h"
                       line="14"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <bitfield name="SecurityAttrsFlags" c:type="FuSecurityAttrsFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-security-attrs-private.h"
           line="9">The flags to use when calculating an HSI version.</doc>
      <source-position filename="../libfwupdplugin/fu-security-attrs-private.h"
                       line="21"/>
      <member name="none" value="0" c:identifier="FU_SECURITY_ATTRS_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs-private.h"
             line="11">No flags set</doc>
      </member>
      <member name="add_version"
              value="1"
              c:identifier="FU_SECURITY_ATTRS_FLAG_ADD_VERSION">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-security-attrs-private.h"
             line="12">Add the daemon version to the HSI string</doc>
      </member>
    </bitfield>
    <class name="Smbios"
           c:symbol-prefix="smbios"
           c:type="FuSmbios"
           parent="Firmware"
           glib:type-name="FuSmbios"
           glib:get-type="fu_smbios_get_type"
           glib:type-struct="SmbiosClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-smbios.c"
           line="19">Enumerate the SMBIOS data on the system, either using DMI or Device Tree.

See also: [class@FuHwids]</doc>
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="15"/>
      <constructor name="new" c:identifier="fu_smbios_new" version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="817">Creates a new object to parse SMBIOS data.</doc>
        <source-position filename="../libfwupdplugin/fu-smbios.h" line="17"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="822">a #FuSmbios</doc>
          <type name="Smbios" c:type="FuSmbios*"/>
        </return-value>
      </constructor>
      <method name="get_data"
              c:identifier="fu_smbios_get_data"
              version="1.0.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="643">Reads a SMBIOS data blob, which includes the SMBIOS section header.</doc>
        <source-position filename="../libfwupdplugin/fu-smbios.h" line="115"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="651">a #GBytes, or %NULL if invalid or not found</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="645">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="646">a structure type, e.g. %FU_SMBIOS_STRUCTURE_TYPE_BIOS</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_integer"
              c:identifier="fu_smbios_get_integer"
              version="1.5.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="674">Reads an integer value from the SMBIOS string table of a specific structure.

The @type and @offset can be referenced from the DMTF SMBIOS specification:
https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf</doc>
        <source-position filename="../libfwupdplugin/fu-smbios.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="686">an integer, or %G_MAXUINT if invalid or not found</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="676">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="677">a structure type, e.g. %FU_SMBIOS_STRUCTURE_TYPE_BIOS</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="678">a structure offset</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_string"
              c:identifier="fu_smbios_get_string"
              version="1.0.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="722">Reads a string from the SMBIOS string table of a specific structure.

The @type and @offset can be referenced from the DMTF SMBIOS specification:
https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf</doc>
        <source-position filename="../libfwupdplugin/fu-smbios.h" line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="734">a string, or %NULL if invalid or not found</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="724">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="725">a structure type, e.g. %FU_SMBIOS_STRUCTURE_TYPE_BIOS</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="726">a structure offset</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="setup"
              c:identifier="fu_smbios_setup"
              version="1.0.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="545">Reads all the SMBIOS values from the hardware.</doc>
        <source-position filename="../libfwupdplugin/fu-smbios-private.h"
                         line="13"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="552">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="547">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="setup_from_file"
              c:identifier="fu_smbios_setup_from_file"
              version="1.0.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="310">Reads all the SMBIOS values from a DMI blob.</doc>
        <source-position filename="../libfwupdplugin/fu-smbios-private.h"
                         line="20"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="318">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="312">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="313">a filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setup_from_path"
              c:identifier="fu_smbios_setup_from_path"
              version="1.0.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="517">Reads all the SMBIOS values from a specific path.</doc>
        <source-position filename="../libfwupdplugin/fu-smbios-private.h"
                         line="16"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="525">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="519">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="520">a path, e.g. `/sys/firmware/dmi/tables`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="fu_smbios_to_string"
              version="1.0.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-smbios.c"
             line="615">Dumps the parsed SMBIOS data to a string.</doc>
        <source-position filename="../libfwupdplugin/fu-smbios.h" line="105"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-smbios.c"
               line="621">a UTF-8 string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-smbios.c"
                 line="617">a #FuSmbios</doc>
            <type name="Smbios" c:type="FuSmbios*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <enumeration name="SmbiosChassisKind" c:type="FuSmbiosChassisKind">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-smbios.h"
           line="60">The system chassis kind.</doc>
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="103"/>
      <member name="other"
              value="1"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_OTHER">
      </member>
      <member name="unknown"
              value="2"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_UNKNOWN">
      </member>
      <member name="desktop"
              value="3"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_DESKTOP">
      </member>
      <member name="low_profile_desktop"
              value="4"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_LOW_PROFILE_DESKTOP">
      </member>
      <member name="pizza_box"
              value="5"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_PIZZA_BOX">
      </member>
      <member name="mini_tower"
              value="6"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_MINI_TOWER">
      </member>
      <member name="tower"
              value="7"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_TOWER">
      </member>
      <member name="portable"
              value="8"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_PORTABLE">
      </member>
      <member name="laptop"
              value="9"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_LAPTOP">
      </member>
      <member name="notebook"
              value="10"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_NOTEBOOK">
      </member>
      <member name="hand_held"
              value="11"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_HAND_HELD">
      </member>
      <member name="docking_station"
              value="12"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_DOCKING_STATION">
      </member>
      <member name="all_in_one"
              value="13"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_ALL_IN_ONE">
      </member>
      <member name="sub_notebook"
              value="14"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_SUB_NOTEBOOK">
      </member>
      <member name="space_saving"
              value="15"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_SPACE_SAVING">
      </member>
      <member name="lunch_box"
              value="16"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_LUNCH_BOX">
      </member>
      <member name="main_server"
              value="17"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_MAIN_SERVER">
      </member>
      <member name="expansion"
              value="18"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_EXPANSION">
      </member>
      <member name="subchassis"
              value="19"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_SUBCHASSIS">
      </member>
      <member name="bus_expansion"
              value="20"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_BUS_EXPANSION">
      </member>
      <member name="peripheral"
              value="21"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_PERIPHERAL">
      </member>
      <member name="raid"
              value="22"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_RAID">
      </member>
      <member name="rack_mount"
              value="23"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_RACK_MOUNT">
      </member>
      <member name="sealed_case_pc"
              value="24"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_SEALED_CASE_PC">
      </member>
      <member name="multi_system"
              value="25"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_MULTI_SYSTEM">
      </member>
      <member name="compact_pci"
              value="26"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_COMPACT_PCI">
      </member>
      <member name="advanced_tca"
              value="27"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_ADVANCED_TCA">
      </member>
      <member name="blade"
              value="28"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_BLADE">
      </member>
      <member name="tablet"
              value="30"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_TABLET">
      </member>
      <member name="convertible"
              value="31"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_CONVERTIBLE">
      </member>
      <member name="detachable"
              value="32"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_DETACHABLE">
      </member>
      <member name="iot_gateway"
              value="33"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_IOT_GATEWAY">
      </member>
      <member name="embedded_pc"
              value="34"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_EMBEDDED_PC">
      </member>
      <member name="mini_pc"
              value="35"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_MINI_PC">
      </member>
      <member name="stick_pc"
              value="36"
              c:identifier="FU_SMBIOS_CHASSIS_KIND_STICK_PC">
      </member>
    </enumeration>
    <record name="SmbiosClass"
            c:type="FuSmbiosClass"
            glib:is-gtype-struct-for="Smbios">
      <source-position filename="../libfwupdplugin/fu-smbios.h" line="15"/>
      <field name="parent_class">
        <type name="FirmwareClass" c:type="FuFirmwareClass"/>
      </field>
    </record>
    <class name="SrecFirmware"
           c:symbol-prefix="srec_firmware"
           c:type="FuSrecFirmware"
           parent="Firmware"
           glib:type-name="FuSrecFirmware"
           glib:get-type="fu_srec_firmware_get_type"
           glib:type-struct="SrecFirmwareClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-srec-firmware.c"
           line="17">A SREC firmware image.

See also: [class@FuFirmware]</doc>
      <source-position filename="../libfwupdplugin/fu-srec-firmware.h"
                       line="18"/>
      <constructor name="new"
                   c:identifier="fu_srec_firmware_new"
                   version="1.3.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.c"
             line="561">Creates a new #FuFirmware of type SREC</doc>
        <source-position filename="../libfwupdplugin/fu-srec-firmware.h"
                         line="62"/>
        <return-value transfer-ownership="full">
          <type name="Firmware" c:type="FuFirmware*"/>
        </return-value>
      </constructor>
      <method name="get_records"
              c:identifier="fu_srec_firmware_get_records"
              version="1.3.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.c"
             line="33">Returns the raw records from SREC tokenization.

This might be useful if the plugin is expecting the SREC file to be a list
of operations, rather than a simple linear image with filled holes.</doc>
        <source-position filename="../libfwupdplugin/fu-srec-firmware.h"
                         line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-srec-firmware.c"
               line="42">records</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="SrecFirmwareRecord"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-srec-firmware.c"
                 line="35">A #FuSrecFirmware</doc>
            <type name="SrecFirmware" c:type="FuSrecFirmware*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Firmware" c:type="FuFirmware"/>
      </field>
    </class>
    <record name="SrecFirmwareClass"
            c:type="FuSrecFirmwareClass"
            glib:is-gtype-struct-for="SrecFirmware">
      <source-position filename="../libfwupdplugin/fu-srec-firmware.h"
                       line="18"/>
      <field name="parent_class">
        <type name="FirmwareClass" c:type="FuFirmwareClass"/>
      </field>
    </record>
    <record name="SrecFirmwareRecord"
            c:type="FuSrecFirmwareRecord"
            glib:type-name="FuSrecFirmwareRecord"
            glib:get-type="fu_srec_firmware_record_get_type"
            c:symbol-prefix="srec_firmware_record">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-srec-firmware.h"
           line="50">A single SREC record.</doc>
      <source-position filename="../libfwupdplugin/fu-srec-firmware.h"
                       line="60"/>
      <field name="ln" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="kind" writable="1">
        <type name="FirmareSrecRecordKind" c:type="FuFirmareSrecRecordKind"/>
      </field>
      <field name="addr" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="buf" writable="1">
        <array name="GLib.ByteArray" c:type="GByteArray*">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
      <constructor name="new"
                   c:identifier="fu_srec_firmware_record_new"
                   version="1.3.2"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-srec-firmware.c"
             line="61">Returns a single firmware record</doc>
        <source-position filename="../libfwupdplugin/fu-srec-firmware.h"
                         line="65"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-srec-firmware.c"
               line="69">records</doc>
          <type name="SrecFirmwareRecord" c:type="FuSrecFirmwareRecord*"/>
        </return-value>
        <parameters>
          <parameter name="ln" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-srec-firmware.c"
                 line="63">unsigned integer</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-srec-firmware.c"
                 line="64">a record kind, e.g. #FU_FIRMWARE_SREC_RECORD_KIND_S3_DATA_32</doc>
            <type name="FirmareSrecRecordKind"
                  c:type="FuFirmareSrecRecordKind"/>
          </parameter>
          <parameter name="addr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-srec-firmware.c"
                 line="65">unsigned integer</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
    </record>
    <class name="UdevDevice"
           c:symbol-prefix="udev_device"
           c:type="FuUdevDevice"
           parent="Device"
           glib:type-name="FuUdevDevice"
           glib:get-type="fu_udev_device_get_type"
           glib:type-struct="UdevDeviceClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-udev-device.c"
           line="29">A UDev device, typically only available on Linux.

See also: [class@FuDevice]</doc>
      <source-position filename="../libfwupdplugin/fu-udev-device.h"
                       line="27"/>
      <constructor name="new"
                   c:identifier="fu_udev_device_new"
                   version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1898">Creates a new #FuUdevDevice.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1904">a #FuUdevDevice</doc>
          <type name="UdevDevice" c:type="FuUdevDevice*"/>
        </return-value>
        <parameters>
          <parameter name="udev_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1900">a #GUdevDevice</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="emit_changed"
              c:identifier="fu_udev_device_emit_changed"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="72">Emits the ::changed signal for the object.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device-private.h"
                         line="11"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="74">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_dev"
              c:identifier="fu_udev_device_get_dev"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="719">Gets the #GUdevDevice.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="725">a #GUdevDevice, or %NULL</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="721">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_device_file"
              c:identifier="fu_udev_device_get_device_file"
              version="1.3.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="773">Gets the device node.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="779">a device file, or NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="775">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_devtype"
              c:identifier="fu_udev_device_get_devtype"
              version="1.4.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1707">Returns the Udev device type</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1713">device type specified in the uevent</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1709">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_driver"
              c:identifier="fu_udev_device_get_driver"
              version="1.5.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="755">Gets the device driver, e.g. `psmouse`.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="761">a subsystem, or NULL if unset or invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="757">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fd"
              c:identifier="fu_udev_device_get_fd"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1154">Gets the file descriptor if the device is open.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1160">positive integer, or -1 if the device is not open</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1156">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_model"
              c:identifier="fu_udev_device_get_model"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="854">Gets the device device code.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="860">a vendor code, or 0 if unset or invalid</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="856">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number"
              c:identifier="fu_udev_device_get_number"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="813">Gets the device number, if any.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="819">integer, 0 if the data is unavailable, or %G_MAXUINT64 if the
feature is not available</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="815">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent_name"
              c:identifier="fu_udev_device_get_parent_name"
              version="1.4.5">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1536">Returns the name of the direct ancestor of this device</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="113"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1542">string or NULL if unset or invalid</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1538">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_revision"
              c:identifier="fu_udev_device_get_revision"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="908">Gets the device revision.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="914">a vendor code, or 0 if unset or invalid</doc>
          <type name="guint8" c:type="guint8"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="910">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_siblings_with_subsystem"
              c:identifier="fu_udev_device_get_siblings_with_subsystem"
              version="1.6.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1729">Get a list of devices that are siblings of self and have the
provided subsystem.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="121"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1737">devices</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="UdevDevice"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1731">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="subsystem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1732">the name of a udev subsystem</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_slot_depth"
              c:identifier="fu_udev_device_get_slot_depth"
              version="1.2.4">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="557">Determine how far up a chain a given device is</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="564">unsigned integer</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="559">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="subsystem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="560">a subsystem</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_subsystem"
              c:identifier="fu_udev_device_get_subsystem"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="737">Gets the device subsystem, e.g. `pci`</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="55"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="743">a subsystem, or NULL if unset or invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="739">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subsystem_model"
              c:identifier="fu_udev_device_get_subsystem_model"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="890">Gets the device subsystem model code.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="896">a vendor code, or 0 if unset or invalid</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="892">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subsystem_vendor"
              c:identifier="fu_udev_device_get_subsystem_vendor"
              version="1.5.0">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="872">Gets the device subsystem vendor code.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="878">a vendor code, or 0 if unset or invalid</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="874">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sysfs_attr"
              c:identifier="fu_udev_device_get_sysfs_attr"
              version="1.4.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1562">Reads an arbitrary sysfs attribute 'attr' associated with UDEV device</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1570">string or NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1564">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1565">name of attribute to get</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_sysfs_path"
              c:identifier="fu_udev_device_get_sysfs_path"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="791">Gets the device sysfs path, e.g. `/sys/devices/pci0000:00/0000:00:14.0`.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="797">a local path, or NULL if unset or invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="793">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_vendor"
              c:identifier="fu_udev_device_get_vendor"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="836">Gets the device vendor code.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="842">a vendor code, or 0 if unset or invalid</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="838">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ioctl"
              c:identifier="fu_udev_device_ioctl"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1330">Control a device using a low-level request.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="82"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1340">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1332">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="request" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1333">request number</doc>
            <type name="gulong" c:type="gulong"/>
          </parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1334">a buffer to use, which *must* be large enough for the request</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="rc"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1335">the raw return value from the ioctl</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pread"
              c:identifier="fu_udev_device_pread"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1614">Read from a file descriptor at a given offset.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1623">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1616">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1617">offset address</doc>
            <type name="gint64" c:type="goffset"/>
          </parameter>
          <parameter name="data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1618">value</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pread_full"
              c:identifier="fu_udev_device_pread_full"
              version="1.4.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1406">Read a buffer from a file descriptor at a given offset.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1416">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1408">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1409">offset address</doc>
            <type name="gint64" c:type="goffset"/>
          </parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1410">data</doc>
            <type name="guint8" c:type="guint8*"/>
          </parameter>
          <parameter name="bufsz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1411">size of @buf</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="pwrite"
              c:identifier="fu_udev_device_pwrite"
              version="1.3.3"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1517">Write to a file descriptor at a given offset.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1526">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1519">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1520">offset address</doc>
            <type name="gint64" c:type="goffset"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1521">value</doc>
            <type name="guint8" c:type="guint8"/>
          </parameter>
        </parameters>
      </method>
      <method name="pwrite_full"
              c:identifier="fu_udev_device_pwrite_full"
              version="1.4.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1462">Write a buffer to a file descriptor at a given offset.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1472">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1464">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1465">offset address</doc>
            <type name="gint64" c:type="goffset"/>
          </parameter>
          <parameter name="buf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1466">data</doc>
            <type name="guint8" c:type="const guint8*"/>
          </parameter>
          <parameter name="bufsz" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1467">size of @data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fd"
              c:identifier="fu_udev_device_set_fd"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1172">Replace the file descriptor to use when the device has already been opened.
This object will automatically close() @fd when fu_device_close() is called.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1174">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1175">a valid file descriptor</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_flags"
              c:identifier="fu_udev_device_set_flags"
              version="1.3.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1213">Sets the parameters to use when opening the device.

For example %FU_UDEV_DEVICE_FLAG_OPEN_READ means that fu_device_open()
would use `O_RDONLY` rather than `O_RDWR` which is the default.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1215">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1216">udev device flags, e.g. %FU_UDEV_DEVICE_FLAG_OPEN_READ</doc>
            <type name="UdevDeviceFlags" c:type="FuUdevDeviceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_logical_id"
              c:identifier="fu_udev_device_set_logical_id"
              version="1.5.8"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1075">Sets the logical ID from the device subsystem. Plugins should choose the
subsystem that most relevant in the udev tree, for instance choosing `hid`
over `usb` for a mouse device.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1085">%TRUE if the logical device was set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1077">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="subsystem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1078">a subsystem string, e.g. `pci,usb`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_physical_id"
              c:identifier="fu_udev_device_set_physical_id"
              version="1.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="953">Sets the physical ID from the device subsystem. Plugins should choose the
subsystem that is "deepest" in the udev tree, for instance choosing `usb`
over `pci` for a mouse device.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="963">%TRUE if the physical device was set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="955">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="subsystems" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="956">a subsystem string, e.g. `pci,usb`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_readonly"
              c:identifier="fu_udev_device_set_readonly"
              version="1.3.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1193">Sets the open mode to `O_RDONLY` use when opening the device with
fu_device_open(). By default devices are opened with `O_RDWR`.</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1195">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="readonly" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1196">%TRUE if the device file should be opened readonly</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_sysfs"
              c:identifier="fu_udev_device_write_sysfs"
              version="1.4.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.c"
             line="1634">Writes data into a sysfs attribute</doc>
        <source-position filename="../libfwupdplugin/fu-udev-device.h"
                         line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-udev-device.c"
               line="1643">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1636">a #FuUdevDevice</doc>
            <type name="UdevDevice" c:type="FuUdevDevice*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1637">sysfs attribute name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-udev-device.c"
                 line="1638">data to write into the attribute</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="device-file" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="driver" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="subsystem" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="udev-device"
                introspectable="0"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type/>
      </property>
      <field name="parent_instance">
        <type name="Device" c:type="FuDevice"/>
      </field>
      <glib:signal name="changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="UdevDeviceClass"
            c:type="FuUdevDeviceClass"
            glib:is-gtype-struct-for="UdevDevice">
      <source-position filename="../libfwupdplugin/fu-udev-device.h"
                       line="27"/>
      <field name="parent_class">
        <type name="DeviceClass" c:type="FuDeviceClass"/>
      </field>
      <field name="__reserved">
        <array zero-terminated="0" fixed-size="31">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="UdevDeviceFlags" c:type="FuUdevDeviceFlags">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-udev-device.h"
           line="29">Flags used when opening the device using fu_device_open().</doc>
      <source-position filename="../libfwupdplugin/fu-udev-device.h"
                       line="49"/>
      <member name="none" value="0" c:identifier="FU_UDEV_DEVICE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.h"
             line="31">No flags set</doc>
      </member>
      <member name="open_read"
              value="1"
              c:identifier="FU_UDEV_DEVICE_FLAG_OPEN_READ">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.h"
             line="32">Open the device read-only</doc>
      </member>
      <member name="open_write"
              value="2"
              c:identifier="FU_UDEV_DEVICE_FLAG_OPEN_WRITE">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.h"
             line="33">Open the device write-only</doc>
      </member>
      <member name="vendor_from_parent"
              value="4"
              c:identifier="FU_UDEV_DEVICE_FLAG_VENDOR_FROM_PARENT">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.h"
             line="34">Get the vendor ID fallback from the parent</doc>
      </member>
      <member name="use_config"
              value="8"
              c:identifier="FU_UDEV_DEVICE_FLAG_USE_CONFIG">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.h"
             line="35">Read and write from the device config</doc>
      </member>
      <member name="open_nonblock"
              value="16"
              c:identifier="FU_UDEV_DEVICE_FLAG_OPEN_NONBLOCK">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-udev-device.h"
             line="36">Open nonblocking, e.g. O_NONBLOCK</doc>
      </member>
    </bitfield>
    <class name="UsbDevice"
           c:symbol-prefix="usb_device"
           c:type="FuUsbDevice"
           parent="Device"
           glib:type-name="FuUsbDevice"
           glib:get-type="fu_usb_device_get_type"
           glib:type-struct="UsbDeviceClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-usb-device.c"
           line="14">A USB device.

See also: [class@FuDevice], [class@FuHidDevice]</doc>
      <source-position filename="../libfwupdplugin/fu-usb-device.h" line="30"/>
      <constructor name="new" c:identifier="fu_usb_device_new" version="1.0.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="610">Creates a new #FuUsbDevice.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="32"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="616">a #FuUsbDevice</doc>
          <type name="UsbDevice" c:type="FuUsbDevice*"/>
        </return-value>
        <parameters>
          <parameter name="usb_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="612">a USB device</doc>
            <type name="GUsb.Device" c:type="GUsbDevice*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="find_udev_device"
              c:identifier="fu_usb_device_find_udev_device"
              version="1.3.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="490">Gets the matching #GUdevDevice for the #GUsbDevice.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="40"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="497">a #GUdevDevice, or NULL if unset or invalid</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="492">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_dev"
              c:identifier="fu_usb_device_get_dev"
              version="1.0.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="549">Gets the #GUsbDevice.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="36"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="555">a USB device, or %NULL</doc>
          <type name="GUsb.Device" c:type="GUsbDevice*"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="551">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pid"
              c:identifier="fu_usb_device_get_pid"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="385">Gets the device product code.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="34"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="391">integer, or 0x0 if unset or invalid</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="387">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_platform_id"
              c:identifier="fu_usb_device_get_platform_id"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="409">Gets the device platform ID.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device-private.h"
                         line="11"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="415">string, or NULL if unset or invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="411">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_spec"
              c:identifier="fu_usb_device_get_spec"
              version="1.3.4">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="433">Gets the string USB revision for the device.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="439">a specification revision in BCD format, or 0x0 if not supported</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="435">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_vid"
              c:identifier="fu_usb_device_get_vid"
              version="1.1.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="361">Gets the device vendor code.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="33"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="367">integer, or 0x0 if unset or invalid</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="363">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_open"
              c:identifier="fu_usb_device_is_open"
              version="1.0.3">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="97">Finds out if a USB device is currently open.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-usb-device.c"
               line="103">%TRUE if the device is open.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="99">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_dev"
              c:identifier="fu_usb_device_set_dev"
              version="1.0.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-usb-device.c"
             line="457">Sets the #GUsbDevice to use.</doc>
        <source-position filename="../libfwupdplugin/fu-usb-device.h"
                         line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="459">a #FuUsbDevice</doc>
            <type name="UsbDevice" c:type="FuUsbDevice*"/>
          </instance-parameter>
          <parameter name="usb_device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-usb-device.c"
                 line="460">optional #GUsbDevice</doc>
            <type name="GUsb.Device" c:type="GUsbDevice*"/>
          </parameter>
        </parameters>
      </method>
      <property name="usb-device"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="GUsb.Device"/>
      </property>
      <field name="parent_instance">
        <type name="Device" c:type="FuDevice"/>
      </field>
    </class>
    <record name="UsbDeviceClass"
            c:type="FuUsbDeviceClass"
            glib:is-gtype-struct-for="UsbDevice">
      <source-position filename="../libfwupdplugin/fu-usb-device.h" line="30"/>
      <field name="parent_class">
        <type name="DeviceClass" c:type="FuDeviceClass"/>
      </field>
      <field name="__reserved">
        <array zero-terminated="0" fixed-size="31">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="VOLUME_KIND_BDP"
              value="ebd0a0a2-b9e5-4433-87c0-68b6b72699c7"
              c:type="FU_VOLUME_KIND_BDP"
              version="1.5.3">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-volume.h"
           line="26">The GUID for the BDP.</doc>
      <source-position filename="../libfwupdplugin/fu-volume.h" line="33"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VOLUME_KIND_ESP"
              value="c12a7328-f81f-11d2-ba4b-00a0c93ec93b"
              c:type="FU_VOLUME_KIND_ESP"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-volume.h"
           line="18">The GUID for the ESP.</doc>
      <source-position filename="../libfwupdplugin/fu-volume.h" line="25"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="Volume"
           c:symbol-prefix="volume"
           c:type="FuVolume"
           parent="GObject.Object"
           glib:type-name="FuVolume"
           glib:get-type="fu_volume_get_type"
           glib:type-struct="VolumeClass">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-volume.c"
           line="18">Volume abstraction that uses UDisks</doc>
      <source-position filename="../libfwupdplugin/fu-volume.h" line="16"/>
      <method name="check_free_space"
              c:identifier="fu_volume_check_free_space"
              version="1.4.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="182">Checks the volume for required space.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="36"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="190">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="184">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
          <parameter name="required" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="185">size in bytes</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="fu_volume_get_id" version="1.4.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="129">Gets the D-Bus path of the mount point.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="135">string ID, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="131">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id_type"
              c:identifier="fu_volume_get_id_type"
              version="1.5.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="335">Return the IdType of the volume</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="53"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="341">string for type or NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="337">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mount_point"
              c:identifier="fu_volume_get_mount_point"
              version="1.4.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="150">Gets the location of the volume mount point.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="42"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="156">UNIX path, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="152">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_encrypted"
              c:identifier="fu_volume_is_encrypted"
              version="1.5.1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="249">Checks if the VOLUME is currently encrypted.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="255">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="251">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_internal"
              c:identifier="fu_volume_is_internal"
              version="1.5.2">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="312">Guesses if the drive is internal to the system</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="318">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="314">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_mounted"
              c:identifier="fu_volume_is_mounted"
              version="1.4.6">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="230">Checks if the VOLUME is already mounted.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="236">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="232">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="locker"
              c:identifier="fu_volume_locker"
              version="1.4.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="397">Locks the volume, mounting it and unmounting it as required. If the volume is
already mounted then it is is _not_ unmounted when the locker is closed.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="49"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="405">a device locker for success, or %NULL</doc>
          <type name="DeviceLocker" c:type="FuDeviceLocker*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="399">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="mount"
              c:identifier="fu_volume_mount"
              version="1.4.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="276">Mounts the VOLUME ready for use.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="43"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="283">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="278">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unmount"
              c:identifier="fu_volume_unmount"
              version="1.4.6"
              throws="1">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-volume.c"
             line="359">Unmounts the volume after use.</doc>
        <source-position filename="../libfwupdplugin/fu-volume.h" line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-volume.c"
               line="366">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libfwupdplugin/fu-volume.c"
                 line="361">a @FuVolume</doc>
            <type name="Volume" c:type="FuVolume*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="mount-path"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="proxy-block"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.DBusProxy"/>
      </property>
      <property name="proxy-filesystem"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.DBusProxy"/>
      </property>
    </class>
    <record name="VolumeClass"
            c:type="FuVolumeClass"
            glib:is-gtype-struct-for="Volume">
      <source-position filename="../libfwupdplugin/fu-volume.h" line="16"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="battery_state_to_string"
              c:identifier="fu_battery_state_to_string"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3191">Converts an enumerated type to a string.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="412"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3197">a string, or %NULL for invalid</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="battery_state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3193">a battery state, e.g. %FU_BATTERY_STATE_FULLY_CHARGED</doc>
          <type name="BatteryState" c:type="FuBatteryState"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_align_up"
              c:identifier="fu_byte_array_align_up"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2519">Align a byte array length to a power of 2 boundary, where @alignment is the
bit position to align to. If @alignment is zero then @array is unchanged.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="313"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2521">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="alignment" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2522">align to this power of 2</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2523">the byte used to pad the array</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_append_bytes"
              c:identifier="fu_byte_array_append_bytes"
              version="1.5.8">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2468">Adds the contents of a GBytes to a byte array.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="327"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2470">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2471">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_append_uint16"
              c:identifier="fu_byte_array_append_uint16"
              version="1.3.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2414">Adds a 16 bit integer to a byte array.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="318"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2416">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2417">value</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2418">endian type, e.g. #G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_append_uint32"
              c:identifier="fu_byte_array_append_uint32"
              version="1.3.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2432">Adds a 32 bit integer to a byte array.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="321"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2434">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2435">value</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2436">endian type, e.g. #G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_append_uint64"
              c:identifier="fu_byte_array_append_uint64"
              version="1.5.8">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2450">Adds a 64 bit integer to a byte array.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="324"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2452">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2453">value</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2454">endian type, e.g. #G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_append_uint8"
              c:identifier="fu_byte_array_append_uint8"
              version="1.3.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2399">Adds a 8 bit integer to a byte array.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="316"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2401">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2402">value</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_set_size"
              c:identifier="fu_byte_array_set_size"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2504">Sets the size of the GByteArray, expanding it with NULs if necessary.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="308"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2506">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2507">the new size of the GByteArray</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="byte_array_set_size_full"
              c:identifier="fu_byte_array_set_size_full"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2485">Sets the size of the GByteArray, expanding with @data as required.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="310"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2487">a #GByteArray</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2488">the new size of the GByteArray</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2489">the byte used to pad the array</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function name="bytes_get_data_safe"
              c:identifier="fu_bytes_get_data_safe"
              version="1.6.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3217">Get the byte data in the #GBytes. This data should not be modified.
This function will always return the same pointer for a given #GBytes.

If the size of @bytes is zero, then %NULL is returned and the @error is set,
which differs in behavior to that of g_bytes_get_data().

This may be useful when calling g_mapped_file_new() on a zero-length file.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="218"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3231">a pointer to the byte data, or %NULL.</doc>
        <type name="guint8" c:type="const guint8*"/>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3219">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="bufsz"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3220">location to return size of byte data</doc>
          <type name="gsize" c:type="gsize*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_align_up"
              c:identifier="fu_common_align_up"
              version="1.6.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3154">Align a value to a power of 2 boundary, where @alignment is the bit position
to align to. If @alignment is zero then @value is always returned unchanged.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="410"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3162">aligned value, which will be the same as @value if already aligned,
		or %G_MAXSIZE if the value would overflow</doc>
        <type name="gsize" c:type="gsize"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3156">value to align</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="alignment" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3157">align to this power of 2, where 0x1F is the maximum value of 2GB</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_bytes_align"
              c:identifier="fu_common_bytes_align"
              version="1.2.4">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1562">Aligns a block of memory to @blksize using the @padval value; if
the block is already aligned then the original @bytes is returned.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="215"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1571">a #GBytes, possibly @bytes</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1564">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="blksz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1565">block size in bytes</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="padval" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1566">the byte used to pad the byte buffer</doc>
          <type name="gchar" c:type="gchar"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_bytes_compare"
              c:identifier="fu_common_bytes_compare"
              version="1.2.6"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1671">Compares the buffers for equality.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="222"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1679">%TRUE if @bytes1 and @bytes2 are identical</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="bytes1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1673">a data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="bytes2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1674">another #GBytes</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_bytes_compare_raw"
              c:identifier="fu_common_bytes_compare_raw"
              version="1.3.2"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1622">Compares the buffers for equality.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="226"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1632">%TRUE if @buf1 and @buf2 are identical</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1624">a buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1625">sizeof @buf1</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="buf2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1626">another buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1627">sizeof @buf2</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_bytes_is_empty"
              c:identifier="fu_common_bytes_is_empty"
              version="1.2.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1600">Checks if a byte array are just empty (0xff) bytes.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="221"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1606">%TRUE if @bytes is empty</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1602">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_bytes_new_offset"
              c:identifier="fu_common_bytes_new_offset"
              version="1.5.4"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1733">Creates a #GBytes which is a subsection of another #GBytes.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="234"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1742">a #GBytes, or #NULL if range is invalid</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1735">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1736">where subsection starts at</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1737">length of subsection</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_bytes_pad"
              c:identifier="fu_common_bytes_pad"
              version="1.3.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1700">Pads a GBytes to a minimum @sz with `0xff`.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="232"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1707">a data blob</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1702">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="sz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1703">the desired size in bytes</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_cab_build_silo"
              c:identifier="fu_common_cab_build_silo"
              version="1.2.0"
              introspectable="0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-cab.c"
           line="14">Create an AppStream silo from a cabinet archive.</doc>
      <source-position filename="../libfwupdplugin/fu-common-cab.h" line="11"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-cab.c"
             line="22">a #XbSilo, or %NULL on error</doc>
        <type c:type="XbSilo*"/>
      </return-value>
      <parameters>
        <parameter name="blob" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-cab.c"
               line="16">A readable blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="size_max" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-cab.c"
               line="17">the maximum size of the archive</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_cpuid"
              c:identifier="fu_common_cpuid"
              version="1.5.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2572">Calls CPUID and returns the registers for the given leaf.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="374"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2583">%TRUE if the registers are set.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="leaf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2574">the CPUID level, now called the 'leaf' by Intel</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="eax"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2575">EAX register</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="ebx"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2576">EBX register</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="ecx"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2577">ECX register</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="edx"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2578">EDX register</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_crc16"
              c:identifier="fu_common_crc16"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3059">Returns the cyclic redundancy check value for the given memory buffer.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="401"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3066">CRC value</doc>
        <type name="guint16" c:type="guint16"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3061">memory buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3062">size of @buf</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_crc32"
              c:identifier="fu_common_crc32"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3114">Returns the cyclic redundancy check value for the given memory buffer.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="403"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3121">CRC value</doc>
        <type name="guint32" c:type="guint32"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3116">memory buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3117">size of @buf</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_crc32_full"
              c:identifier="fu_common_crc32_full"
              version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3087">Returns the cyclic redundancy check value for the given memory buffer.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="405"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3096">CRC value</doc>
        <type name="guint32" c:type="guint32"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3089">memory buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3090">size of @buf</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="crc" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3091">initial CRC value, typically 0xFFFFFFFF</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="polynomial" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3092">CRC polynomial, typically 0xEDB88320</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_crc8" c:identifier="fu_common_crc8" version="1.5.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3033">Returns the cyclic redundancy check value for the given memory buffer.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="399"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3040">CRC value</doc>
        <type name="guint8" c:type="guint8"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3035">memory buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3036">size of @buf</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_dump_bytes"
              c:identifier="fu_common_dump_bytes"
              version="1.2.2">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1542">Dumps a byte buffer to the screen.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="212"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="log_domain"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1544">optional log domain, typically %G_LOG_DOMAIN</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="title"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1545">optional prefix title</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1546">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_dump_full"
              c:identifier="fu_common_dump_full"
              version="1.2.4">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1451">Dumps a raw buffer to the screen.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="206"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="log_domain"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1453">optional log domain, typically %G_LOG_DOMAIN</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="title"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1454">optional prefix title</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1455">buffer to print</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1456">the size of @data</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="columns" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1457">break new lines after this many bytes</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1458">dump flags, e.g. %FU_DUMP_FLAGS_SHOW_ASCII</doc>
          <type name="DumpFlags" c:type="FuDumpFlags"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_dump_raw"
              c:identifier="fu_common_dump_raw"
              version="1.2.2">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1519">Dumps a raw buffer to the screen.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="202"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="log_domain"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1521">optional log domain, typically %G_LOG_DOMAIN</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="title"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1522">optional prefix title</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1523">buffer to print</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1524">the size of @data</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_error_array_get_best"
              c:identifier="fu_common_error_array_get_best"
              version="1.0.8">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1050">Finds the 'best' error to show the user from a array of errors, creating a
completely bespoke error where required.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="196"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1057">a #GError, never %NULL</doc>
        <type name="GLib.Error" c:type="GError*"/>
      </return-value>
      <parameters>
        <parameter name="errors" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1052">array of errors</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="GLib.Error"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="common_extract_archive"
              c:identifier="fu_common_extract_archive"
              version="0.9.7"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="328">Extracts an archive to a directory.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="187"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="336">%TRUE for success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="blob" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="330">data archive as a blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="dir" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="331">a directory name to extract to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_filename_glob"
              c:identifier="fu_common_filename_glob"
              version="1.5.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1837">Returns all the filenames that match a specific glob pattern.
Any results are sorted. No matching files will set @error.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="161"/>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1846">matching files, or %NULL</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="directory" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1839">a directory path</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="pattern" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1840">a glob pattern, e.g. `*foo*`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_find_program_in_path"
              c:identifier="fu_common_find_program_in_path"
              version="1.1.2"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="434">Looks for a program in the PATH variable</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="198"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="441">a new #gchar, or %NULL for error</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="basename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="436">the program to search</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_firmware_builder"
              c:identifier="fu_common_firmware_builder"
              version="0.9.7"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="486">Builds a firmware file using tools from the host session in a bubblewrap
jail. Several things happen during build:

1. The @bytes data is untarred to a temporary location
2. A bubblewrap container is set up
3. The startup.sh script is run inside the container
4. The firmware.bin is extracted from the container
5. The temporary location is deleted</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="191"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="502">a new #GBytes, or %NULL for error</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="488">the data to use</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="script_fn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="489">Name of the script to run in the tarball, e.g. `startup.sh`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="output_fn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="490">Name of the generated firmware, e.g. `firmware.bin`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_fnmatch"
              c:identifier="fu_common_fnmatch"
              version="1.3.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1812">Matches a string against a glob pattern.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="165"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1819">%TRUE if the string matched</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="pattern" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1814">a glob pattern, e.g. `*foo*`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1815">a string to match against the pattern, e.g. `bazfoobar`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_contents_bytes"
              c:identifier="fu_common_get_contents_bytes"
              version="0.9.7"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="212">Reads a blob of data from a file.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="180"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="219">a #GBytes, or %NULL for failure</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="214">a filename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_contents_fd"
              c:identifier="fu_common_get_contents_fd"
              version="0.9.5"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="238">Reads a blob from a specific file descriptor.

Note: this will close the fd when done</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="183"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="248">a #GBytes, or %NULL</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </return-value>
      <parameters>
        <parameter name="fd" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="240">a file descriptor</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="241">the maximum number of bytes to read</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_cpu_vendor"
              c:identifier="fu_common_get_cpu_vendor"
              version="1.5.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2623">Uses CPUID to discover the CPU vendor.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="381"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2628">a CPU vendor, e.g. %FU_CPU_VENDOR_AMD if the vendor was AMD.</doc>
        <type name="CpuVendor" c:type="FuCpuVendor"/>
      </return-value>
    </function>
    <function name="common_get_esp_default"
              c:identifier="fu_common_get_esp_default"
              version="1.4.6"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2902">Gets the platform default ESP</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="396"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2908">a volume, or %NULL if the ESP was not found</doc>
        <type name="Volume" c:type="FuVolume*"/>
      </return-value>
    </function>
    <function name="common_get_esp_for_path"
              c:identifier="fu_common_get_esp_for_path"
              version="1.4.6"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2989">Gets the platform ESP using a UNIX or UDisks path</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="393"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2996">a #volume, or %NULL if the ESP was not found</doc>
        <type name="Volume" c:type="FuVolume*"/>
      </return-value>
      <parameters>
        <parameter name="esp_path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2991">a path to the ESP</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_files_recursive"
              c:identifier="fu_common_get_files_recursive"
              version="1.0.6"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="118">Returns every file found under @directory, and any subdirectory.
If any path under @directory cannot be accessed due to permissions an error
will be returned.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="170"/>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="127">array of files, or %NULL for error</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="120">a directory name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_memory_size"
              c:identifier="fu_common_get_memory_size"
              version="1.5.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2692">Returns the size of physical memory.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="383"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2697">bytes</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
    </function>
    <function name="common_get_path"
              c:identifier="fu_common_get_path"
              version="1.0.8">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1110">Gets a fwupd-specific system path. These can be overridden with various
environment variables, for instance %FWUPD_DATADIR.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="157"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1117">a system path, or %NULL if invalid</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="path_kind" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1112">a #FuPathKind e.g. %FU_PATH_KIND_DATADIR_PKG</doc>
          <type name="PathKind" c:type="FuPathKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_volume_by_device"
              c:identifier="fu_common_get_volume_by_device"
              version="1.5.1"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2813">Finds the first volume from the specified device.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="387"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2820">a volume, or %NULL if the device was not found</doc>
        <type name="Volume" c:type="FuVolume*"/>
      </return-value>
      <parameters>
        <parameter name="device" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2815">a device string, typically starting with `/dev/`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_volume_by_devnum"
              c:identifier="fu_common_get_volume_by_devnum"
              version="1.5.1"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2858">Finds the first volume from the specified device.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="390"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2865">a volume, or %NULL if the device was not found</doc>
        <type name="Volume" c:type="FuVolume*"/>
      </return-value>
      <parameters>
        <parameter name="devnum" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2860">a device number</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_get_volumes_by_kind"
              c:identifier="fu_common_get_volumes_by_kind"
              version="1.4.6"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2729">Finds all volumes of a specific partition type</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="384"/>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2736">a #GPtrArray, or %NULL if the kind was not found</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="Volume"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2731">a volume kind, typically a GUID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_guid_is_plausible"
              c:identifier="fu_common_guid_is_plausible"
              version="1.2.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-guid.c"
           line="13">Checks whether a chunk of memory looks like it could be a GUID.</doc>
      <source-position filename="../libfwupdplugin/fu-common-guid.h"
                       line="11"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-guid.c"
             line="19">TRUE if it looks like a GUID, FALSE if not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-guid.c"
               line="15">a buffer of data</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_is_live_media"
              c:identifier="fu_common_is_live_media"
              version="1.4.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2658">Checks if the user is running from a live media using various heuristics.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="382"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2663">%TRUE if live</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="common_kernel_locked_down"
              c:identifier="fu_common_kernel_locked_down"
              version="1.3.8">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2538">Determines if kernel lockdown in effect</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="373"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="common_mkdir_parent"
              c:identifier="fu_common_mkdir_parent"
              version="0.9.7"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="143">Creates any required directories, including any parent directories.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="173"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="150">%TRUE for success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="145">a full pathname</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_read_uint16"
              c:identifier="fu_common_read_uint16"
              version="1.0.3">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="862">Read a value from a buffer using a specified endian.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="339"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="869">a value in host byte-order</doc>
        <type name="guint16" c:type="guint16"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="864">a readable buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="865">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_read_uint16_safe"
              c:identifier="fu_common_read_uint16_safe"
              version="1.3.3"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2129">Read a value from a buffer using a specified endian in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="259"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2144">%TRUE if @value was set, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2131">source buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2132">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2133">offset in bytes into @buf to copy from</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2134">the parsed value</doc>
          <type name="guint16" c:type="guint16*"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2135">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_read_uint32"
              c:identifier="fu_common_read_uint32"
              version="1.0.3">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="891">Read a value from a buffer using a specified endian.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="341"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="898">a value in host byte-order</doc>
        <type name="guint32" c:type="guint32"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="893">a readable buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="894">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_read_uint32_safe"
              c:identifier="fu_common_read_uint32_safe"
              version="1.3.3"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2170">Read a value from a buffer using a specified endian in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="266"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2185">%TRUE if @value was set, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2172">source buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2173">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2174">offset in bytes into @buf to copy from</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2175">the parsed value</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2176">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_read_uint64"
              c:identifier="fu_common_read_uint64"
              version="1.5.8">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="920">Read a value from a buffer using a specified endian.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="343"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="927">a value in host byte-order</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="922">a readable buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="923">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_read_uint64_safe"
              c:identifier="fu_common_read_uint64_safe"
              version="1.5.8"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2211">Read a value from a buffer using a specified endian in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="273"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2226">%TRUE if @value was set, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2213">source buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2214">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2215">offset in bytes into @buf to copy from</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2216">the parsed value</doc>
          <type name="guint64" c:type="guint64*"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2217">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_read_uint8_safe"
              c:identifier="fu_common_read_uint8_safe"
              version="1.3.3"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2090">Read a value from a buffer in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="253"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2104">%TRUE if @value was set, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2092">source buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2093">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2094">offset in bytes into @buf to copy from</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2095">the parsed value</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_realpath"
              c:identifier="fu_common_realpath"
              version="1.2.6"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1770">Finds the canonicalized absolute filename for a path.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="158"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1777">a filename, or %NULL if invalid or not found</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1772">a filename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_rmtree"
              c:identifier="fu_common_rmtree"
              version="0.9.7"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="40">Recursively removes a directory.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="167"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="47">%TRUE for success, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="directory" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="42">a directory name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_set_contents_bytes"
              c:identifier="fu_common_set_contents_bytes"
              version="0.9.5"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="176">Writes a blob of data to a filename, creating the parent directories as
required.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="176"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="185">%TRUE for success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="178">a filename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="179">data to write</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_spawn_sync"
              c:identifier="fu_common_spawn_sync"
              version="0.9.7"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="712">Runs a subprocess and waits for it to exit. Any output on standard out or
standard error will be forwarded to @handler_cb as whole lines.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="149"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="724">%TRUE for success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="argv" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="714">the argument list to run</doc>
          <type name="utf8" c:type="const gchar* const*"/>
        </parameter>
        <parameter name="handler_cb"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="call"
                   closure="2">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="715">optional #FuOutputHandler</doc>
          <type name="OutputHandler" c:type="FuOutputHandler"/>
        </parameter>
        <parameter name="handler_user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="716">the user data to pass to @handler_cb</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="timeout_ms" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="717">a timeout in ms, or 0 for no limit</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="718">optional #GCancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_string_append_kb"
              c:identifier="fu_common_string_append_kb"
              version="1.2.4">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1434">Appends a key and boolean value to a string</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="361"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1436">a #GString</doc>
          <type name="GLib.String" c:type="GString*"/>
        </parameter>
        <parameter name="idt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1437">the indent</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1438">a string to append</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1439">Boolean</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_string_append_ku"
              c:identifier="fu_common_string_append_ku"
              version="1.2.4">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1398">Appends a key and unsigned integer to a string</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="353"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1400">a #GString</doc>
          <type name="GLib.String" c:type="GString*"/>
        </parameter>
        <parameter name="idt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1401">the indent</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1402">a string to append</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1403">guint64</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_string_append_kv"
              c:identifier="fu_common_string_append_kv"
              version="1.2.4">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1350">Appends a key and string value to a string</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="349"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1352">a #GString</doc>
          <type name="GLib.String" c:type="GString*"/>
        </parameter>
        <parameter name="idt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1353">the indent</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1354">a string to append</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1355">a string to append</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_string_append_kx"
              c:identifier="fu_common_string_append_kx"
              version="1.2.4">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1416">Appends a key and hex integer to a string</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="357"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1418">a #GString</doc>
          <type name="GLib.String" c:type="GString*"/>
        </parameter>
        <parameter name="idt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1419">the indent</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1420">a string to append</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1421">guint64</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_string_replace"
              c:identifier="fu_common_string_replace"
              version="1.2.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1256">Performs multiple search and replace operations on the given string.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="346"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1264">the number of replacements done, or 0 if @search is not found.</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1258">the #GString to operate on</doc>
          <type name="GLib.String" c:type="GString*"/>
        </parameter>
        <parameter name="search" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1259">the text to search for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="replace" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1260">the text to use for substitutions</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_strjoin_array"
              c:identifier="fu_common_strjoin_array"
              version="1.5.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1946">Joins an array of strings together to form one long string, with the optional
separator inserted between each of them.

If @array has no items, the return value will be an empty string.
If @array contains a single item, separator will not appear in the resulting
string.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="371"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1958">a string</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="separator"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1948">string to insert between each of the strings</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="array" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1949">a #GPtrArray</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="common_strnsplit"
              c:identifier="fu_common_strnsplit"
              version="1.3.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1880">Splits a string into a maximum of @max_tokens pieces, using the given
delimiter. If @max_tokens is reached, the remainder of string is appended
to the last token.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="365"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1891">a newly-allocated NULL-terminated array of strings</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1882">a string to split</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="sz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1883">size of @str</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="delimiter" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1884">a string which specifies the places at which to split the string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="max_tokens" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1885">the maximum number of pieces to split @str into</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_strsafe"
              c:identifier="fu_common_strsafe"
              version="1.5.5">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1906">Converts a string into something that can be safely printed.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="369"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1913">safe string, or %NULL if there was nothing valid</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1908">a string to make safe for printing</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="maxsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1909">maximum size of returned string</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_strstrip"
              c:identifier="fu_common_strstrip"
              version="1.1.2">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="973">Removes leading and trailing whitespace from a constant string.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="201"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="979">newly allocated string</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="975">a string, e.g. ` test `</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_strtoull"
              c:identifier="fu_common_strtoull"
              version="1.1.2">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="949">Converts a string value to an integer. Values are assumed base 10, unless
prefixed with "0x" where they are parsed as base 16.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="197"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="956">integer value, or 0x0 for error</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="951">a string, e.g. `0x1234`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_strwidth"
              c:identifier="fu_common_strwidth"
              version="1.3.2">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1321">Returns the width of the string in displayed characters on the console.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="239"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1327">width of text</doc>
        <type name="gsize" c:type="gsize"/>
      </return-value>
      <parameters>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1323">the string to operate on</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_uri_get_scheme"
              c:identifier="fu_common_uri_get_scheme"
              version="1.5.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3131">Returns the USI scheme for the given URI.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="409"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="3137">scheme value, or %NULL if invalid, e.g. `https`</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="uri" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3133">valid URI, e.g. `https://foo.bar/baz`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_vercmp_full"
              c:identifier="fu_common_vercmp_full"
              version="1.3.9">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="519">Compares version numbers for sorting taking into account the version format
if required.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="12"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="528">-1 if a &lt; b, +1 if a &gt; b, 0 if they are equal, and %G_MAXINT on error</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="version_a" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="521">the semver release version, e.g. `1.2.3`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="version_b" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="522">the semver release version, e.g. `1.2.3.1`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fmt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="523">a version format, e.g. %FWUPD_VERSION_FORMAT_PLAIN</doc>
          <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_version_ensure_semver"
              c:identifier="fu_common_version_ensure_semver"
              version="1.2.9">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="241">Builds a semver from the possibly crazy version number.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="23"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="247">a version number, e.g. `1.2.3`, or %NULL if the version was not valid</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="version" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="243">a version number, e.g. ` V1.2.3 `</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_version_from_uint16"
              c:identifier="fu_common_version_from_uint16"
              version="1.2.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="159">Returns a dotted decimal version string from a 16 bit number.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="19"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="166">a version number, e.g. `1.3`, or %NULL if not supported</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="val" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="161">a uint16le version number</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="162">version kind used for formatting, e.g. %FWUPD_VERSION_FORMAT_TRIPLET</doc>
          <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_version_from_uint32"
              c:identifier="fu_common_version_from_uint32"
              version="1.2.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="65">Returns a dotted decimal version string from a 32 bit number.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="17"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="72">a version number, e.g. `1.0.3`, or %NULL if not supported</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="val" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="67">a uint32le version number</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="68">version kind used for formatting, e.g. %FWUPD_VERSION_FORMAT_TRIPLET</doc>
          <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_version_from_uint64"
              c:identifier="fu_common_version_from_uint64"
              version="1.3.6">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="20">Returns a dotted decimal version string from a 64 bit number.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="15"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="27">a version number, e.g. `1.2.3.4`, or %NULL if not supported</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="val" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="22">a raw version number</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="23">version kind used for formatting, e.g. %FWUPD_VERSION_FORMAT_QUAD</doc>
          <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_version_guess_format"
              c:identifier="fu_common_version_guess_format"
              version="1.2.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="351">Guesses the version format from the version number. This is only a heuristic
and plugins and components should explicitly set the version format whenever
possible.

If the version format cannot be guessed with any degree of accuracy, the
%FWUPD_VERSION_FORMAT_UNKNOWN constant is returned.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="24"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="362">a version format, e.g. %FWUPD_VERSION_FORMAT_QUAD</doc>
        <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
      </return-value>
      <parameters>
        <parameter name="version" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="353">a version number, e.g. `1.2.3`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_version_parse_from_format"
              c:identifier="fu_common_version_parse_from_format"
              version="1.3.3">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="294">Returns a dotted decimal version string from a version string using @fmt.
The supported formats are:

- Dotted decimal, e.g. `1.2.3`
- Base 16, a hex number *with* a 0x prefix, e.g. `0x10203`
- Base 10, a string containing just [0-9], e.g. `66051`
- Date in YYYYMMDD format, e.g. `20150915`

Anything with a `.` or that doesn't match `[0-9]` or `0x[a-f,0-9]` is considered
a string and returned without modification.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="21"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="310">a version number, e.g. `1.0.3`</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="version" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="296">a version number</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fmt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="297">a version format, e.g. %FWUPD_VERSION_FORMAT_TRIPLET</doc>
          <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_version_verify_format"
              c:identifier="fu_common_version_verify_format"
              version="1.2.9"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common-version.c"
           line="419">Verifies if a version matches the input format.</doc>
      <source-position filename="../libfwupdplugin/fu-common-version.h"
                       line="25"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common-version.c"
             line="427">TRUE or FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="version" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="421">a string, e.g. `0x1234`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fmt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common-version.c"
               line="422">a version format</doc>
          <type name="Fwupd.VersionFormat" c:type="FwupdVersionFormat"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_write_uint16"
              c:identifier="fu_common_write_uint16"
              version="1.0.3">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="781">Writes a value to a buffer using a specified endian.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="330"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="783">a writable buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="val_native" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="784">a value in host byte-order</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="785">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_write_uint16_safe"
              c:identifier="fu_common_write_uint16_safe"
              version="1.5.8"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2285">Write a value to a buffer using a specified endian in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="286"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2300">%TRUE if @value was written, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2287">source buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2288">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2289">offset in bytes into @buf to write to</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2290">the value to write</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2291">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_write_uint32"
              c:identifier="fu_common_write_uint32"
              version="1.0.3">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="808">Writes a value to a buffer using a specified endian.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="333"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="810">a writable buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="val_native" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="811">a value in host byte-order</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="812">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_write_uint32_safe"
              c:identifier="fu_common_write_uint32_safe"
              version="1.5.8"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2323">Write a value to a buffer using a specified endian in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="293"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2338">%TRUE if @value was written, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2325">source buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2326">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2327">offset in bytes into @buf to write to</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2328">the value to write</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2329">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_write_uint64"
              c:identifier="fu_common_write_uint64"
              version="1.5.8">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="835">Writes a value to a buffer using a specified endian.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="336"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="837">a writable buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="val_native" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="838">a value in host byte-order</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="839">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_write_uint64_safe"
              c:identifier="fu_common_write_uint64_safe"
              version="1.5.8"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2361">Write a value to a buffer using a specified endian in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="300"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2376">%TRUE if @value was written, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2363">source buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2364">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2365">offset in bytes into @buf to write to</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2366">the value to write</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="endian" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2367">an endian type, e.g. %G_LITTLE_ENDIAN</doc>
          <type name="EndianType" c:type="FuEndianType"/>
        </parameter>
      </parameters>
    </function>
    <function name="common_write_uint8_safe"
              c:identifier="fu_common_write_uint8_safe"
              version="1.5.8"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2252">Write a value to a buffer in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="280"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2266">%TRUE if @value was written, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2254">source buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="bufsz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2255">maximum size of @buf, typically `sizeof(buf)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2256">offset in bytes into @buf to write to</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2257">the value to write</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="device_add_checksum"
                    c:identifier="fu_device_add_checksum"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="161"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_add_icon"
                    c:identifier="fu_device_add_icon"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="163"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_add_protocol"
                    c:identifier="fu_device_add_protocol"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="178"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_add_release"
                    c:identifier="fu_device_add_release"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="162"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_add_vendor_id"
                    c:identifier="fu_device_add_vendor_id"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="177"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_branch"
                    c:identifier="fu_device_get_branch"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="195"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_checksums"
                    c:identifier="fu_device_get_checksums"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="184"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_composite_id"
                    c:identifier="fu_device_get_composite_id"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="197"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_created"
                    c:identifier="fu_device_get_created"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="186"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_flags"
                    c:identifier="fu_device_get_flags"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="185"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_flashes_left"
                    c:identifier="fu_device_get_flashes_left"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="211"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_guid_default"
                    c:identifier="fu_device_get_guid_default"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="189"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_guids"
                    c:identifier="fu_device_get_guids"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="188"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_icons"
                    c:identifier="fu_device_get_icons"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="191"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_id"
                    c:identifier="fu_device_get_id"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="196"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_install_duration"
                    c:identifier="fu_device_get_install_duration"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="212"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_instance_ids"
                    c:identifier="fu_device_get_instance_ids"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="190"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_modified"
                    c:identifier="fu_device_get_modified"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="187"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_name"
                    c:identifier="fu_device_get_name"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="192"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_plugin"
                    c:identifier="fu_device_get_plugin"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="198"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_protocols"
                    c:identifier="fu_device_get_protocols"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="210"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_serial"
                    c:identifier="fu_device_get_serial"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="193"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_summary"
                    c:identifier="fu_device_get_summary"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="194"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_update_error"
                    c:identifier="fu_device_get_update_error"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="199"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_update_state"
                    c:identifier="fu_device_get_update_state"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="200"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_vendor"
                    c:identifier="fu_device_get_vendor"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="201"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_vendor_ids"
                    c:identifier="fu_device_get_vendor_ids"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="209"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_version"
                    c:identifier="fu_device_get_version"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="202"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_version_bootloader"
                    c:identifier="fu_device_get_version_bootloader"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="204"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_version_bootloader_raw"
                    c:identifier="fu_device_get_version_bootloader_raw"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="208"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_version_format"
                    c:identifier="fu_device_get_version_format"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="205"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_version_lowest"
                    c:identifier="fu_device_get_version_lowest"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="203"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_version_lowest_raw"
                    c:identifier="fu_device_get_version_lowest_raw"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="207"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_get_version_raw"
                    c:identifier="fu_device_get_version_raw"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="206"/>
      <parameters>
        <parameter name="d">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_has_flag"
                    c:identifier="fu_device_has_flag"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="157"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_has_instance_id"
                    c:identifier="fu_device_has_instance_id"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="158"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_has_protocol"
                    c:identifier="fu_device_has_protocol"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="160"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_has_vendor_id"
                    c:identifier="fu_device_has_vendor_id"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="159"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_branch"
                    c:identifier="fu_device_set_branch"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="171"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_created"
                    c:identifier="fu_device_set_created"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="164"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_description"
                    c:identifier="fu_device_set_description"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="165"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_flags"
                    c:identifier="fu_device_set_flags"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="166"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_flashes_left"
                    c:identifier="fu_device_set_flashes_left"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="182"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_install_duration"
                    c:identifier="fu_device_set_install_duration"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="183"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_modified"
                    c:identifier="fu_device_set_modified"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="167"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_plugin"
                    c:identifier="fu_device_set_plugin"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="168"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_serial"
                    c:identifier="fu_device_set_serial"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="169"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_summary"
                    c:identifier="fu_device_set_summary"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="170"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_update_error"
                    c:identifier="fu_device_set_update_error"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="174"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_update_image"
                    c:identifier="fu_device_set_update_image"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="173"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_update_message"
                    c:identifier="fu_device_set_update_message"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="172"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_update_state"
                    c:identifier="fu_device_set_update_state"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="175"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_vendor"
                    c:identifier="fu_device_set_vendor"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="176"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_version_bootloader_raw"
                    c:identifier="fu_device_set_version_bootloader_raw"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="181"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_version_lowest_raw"
                    c:identifier="fu_device_set_version_lowest_raw"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="180"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="device_set_version_raw"
                    c:identifier="fu_device_set_version_raw"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-device.h" line="179"/>
      <parameters>
        <parameter name="d">
        </parameter>
        <parameter name="v">
        </parameter>
      </parameters>
    </function-macro>
    <function name="efivar_delete"
              c:identifier="fu_efivar_delete"
              version="1.4.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="30">Removes a variable from NVRAM</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="58"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="38">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="32">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="33">Variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_delete_with_glob"
              c:identifier="fu_efivar_delete_with_glob"
              version="1.4.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="51">Removes a group of variables from NVRAM</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="62"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="59">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="53">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name_glob" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="54">Variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_exists"
              c:identifier="fu_efivar_exists"
              version="1.4.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="72">Test if a variable exists</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="28"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="79">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="74">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="75">Variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_get_data"
              c:identifier="fu_efivar_get_data"
              version="1.4.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="90">Gets the data from a UEFI variable in NVRAM</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="33"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="101">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="92">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="93">Variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="94">Data to set</doc>
          <type name="guint8" c:type="guint8**"/>
        </parameter>
        <parameter name="data_sz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="95">size of data</doc>
          <type name="gsize" c:type="gsize*"/>
        </parameter>
        <parameter name="attr" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="96">Attributes</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_get_data_bytes"
              c:identifier="fu_efivar_get_data_bytes"
              version="1.5.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="115">Gets the data from a UEFI variable in NVRAM</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="40"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="124">a #GBytes, or %NULL</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="117">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="118">Variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="attr"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="119">Attributes</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_get_monitor"
              c:identifier="fu_efivar_get_monitor"
              version="1.5.5"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="166">Returns a file monitor for a specific key.</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="30"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="174">a #GFileMonitor, or %NULL for an error</doc>
        <type name="Gio.FileMonitor" c:type="GFileMonitor*"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="168">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="169">Variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_get_names"
              c:identifier="fu_efivar_get_names"
              version="1.4.7"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="146">Gets the list of names where the GUID matches. An error is set if there are
no names matching the GUID.</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="66"/>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="154">array of names</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="148">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_secure_boot_enabled"
              c:identifier="fu_efivar_secure_boot_enabled"
              version="1.4.0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="296">Determines if secure boot was enabled</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="69"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="301">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="efivar_secure_boot_enabled_full"
              c:identifier="fu_efivar_secure_boot_enabled_full"
              version="1.5.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="259">Determines if secure boot was enabled</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="70"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="265">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="efivar_set_data"
              c:identifier="fu_efivar_set_data"
              version="1.4.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="203">Sets the data to a UEFI variable in NVRAM</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="45"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="214">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="205">Globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="206">Variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="207">Data to set</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="sz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="208">size of @data</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="attr" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="209">Attributes</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_set_data_bytes"
              c:identifier="fu_efivar_set_data_bytes"
              version="1.5.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="229">Sets the data to a UEFI variable in NVRAM</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="52"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="239">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="guid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="231">globally unique identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="232">variable name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="233">data blob</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </parameter>
        <parameter name="attr" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-efivar.c"
               line="234">attributes</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="efivar_space_used"
              c:identifier="fu_efivar_space_used"
              version="1.5.1"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="186">Gets the total size used by all EFI variables. This may be less than the size reported by the
kernel as some (hopefully small) variables are hidden from userspace.</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="27"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="193">total allocated size of all visible variables, or %G_MAXUINT64 on error</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
    </function>
    <function name="efivar_supported"
              c:identifier="fu_efivar_supported"
              version="1.4.0"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-efivar.c"
           line="14">Determines if the kernel supports EFI variables</doc>
      <source-position filename="../libfwupdplugin/fu-efivar.h" line="26"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-efivar.c"
             line="20">%TRUE on success</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="kenv_get_string"
              c:identifier="fu_kenv_get_string"
              version="1.6.1"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-kenv.c"
           line="17">Gets a BSD kernel environment string. This will not work on Linux or
Windows.</doc>
      <source-position filename="../libfwupdplugin/fu-kenv.h" line="11"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-kenv.c"
             line="25">a string, or %NULL if the @key was not found</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-kenv.c"
               line="19">a kenv key, e.g. `smbios.bios.version`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="memcpy_safe"
              c:identifier="fu_memcpy_safe"
              version="1.3.1"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="1975">Copies some memory using memcpy in a safe way. Providing the buffer sizes
of both the destination and the source allows us to check for buffer overflow.

Providing the buffer offsets also allows us to check reading past the end of
the source buffer. For this reason the caller should NEVER add an offset to
@src or @dst.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="244"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="1997">%TRUE if the bytes were copied, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="dst" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1977">destination buffer</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="dst_sz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1978">maximum size of @dst, typically `sizeof(dst)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="dst_offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1979">offset in bytes into @dst to copy to</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="src" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1980">source buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="src_sz" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1981">maximum size of @dst, typically `sizeof(src)`</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="src_offset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1982">offset in bytes into @src to copy from</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="n" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="1983">number of bytes to copy from @src+@offset from</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="memdup_safe"
              c:identifier="fu_memdup_safe"
              version="1.5.6"
              throws="1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="2051">Duplicates some memory using memdup in a safe way.

You don't need to use this function in "obviously correct" cases, nor should
you use it when performance is a concern. Only us it when you're not sure if
malicious data from a device or firmware could cause memory corruption.

NOTE: This function intentionally limits allocation size to 1GB.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="240"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-common.c"
             line="2065">block of allocated memory, or %NULL for an error.</doc>
        <type name="guint8" c:type="guint8*"/>
      </return-value>
      <parameters>
        <parameter name="src" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2053">source buffer</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="n" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="2054">number of bytes to copy from @src</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function-macro name="plugin_add_flag"
                    c:identifier="fu_plugin_add_flag"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="34"/>
      <parameters>
        <parameter name="p">
        </parameter>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="plugin_get_flags"
                    c:identifier="fu_plugin_get_flags"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="32"/>
      <parameters>
        <parameter name="p">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="plugin_has_flag"
                    c:identifier="fu_plugin_has_flag"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="33"/>
      <parameters>
        <parameter name="p">
        </parameter>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="plugin_remove_flag"
                    c:identifier="fu_plugin_remove_flag"
                    introspectable="0">
      <source-position filename="../libfwupdplugin/fu-plugin.h" line="35"/>
      <parameters>
        <parameter name="p">
        </parameter>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function name="version_string"
              c:identifier="fu_version_string"
              version="1.6.1">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-version.c"
           line="11">Gets the libfwupdplugin installed runtime version.

This may be different to the *build-time* version if the daemon and library
objects somehow get out of sync.</doc>
      <source-position filename="../libfwupdplugin/fu-version.h" line="11"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../libfwupdplugin/fu-version.c"
             line="19">version string</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <function name="xmlb_builder_insert_kb"
              c:identifier="fu_xmlb_builder_insert_kb"
              version="1.6.0"
              introspectable="0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3289">Convenience function to add an XML node with a boolean value.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="420"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="bn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3291">#XbBuilderNode</doc>
          <type c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3292">string key</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3293">boolean value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlb_builder_insert_kv"
              c:identifier="fu_xmlb_builder_insert_kv"
              version="1.6.0"
              introspectable="0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3249">Convenience function to add an XML node with a string value. If @value is %NULL
then no member is added.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="414"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="bn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3251">#XbBuilderNode</doc>
          <type c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3252">string key</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3253">string value</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlb_builder_insert_kx"
              c:identifier="fu_xmlb_builder_insert_kx"
              version="1.6.0"
              introspectable="0">
      <doc xml:space="preserve"
           filename="../libfwupdplugin/fu-common.c"
           line="3268">Convenience function to add an XML node with an integer value. If @value is 0
then no member is added.</doc>
      <source-position filename="../libfwupdplugin/fu-common.h" line="417"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="bn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3270">#XbBuilderNode</doc>
          <type c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3271">string key</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libfwupdplugin/fu-common.c"
               line="3272">integer value</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
