mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-13 23:06:29 +00:00
Make the 'id' for fu_plugin_add_firmware_gtype() optional
We can work out the correct value automatically in all cases but one, and it's less for the plugin author to get wrong...
This commit is contained in:
parent
2e5c1d15bc
commit
9f71fe3dc9
@ -1753,14 +1753,32 @@ fu_plugin_set_device_gtype (FuPlugin *self, GType device_gtype)
|
||||
priv->device_gtype = device_gtype;
|
||||
}
|
||||
|
||||
static gchar *
|
||||
fu_common_string_uncamelcase (const gchar *str)
|
||||
{
|
||||
GString *tmp = g_string_new (NULL);
|
||||
for (guint i = 0; str[i] != '\0'; i++) {
|
||||
if (g_ascii_islower (str[i]) ||
|
||||
g_ascii_isdigit (str[i])) {
|
||||
g_string_append_c (tmp, str[i]);
|
||||
continue;
|
||||
}
|
||||
if (i > 0)
|
||||
g_string_append_c (tmp, '-');
|
||||
g_string_append_c (tmp, g_ascii_tolower (str[i]));
|
||||
}
|
||||
return g_string_free (tmp, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
* fu_plugin_add_firmware_gtype:
|
||||
* @self: a #FuPlugin
|
||||
* @id: A string describing the type
|
||||
* @gtype: a #GType `FU_TYPE_DEVICE`
|
||||
* @id: (nullable): An optional string describing the type, e.g. "ihex"
|
||||
* @gtype: a #GType e.g. `FU_TYPE_FOO_FIRMWARE`
|
||||
*
|
||||
* Adds a firmware #GType which is used when creating devices. If @id is not
|
||||
* specified then it is guessed using the #GType name.
|
||||
*
|
||||
* Adds a firmware #GType which is used when creating devices.
|
||||
* *
|
||||
* Plugins can use this method only in fu_plugin_init()
|
||||
*
|
||||
* Since: 1.3.3
|
||||
@ -1768,7 +1786,17 @@ fu_plugin_set_device_gtype (FuPlugin *self, GType device_gtype)
|
||||
void
|
||||
fu_plugin_add_firmware_gtype (FuPlugin *self, const gchar *id, GType gtype)
|
||||
{
|
||||
g_signal_emit (self, signals[SIGNAL_ADD_FIRMWARE_GTYPE], 0, id, gtype);
|
||||
g_autofree gchar *id_safe = NULL;
|
||||
if (id != NULL) {
|
||||
id_safe = g_strdup (id);
|
||||
} else {
|
||||
GString *str = g_string_new (g_type_name (gtype));
|
||||
if (g_str_has_prefix (str->str, "Fu"))
|
||||
g_string_erase (str, 0, 2);
|
||||
fu_common_string_replace (str, "Firmware", "");
|
||||
id_safe = fu_common_string_uncamelcase (str->str);
|
||||
}
|
||||
g_signal_emit (self, signals[SIGNAL_ADD_FIRMWARE_GTYPE], 0, id_safe, gtype);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_ALTOS_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "altos", FU_TYPE_ALTOS_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_ALTOS_FIRMWARE);
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_add_udev_subsystem (plugin, "pci");
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_BCM57XX_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "bcm57xx", FU_TYPE_BCM57XX_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_BCM57XX_FIRMWARE);
|
||||
fu_plugin_add_rule (plugin, FU_PLUGIN_RULE_BETTER_THAN, "optionrom");
|
||||
g_type_ensure (FU_TYPE_BCM57XX_DICT_IMAGE);
|
||||
g_type_ensure (FU_TYPE_BCM57XX_STAGE1_IMAGE);
|
||||
|
@ -19,8 +19,8 @@ void
|
||||
fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_add_firmware_gtype (plugin, "ccgx", FU_TYPE_CCGX_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "ccgx", FU_TYPE_CCGX_DMC_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_CCGX_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_CCGX_DMC_FIRMWARE);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_CCGX_HID_DEVICE);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_CCGX_HPI_DEVICE);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_CCGX_DMC_DEVICE);
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_CROS_EC_USB_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "cros-ec", FU_TYPE_CROS_EC_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_CROS_EC_FIRMWARE);
|
||||
}
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_EBITDO_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "8bitdo", FU_TYPE_EBITDO_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_EBITDO_FIRMWARE);
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_add_udev_subsystem (plugin, "i2c-dev");
|
||||
fu_plugin_add_udev_subsystem (plugin, "hidraw");
|
||||
fu_plugin_add_firmware_gtype (plugin, "elantp", FU_TYPE_ELANTP_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_ELANTP_FIRMWARE);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_ELANTP_I2C_DEVICE);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_ELANTP_HID_DEVICE);
|
||||
}
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_EP963X_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "ep963x", FU_TYPE_EP963X_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_EP963X_FIRMWARE);
|
||||
}
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_FRESCO_PD_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "fresco-pd", FU_TYPE_FRESCO_PD_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_FRESCO_PD_FIRMWARE);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ void
|
||||
fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_add_firmware_gtype (plugin, "hailuck", FU_TYPE_HAILUCK_KBD_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_HAILUCK_KBD_FIRMWARE);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_HAILUCK_BL_DEVICE);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_HAILUCK_KBD_DEVICE);
|
||||
}
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_SOLOKEY_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "solokey", FU_TYPE_SOLOKEY_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_SOLOKEY_FIRMWARE);
|
||||
}
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_SYNAPTICS_CXAUDIO_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "conexant", FU_TYPE_SYNAPTICS_CXAUDIO_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_SYNAPTICS_CXAUDIO_FIRMWARE);
|
||||
}
|
||||
|
@ -17,5 +17,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_SYNAPROM_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "synaprom", FU_TYPE_SYNAPROM_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_SYNAPROM_FIRMWARE);
|
||||
}
|
||||
|
@ -18,5 +18,5 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_add_udev_subsystem (plugin, "hidraw");
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_SYNAPTICS_RMI_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "rmi", FU_TYPE_SYNAPTICS_RMI_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_SYNAPTICS_RMI_FIRMWARE);
|
||||
}
|
||||
|
@ -77,8 +77,8 @@ fu_plugin_init (FuPlugin *plugin)
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_add_udev_subsystem (plugin, "thunderbolt");
|
||||
fu_plugin_set_device_gtype (plugin, FU_TYPE_THUNDERBOLT_DEVICE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "thunderbolt", FU_TYPE_THUNDERBOLT_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "thunderbolt-update", FU_TYPE_THUNDERBOLT_FIRMWARE_UPDATE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_THUNDERBOLT_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_THUNDERBOLT_FIRMWARE_UPDATE);
|
||||
/* dell-dock plugin uses a slower bus for flashing */
|
||||
fu_plugin_add_rule (plugin, FU_PLUGIN_RULE_BETTER_THAN, "dell_dock");
|
||||
}
|
||||
|
@ -18,8 +18,8 @@ void
|
||||
fu_plugin_init (FuPlugin *plugin)
|
||||
{
|
||||
fu_plugin_set_build_hash (plugin, FU_BUILD_HASH);
|
||||
fu_plugin_add_firmware_gtype (plugin, "vli-usbhub", FU_TYPE_VLI_USBHUB_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, "vli-pd", FU_TYPE_VLI_PD_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_VLI_USBHUB_FIRMWARE);
|
||||
fu_plugin_add_firmware_gtype (plugin, NULL, FU_TYPE_VLI_PD_FIRMWARE);
|
||||
|
||||
/* register the custom types */
|
||||
g_type_ensure (FU_TYPE_VLI_USBHUB_DEVICE);
|
||||
|
Loading…
Reference in New Issue
Block a user