aboutsummaryrefslogtreecommitdiff
path: root/src/mm-iface-modem-firmware.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2020-11-14 23:17:00 +0100
committerAleksander Morgado <aleksander@aleksander.es>2020-11-16 11:28:46 +0100
commit047805348db1fdaac4c24b6ea4f4d382e6bc03c8 (patch)
tree0a48b6d19086b1f3aeda773524b70d27e22e53a1 /src/mm-iface-modem-firmware.c
parentc7016f8933a265d9cb325b9d65eab4eecaffd0e4 (diff)
iface-modem-firmware: allow plugins to ignore carrier info
Skip building the firmware version information with carrier config information if the plugin already knows that the firmware upgrade method doesn't implement carrier-specific upgrade paths.
Diffstat (limited to 'src/mm-iface-modem-firmware.c')
-rw-r--r--src/mm-iface-modem-firmware.c43
1 files changed, 30 insertions, 13 deletions
diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c
index 5cd710b2..d363f929 100644
--- a/src/mm-iface-modem-firmware.c
+++ b/src/mm-iface-modem-firmware.c
@@ -297,18 +297,23 @@ add_generic_version (MMBaseModem *self,
MMFirmwareUpdateSettings *update_settings,
GError **error)
{
- const gchar *firmware_revision;
- const gchar *carrier_revision;
- gchar *combined;
+ const gchar *firmware_revision;
+ const gchar *carrier_revision = NULL;
+ g_autofree gchar *combined = NULL;
+ gboolean ignore_carrier = FALSE;
firmware_revision = mm_iface_modem_get_revision (MM_IFACE_MODEM (self));
if (!firmware_revision) {
- g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
- "Unknown revision");
+ g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Unknown revision");
return FALSE;
}
- mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), NULL, &carrier_revision);
+ g_object_get (self,
+ MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER, &ignore_carrier,
+ NULL);
+
+ if (!ignore_carrier)
+ mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), NULL, &carrier_revision);
if (!carrier_revision) {
mm_firmware_update_settings_set_version (update_settings, firmware_revision);
@@ -317,7 +322,6 @@ add_generic_version (MMBaseModem *self,
combined = g_strdup_printf ("%s - %s", firmware_revision, carrier_revision);
mm_firmware_update_settings_set_version (update_settings, combined);
- g_free (combined);
return TRUE;
}
@@ -332,9 +336,10 @@ add_generic_device_ids (MMBaseModem *self,
guint16 rid;
MMPort *primary = NULL;
const gchar *subsystem;
- const gchar *aux;
+ const gchar *carrier_config = NULL;
g_autoptr(GPtrArray) ids = NULL;
guint i;
+ gboolean ignore_carrier = FALSE;
vid = mm_base_modem_get_vendor_id (self);
pid = mm_base_modem_get_product_id (self);
@@ -370,16 +375,20 @@ add_generic_device_ids (MMBaseModem *self,
return FALSE;
}
- mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), &aux, NULL);
+ g_object_get (self,
+ MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER, &ignore_carrier,
+ NULL);
+
+ if (!ignore_carrier)
+ mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), &carrier_config, NULL);
ids = g_ptr_array_new_with_free_func (g_free);
- if (aux) {
- gchar *carrier;
+ if (carrier_config) {
+ g_autofree gchar *carrier = NULL;
- carrier = g_ascii_strup (aux, -1);
+ carrier = g_ascii_strup (carrier_config, -1);
g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X&REV_%04X&CARRIER_%s",
supported_subsystems[i], vid, pid, rid, carrier));
- g_free (carrier);
}
g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X&REV_%04X",
supported_subsystems[i], vid, pid, rid));
@@ -563,6 +572,14 @@ iface_modem_firmware_init (gpointer g_iface)
MM_GDBUS_TYPE_MODEM_FIRMWARE_SKELETON,
G_PARAM_READWRITE));
+ g_object_interface_install_property
+ (g_iface,
+ g_param_spec_boolean (MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER,
+ "Ignore carrier info in firmware details",
+ "Whether carrier info (version, name) should be ignored when showing the firmware details",
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
initialized = TRUE;
}