FuPlugin

FuPlugin — a daemon plugin

Functions

Types and Values

Description

An object that represents a plugin run by the daemon.

See also: FuDevice

Functions

fu_plugin_get_name ()

const gchar *
fu_plugin_get_name (FuPlugin *plugin);

Gets the plugin name.

Parameters

plugin

A FuPlugin

 

Returns

a plugin name, or NULL for unknown.

Since: 0.8.0


fu_plugin_get_data ()

FuPluginData *
fu_plugin_get_data (FuPlugin *plugin);

Gets the per-plugin allocated private data. This will return NULL unless fu_plugin_alloc_data() has been called by the plugin.

Parameters

plugin

A FuPlugin

 

Returns

a pointer to a structure, or NULL for unset.

[transfer none]

Since: 0.8.0


fu_plugin_alloc_data ()

FuPluginData *
fu_plugin_alloc_data (FuPlugin *plugin,
                      gsize data_sz);

Allocates the per-plugin allocated private data.

Parameters

plugin

A FuPlugin

 

data_sz

the size to allocate

 

Returns

a pointer to a structure, or NULL for unset.

[transfer full]

Since: 0.8.0


fu_plugin_get_enabled ()

gboolean
fu_plugin_get_enabled (FuPlugin *plugin);

Returns if the plugin is enabled. Plugins may self-disable using fu_plugin_set_enabled() or can be disabled by the daemon.

Parameters

plugin

A FuPlugin

 

Returns

TRUE if the plugin is currently enabled.

Since: 0.8.0


fu_plugin_set_enabled ()

void
fu_plugin_set_enabled (FuPlugin *plugin,
                       gboolean enabled);

Enables or disables a plugin. Plugins can self-disable at any point.

Parameters

plugin

A FuPlugin

 

enabled

the enabled value

 

Since: 0.8.0


fu_plugin_get_usb_context ()

GUsbContext *
fu_plugin_get_usb_context (FuPlugin *plugin);

Gets the shared USB context that all plugins can use.

Parameters

plugin

A FuPlugin

 

Returns

a GUsbContext.

[transfer none]

Since: 0.8.0


fu_plugin_get_supported ()

GPtrArray *
fu_plugin_get_supported (FuPlugin *plugin);

Gets all the device GUIDs supported by the daemon.

Parameters

plugin

A FuPlugin

 

Returns

GUIDs.

[element-type utf8][transfer none]

Since: 1.0.0


fu_plugin_device_add ()

void
fu_plugin_device_add (FuPlugin *plugin,
                      FuDevice *device);

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.

Parameters

plugin

A FuPlugin

 

device

A FuDevice

 

Since: 0.8.0


fu_plugin_device_add_delay ()

void
fu_plugin_device_add_delay (FuPlugin *plugin,
                            FuDevice *device);

Asks the daemon to add a device to the exported list after a small delay.

Parameters

plugin

A FuPlugin

 

device

A FuDevice

 

Since: 0.8.0


fu_plugin_device_remove ()

void
fu_plugin_device_remove (FuPlugin *plugin,
                         FuDevice *device);

Asks the daemon to remove a device from the exported list.

Parameters

plugin

A FuPlugin

 

device

A FuDevice

 

Since: 0.8.0


fu_plugin_device_register ()

void
fu_plugin_device_register (FuPlugin *plugin,
                           FuDevice *device);

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 intance the coldplug should be ignored based on the metadata set from other plugins.

Parameters

plugin

A FuPlugin

 

device

A FuDevice

 

Since: 0.9.7


fu_plugin_set_status ()

void
fu_plugin_set_status (FuPlugin *plugin,
                      FwupdStatus status);

Sets the global state of the daemon according to the current plugin action.

Parameters

plugin

A FuPlugin

 

status

A FwupdStatus, e.g. FWUPD_STATUS_DECOMPRESSING

 

Since: 0.8.0


fu_plugin_set_percentage ()

void
fu_plugin_set_percentage (FuPlugin *plugin,
                          guint percentage);

Sets the global completion of the daemon according to the current plugin action.

Parameters

plugin

A FuPlugin

 

percentage

the percentage complete

 

Since: 0.8.0


fu_plugin_recoldplug ()

void
fu_plugin_recoldplug (FuPlugin *plugin);

Ask all the plugins to coldplug all devices, which will include the prepare() and cleanup() phases. Duplicate devices added will be ignored.

Parameters

plugin

A FuPlugin

 

Since: 0.8.0


fu_plugin_set_coldplug_delay ()

void
fu_plugin_set_coldplug_delay (FuPlugin *plugin,
                              guint duration);

Set the minimum time that should be waited inbetween the call to fu_plugin_coldplug_prepare() and fu_plugin_coldplug(). This is usually going to be the minimum hardware initialisation time from a datasheet.

It is better to use this function rather than using a sleep() in the plugin itself as then only one delay is done in the daemon rather than waiting for each coldplug prepare in a serial way.

Additionally, very long delays should be avoided as the daemon will be blocked from processing requests whilst the coldplug delay is being performed.

Parameters

plugin

A FuPlugin

 

duration

