mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-28 13:32:26 +00:00

All the other vfuncs have 'plugin, device, flags' but prepare and cleanup vfuncs being 'plugin, flags, device' order has been triggering my OCD for the last few years. We've just broken the symbol names, so it's the right time to fix this.
343 lines
8.1 KiB
C
343 lines
8.1 KiB
C
/*
|
|
* Copyright (C) 2016 Richard Hughes <richard@hughsie.com>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-2.1+
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "fu-plugin.h"
|
|
#include "fu-device.h"
|
|
#include "fu-hwids.h"
|
|
#include "fu-quirks.h"
|
|
#include "fu-security-attrs.h"
|
|
|
|
/* for in-tree plugins only */
|
|
#ifdef FWUPD_COMPILATION
|
|
#include "fu-hash.h"
|
|
/* only until HSI is declared stable */
|
|
#include "fwupd-security-attr-private.h"
|
|
#endif
|
|
|
|
/**
|
|
* fu_plugin_init:
|
|
* @plugin: A #FuPlugin
|
|
*
|
|
* Initializes the plugin.
|
|
* Sets up any static data structures for the plugin.
|
|
* Most plugins should call fu_plugin_set_build_hash in here.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
void fu_plugin_init (FuPlugin *plugin);
|
|
|
|
/**
|
|
* fu_plugin_destroy:
|
|
* @plugin: a plugin
|
|
*
|
|
* Destroys the plugin.
|
|
* Any allocated memory should be freed here.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
void fu_plugin_destroy (FuPlugin *plugin);
|
|
|
|
/**
|
|
* fu_plugin_startup:
|
|
* @plugin: a plugin
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Tries to start the plugin.
|
|
* Returns: TRUE for success or FALSE for failure.
|
|
*
|
|
* Any plugins not intended for the system or that have failure communicating
|
|
* with the device should return FALSE.
|
|
* Any allocated memory should be freed here.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_startup (FuPlugin *plugin,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_coldplug:
|
|
* @plugin: a plugin
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Probes for devices.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_coldplug (FuPlugin *plugin,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_coldplug_prepare:
|
|
* @plugin: a plugin
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Prepares to probe for devices.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_coldplug_prepare (FuPlugin *plugin,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_coldplug_cleanup:
|
|
* @plugin: a plugin
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Cleans up from probe for devices.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_coldplug_cleanup (FuPlugin *plugin,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_write_firmware:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @blob_fw: a data blob
|
|
* @flags: install flags
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Updates the firmware on the device with blob_fw
|
|
*
|
|
* Since: 1.7.0
|
|
**/
|
|
gboolean
|
|
fu_plugin_write_firmware(FuPlugin *plugin,
|
|
FuDevice *dev,
|
|
GBytes *blob_fw,
|
|
FwupdInstallFlags flags,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_verify:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @flags: verify flags
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Verifies the firmware on the device matches the value stored in the database
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_verify (FuPlugin *plugin,
|
|
FuDevice *dev,
|
|
FuPluginVerifyFlags flags,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_unlock:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Unlocks the device for writes.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_unlock (FuPlugin *plugin,
|
|
FuDevice *dev,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_activate:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Activates the new firmware on the device.
|
|
*
|
|
* This is intended for devices that it is not safe to immediately activate
|
|
* the firmware. It may be called at a more convenient time instead.
|
|
*
|
|
* Since: 1.2.6
|
|
**/
|
|
gboolean fu_plugin_activate (FuPlugin *plugin,
|
|
FuDevice *dev,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_clear_results:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Clears stored update results for the device.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_clear_results (FuPlugin *plugin,
|
|
FuDevice *dev,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_get_results:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Obtains historical update results for the device.
|
|
*
|
|
* Since: 0.8.0
|
|
**/
|
|
gboolean fu_plugin_get_results (FuPlugin *plugin,
|
|
FuDevice *dev,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_attach:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Swaps the device from bootloader mode to runtime mode.
|
|
*
|
|
* Since: 1.0.2
|
|
**/
|
|
gboolean
|
|
fu_plugin_attach(FuPlugin *plugin, FuDevice *dev, GError **error);
|
|
/**
|
|
* fu_plugin_detach:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Swaps the device from runtime mode to bootloader mode.
|
|
*
|
|
* Since: 1.7.0
|
|
**/
|
|
gboolean
|
|
fu_plugin_detach(FuPlugin *plugin, FuDevice *dev, GError **error);
|
|
/**
|
|
* fu_plugin_prepare:
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @flags: install flags
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Prepares the device to receive an update.
|
|
*
|
|
* Since: 1.7.0
|
|
**/
|
|
gboolean
|
|
fu_plugin_prepare(FuPlugin *plugin, FuDevice *dev, FwupdInstallFlags flags, GError **error);
|
|
/**
|
|
* fu_plugin_cleanup
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @flags: install flags
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Cleans up the device after receiving an update.
|
|
*
|
|
* Since: 1.7.0
|
|
**/
|
|
gboolean
|
|
fu_plugin_cleanup(FuPlugin *plugin, FuDevice *dev, FwupdInstallFlags flags, GError **error);
|
|
/**
|
|
* fu_plugin_composite_prepare
|
|
* @plugin: a plugin
|
|
* @devices: (element-type FuDevice): array of devices
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Function run before updating group of composite devices.
|
|
*
|
|
* Since: 1.0.9
|
|
**/
|
|
gboolean fu_plugin_composite_prepare (FuPlugin *plugin,
|
|
GPtrArray *devices,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_composite_cleanup
|
|
* @plugin: a plugin
|
|
* @devices: (element-type FuDevice): array of devices
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Function run after updating group of composite devices.
|
|
*
|
|
* Since: 1.0.9
|
|
**/
|
|
gboolean fu_plugin_composite_cleanup (FuPlugin *plugin,
|
|
GPtrArray *devices,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_backend_device_added
|
|
* @plugin: a plugin
|
|
* @device: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Function to run after a device is added by a backend, e.g. by USB or Udev.
|
|
*
|
|
* Since: 1.5.6
|
|
**/
|
|
gboolean fu_plugin_backend_device_added (FuPlugin *plugin,
|
|
FuDevice *device,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_backend_device_changed
|
|
* @plugin: a plugin
|
|
* @device: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Function run when the device changed.
|
|
*
|
|
* Since: 1.5.6
|
|
**/
|
|
gboolean fu_plugin_backend_device_changed (FuPlugin *plugin,
|
|
FuDevice *device,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_backend_device_removed
|
|
* @plugin: a plugin
|
|
* @device: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Function to run when device is physically removed.
|
|
*
|
|
* Since: 1.5.6
|
|
**/
|
|
gboolean fu_plugin_backend_device_removed (FuPlugin *plugin,
|
|
FuDevice *device,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_device_added
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
*
|
|
* Function run when the subclassed device has been added.
|
|
*
|
|
* Since: 1.5.0
|
|
**/
|
|
void fu_plugin_device_added (FuPlugin *plugin,
|
|
FuDevice *dev);
|
|
/**
|
|
* fu_plugin_device_created
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
* @error: (nullable): optional return location for an error
|
|
*
|
|
* Function run when the subclassed device has been created.
|
|
*
|
|
* Since: 1.4.0
|
|
**/
|
|
gboolean fu_plugin_device_created (FuPlugin *plugin,
|
|
FuDevice *dev,
|
|
GError **error);
|
|
/**
|
|
* fu_plugin_device_registered
|
|
* @plugin: a plugin
|
|
* @dev: a device
|
|
*
|
|
* Function run when device registered from another plugin.
|
|
*
|
|
* Since: 0.9.7
|
|
**/
|
|
void fu_plugin_device_registered (FuPlugin *plugin,
|
|
FuDevice *dev);
|
|
/**
|
|
* fu_plugin_add_security_attrs
|
|
* @plugin: a plugin
|
|
* @attrs: a security attribute
|
|
*
|
|
* Function that asks plugins to add Host Security Attributes.
|
|
*
|
|
* Since: 1.5.0
|
|
**/
|
|
void fu_plugin_add_security_attrs (FuPlugin *plugin,
|
|
FuSecurityAttrs *attrs);
|