mirror of
				https://git.proxmox.com/git/fwupd
				synced 2025-11-04 13:19:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			333 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			333 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (C) 2016 Richard Hughes <richard@hughsie.com>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: LGPL-2.1+
 | 
						|
 */
 | 
						|
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include "fu-device.h"
 | 
						|
#include "fu-hwids.h"
 | 
						|
#include "fu-plugin.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);
 |