diff --git a/src/fu-device-private.h b/src/fu-device-private.h index f75a5bad7..0b928630a 100644 --- a/src/fu-device-private.h +++ b/src/fu-device-private.h @@ -26,7 +26,6 @@ G_BEGIN_DECLS -gchar *fu_device_to_string (FuDevice *device); const gchar *fu_device_get_version_new (FuDevice *device); void fu_device_set_version_new (FuDevice *device, const gchar *version_new); diff --git a/src/fu-device.c b/src/fu-device.c index 0813e9019..80fc9b324 100644 --- a/src/fu-device.c +++ b/src/fu-device.c @@ -626,6 +626,7 @@ fu_device_set_progress (FuDevice *device, guint progress) gchar * fu_device_to_string (FuDevice *device) { + FuDeviceClass *klass = FU_DEVICE_GET_CLASS (device); FuDevicePrivate *priv = GET_PRIVATE (device); GString *str = g_string_new (""); g_autofree gchar *tmp = NULL; @@ -648,6 +649,11 @@ fu_device_to_string (FuDevice *device) const gchar *value = g_hash_table_lookup (priv->metadata, key); fwupd_pad_kv_str (str, key, value); } + + /* subclassed */ + if (klass->to_string != NULL) + klass->to_string (device, str); + return g_string_free (str, FALSE); } diff --git a/src/fu-device.h b/src/fu-device.h index 18b21b51c..9f8416257 100644 --- a/src/fu-device.h +++ b/src/fu-device.h @@ -33,6 +33,8 @@ G_DECLARE_DERIVABLE_TYPE (FuDevice, fu_device, FU, DEVICE, FwupdDevice) struct _FuDeviceClass { FwupdDeviceClass parent_class; + void (*to_string) (FuDevice *device, + GString *str); }; /** @@ -94,6 +96,7 @@ FuDevice *fu_device_new (void); #define fu_device_get_flashes_left(d) fwupd_device_get_flashes_left(FWUPD_DEVICE(d)) /* accessors */ +gchar *fu_device_to_string (FuDevice *device); const gchar *fu_device_get_equivalent_id (FuDevice *device); void fu_device_set_equivalent_id (FuDevice *device, const gchar *equivalent_id);