firmware: export a device id containing the carrier info

In order to support different per-carrier upgrade paths in fwupd.
This commit is contained in:
Aleksander Morgado
2018-12-18 16:22:52 +01:00
parent 147facd2ec
commit c479d036f7
3 changed files with 32 additions and 2 deletions

View File

@@ -311,6 +311,7 @@ add_generic_device_ids (MMBaseModem *self,
GPtrArray *ids;
MMPort *primary = NULL;
const gchar *subsystem;
const gchar *aux;
vid = mm_base_modem_get_vendor_id (self);
pid = mm_base_modem_get_product_id (self);
@@ -334,7 +335,17 @@ add_generic_device_ids (MMBaseModem *self,
return FALSE;
}
/* carrier = g_ascii_strup (mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self)), -1); */
aux = mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self));
ids = g_ptr_array_new_with_free_func ((GDestroyNotify)g_free);
if (aux) {
gchar *carrier;
carrier = g_ascii_strup (aux, -1);
g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X&PID_%04X&REV_%04X&CARRIER_%s", vid, pid, rid, carrier));
g_free (carrier);
}
g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X&PID_%04X&REV_%04X", vid, pid, rid));
g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X&PID_%04X", vid, pid));
g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X", vid));

View File

@@ -5452,6 +5452,24 @@ mm_iface_modem_get_revision (MMIfaceModem *self)
return revision;
}
const gchar *
mm_iface_modem_get_carrier_config (MMIfaceModem *self)
{
const gchar *carrier_config = NULL;
MmGdbusModem *skeleton;
g_object_get (self,
MM_IFACE_MODEM_DBUS_SKELETON, &skeleton,
NULL);
if (skeleton) {
carrier_config = mm_gdbus_modem_get_carrier_configuration (skeleton);
g_object_unref (skeleton);
}
return carrier_config;
}
/*****************************************************************************/
static void

View File

@@ -402,6 +402,7 @@ gboolean mm_iface_modem_is_4g_only (MMIfaceModem *self);
/* Helpers to query properties */
const gchar *mm_iface_modem_get_model (MMIfaceModem *self);
const gchar *mm_iface_modem_get_revision (MMIfaceModem *self);
const gchar *mm_iface_modem_get_carrier_config (MMIfaceModem *self);
/* Initialize Modem interface (async) */
void mm_iface_modem_initialize (MMIfaceModem *self,