A delay in milliseconds

 

Since: 0.8.0


fu_plugin_cache_lookup ()

gpointer
fu_plugin_cache_lookup (FuPlugin *plugin,
                        const gchar *id);

Finds an object in the per-plugin cache.

Parameters

plugin

A FuPlugin

 

id

the key

 

Returns

a GObject, or NULL for unfound.

[transfer none]

Since: 0.8.0


fu_plugin_cache_remove ()

void
fu_plugin_cache_remove (FuPlugin *plugin,
                        const gchar *id);

Removes an object from the per-plugin cache.

Parameters

plugin

A FuPlugin

 

id

the key

 

Since: 0.8.0


fu_plugin_cache_add ()

void
fu_plugin_cache_add (FuPlugin *plugin,
                     const gchar *id,
                     gpointer dev);

Adds an object to the per-plugin cache.

Parameters

plugin

A FuPlugin

 

id

the key

 

dev

a GObject, typically a FuDevice

 

Since: 0.8.0


fu_plugin_check_hwid ()

gboolean
fu_plugin_check_hwid (FuPlugin *plugin,
                      const gchar *hwid);

Checks to see if a specific GUID exists. All hardware IDs on a specific system can be shown using the fwupdmgr hwids command.

Parameters

plugin

A FuPlugin

 

hwid

A Hardware ID GUID, e.g. 6de5d951-d755-576b-bd09-c5cf66b27234

 

Returns

TRUE if the HwId is found on the system.

Since: 0.9.1


fu_plugin_check_supported ()

gboolean
fu_plugin_check_supported (FuPlugin *plugin,
                           const gchar *guid);

Checks to see if a specific device GUID is supported, i.e. available in the AppStream metadata.

Parameters

plugin

A FuPlugin

 

guid

A Hardware ID GUID, e.g. 6de5d951-d755-576b-bd09-c5cf66b27234

 

Returns

TRUE if the device is supported.

Since: 1.0.0


fu_plugin_get_dmi_value ()

const gchar *
fu_plugin_get_dmi_value (FuPlugin *plugin,
                         const gchar *dmi_id);

Gets a hardware DMI value.

Parameters

plugin

A FuPlugin

 

dmi_id

A DMI ID, e.g. BiosVersion

 

Returns

The string, or NULL

Since: 0.9.7


fu_plugin_get_smbios_string ()

const gchar *
fu_plugin_get_smbios_string (FuPlugin *plugin,
                             guint8 structure_type,
                             guint8 offset);

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

Parameters

plugin

A FuPlugin

 

structure_type

A SMBIOS structure type, e.g. FU_SMBIOS_STRUCTURE_TYPE_BIOS

 

offset

A SMBIOS offset

 

Returns

A string, or NULL

Since: 0.9.8


fu_plugin_get_smbios_data ()

GBytes *
fu_plugin_get_smbios_data (FuPlugin *plugin,
                           guint8 structure_type);

Gets a hardware SMBIOS data.

Parameters

plugin

A FuPlugin

 

structure_type

A SMBIOS structure type, e.g. FU_SMBIOS_STRUCTURE_TYPE_BIOS

 

Returns

A GBytes, or NULL.

[transfer none]

Since: 0.9.8


fu_plugin_add_rule ()

void
fu_plugin_add_rule (FuPlugin *plugin,
                    FuPluginRule rule,
                    const gchar *name);

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.

Parameters

plugin

a FuPlugin

 

rule

a FuPluginRule, e.g. FU_PLUGIN_RULE_CONFLICTS

 

name

a plugin name, e.g. upower

 

Types and Values

FU_TYPE_PLUGIN

#define FU_TYPE_PLUGIN (fu_plugin_get_type ())

struct FuPluginClass

struct FuPluginClass {
	GObjectClass	 parent_class;
	/* signals */
	void		 (* device_added)		(FuPlugin *plugin,
							 FuDevice *device);
	void		 (* device_removed)		(FuPlugin *plugin,
							 FuDevice *device);
	void		 (* status_changed)		(FuPlugin *plugin,
							 FwupdStatus	 status);
	void		 (* percentage_changed)		(FuPlugin *plugin,
							 guint		 percentage);
	void		 (* recoldplug)			(FuPlugin *plugin);
	void		 (* set_coldplug_delay)		(FuPlugin *plugin,
							 guint		 duration);
	void		 (* device_register)		(FuPlugin *plugin,
							 FuDevice *device);
};

enum FuPluginVerifyFlags

Flags used when verifying, currently unused.

Members

FU_PLUGIN_VERIFY_FLAG_NONE

No flags set

 

enum FuPluginRule

The rules used for ordering plugins. Plugins are expected to add rules in fu_plugin_initialize().

Members

FU_PLUGIN_RULE_CONFLICTS

The plugin conflicts with another

 

FU_PLUGIN_RULE_RUN_AFTER

Order the plugin after another

 

FU_PLUGIN_RULE_RUN_BEFORE

Order the plugin before another

 

FuPluginData

typedef struct FuPluginData FuPluginData;

FuPlugin

typedef struct _FuPlugin FuPlugin;