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.
This commit is contained in:
@@ -126,6 +126,7 @@ enum {
|
|||||||
PROP_MODEM_PERIODIC_ACCESS_TECH_CHECK_DISABLED,
|
PROP_MODEM_PERIODIC_ACCESS_TECH_CHECK_DISABLED,
|
||||||
PROP_MODEM_PERIODIC_CALL_LIST_CHECK_DISABLED,
|
PROP_MODEM_PERIODIC_CALL_LIST_CHECK_DISABLED,
|
||||||
PROP_MODEM_CARRIER_CONFIG_MAPPING,
|
PROP_MODEM_CARRIER_CONFIG_MAPPING,
|
||||||
|
PROP_MODEM_FIRMWARE_IGNORE_CARRIER,
|
||||||
PROP_FLOW_CONTROL,
|
PROP_FLOW_CONTROL,
|
||||||
PROP_INDICATORS_DISABLED,
|
PROP_INDICATORS_DISABLED,
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
@@ -253,7 +254,8 @@ struct _MMBroadbandModemPrivate {
|
|||||||
|
|
||||||
/*<--- Modem Firmware interface --->*/
|
/*<--- Modem Firmware interface --->*/
|
||||||
/* Properties */
|
/* Properties */
|
||||||
GObject *modem_firmware_dbus_skeleton;
|
GObject *modem_firmware_dbus_skeleton;
|
||||||
|
gboolean modem_firmware_ignore_carrier;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@@ -12110,6 +12112,9 @@ set_property (GObject *object,
|
|||||||
case PROP_MODEM_CARRIER_CONFIG_MAPPING:
|
case PROP_MODEM_CARRIER_CONFIG_MAPPING:
|
||||||
self->priv->carrier_config_mapping = g_value_dup_string (value);
|
self->priv->carrier_config_mapping = g_value_dup_string (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_MODEM_FIRMWARE_IGNORE_CARRIER:
|
||||||
|
self->priv->modem_firmware_ignore_carrier = g_value_get_boolean (value);
|
||||||
|
break;
|
||||||
case PROP_FLOW_CONTROL:
|
case PROP_FLOW_CONTROL:
|
||||||
self->priv->flow_control = g_value_get_flags (value);
|
self->priv->flow_control = g_value_get_flags (value);
|
||||||
break;
|
break;
|
||||||
@@ -12248,6 +12253,9 @@ get_property (GObject *object,
|
|||||||
case PROP_MODEM_CARRIER_CONFIG_MAPPING:
|
case PROP_MODEM_CARRIER_CONFIG_MAPPING:
|
||||||
g_value_set_string (value, self->priv->carrier_config_mapping);
|
g_value_set_string (value, self->priv->carrier_config_mapping);
|
||||||
break;
|
break;
|
||||||
|
case PROP_MODEM_FIRMWARE_IGNORE_CARRIER:
|
||||||
|
g_value_set_boolean (value, self->priv->modem_firmware_ignore_carrier);
|
||||||
|
break;
|
||||||
case PROP_FLOW_CONTROL:
|
case PROP_FLOW_CONTROL:
|
||||||
g_value_set_flags (value, self->priv->flow_control);
|
g_value_set_flags (value, self->priv->flow_control);
|
||||||
break;
|
break;
|
||||||
@@ -12843,6 +12851,10 @@ mm_broadband_modem_class_init (MMBroadbandModemClass *klass)
|
|||||||
PROP_MODEM_CARRIER_CONFIG_MAPPING,
|
PROP_MODEM_CARRIER_CONFIG_MAPPING,
|
||||||
MM_IFACE_MODEM_CARRIER_CONFIG_MAPPING);
|
MM_IFACE_MODEM_CARRIER_CONFIG_MAPPING);
|
||||||
|
|
||||||
|
g_object_class_override_property (object_class,
|
||||||
|
PROP_MODEM_FIRMWARE_IGNORE_CARRIER,
|
||||||
|
MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER);
|
||||||
|
|
||||||
properties[PROP_FLOW_CONTROL] =
|
properties[PROP_FLOW_CONTROL] =
|
||||||
g_param_spec_flags (MM_BROADBAND_MODEM_FLOW_CONTROL,
|
g_param_spec_flags (MM_BROADBAND_MODEM_FLOW_CONTROL,
|
||||||
"Flow control",
|
"Flow control",
|
||||||
|
@@ -297,18 +297,23 @@ add_generic_version (MMBaseModem *self,
|
|||||||
MMFirmwareUpdateSettings *update_settings,
|
MMFirmwareUpdateSettings *update_settings,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
const gchar *firmware_revision;
|
const gchar *firmware_revision;
|
||||||
const gchar *carrier_revision;
|
const gchar *carrier_revision = NULL;
|
||||||
gchar *combined;
|
g_autofree gchar *combined = NULL;
|
||||||
|
gboolean ignore_carrier = FALSE;
|
||||||
|
|
||||||
firmware_revision = mm_iface_modem_get_revision (MM_IFACE_MODEM (self));
|
firmware_revision = mm_iface_modem_get_revision (MM_IFACE_MODEM (self));
|
||||||
if (!firmware_revision) {
|
if (!firmware_revision) {
|
||||||
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
|
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Unknown revision");
|
||||||
"Unknown revision");
|
|
||||||
return FALSE;
|
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) {
|
if (!carrier_revision) {
|
||||||
mm_firmware_update_settings_set_version (update_settings, firmware_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);
|
combined = g_strdup_printf ("%s - %s", firmware_revision, carrier_revision);
|
||||||
mm_firmware_update_settings_set_version (update_settings, combined);
|
mm_firmware_update_settings_set_version (update_settings, combined);
|
||||||
g_free (combined);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,9 +336,10 @@ add_generic_device_ids (MMBaseModem *self,
|
|||||||
guint16 rid;
|
guint16 rid;
|
||||||
MMPort *primary = NULL;
|
MMPort *primary = NULL;
|
||||||
const gchar *subsystem;
|
const gchar *subsystem;
|
||||||
const gchar *aux;
|
const gchar *carrier_config = NULL;
|
||||||
g_autoptr(GPtrArray) ids = NULL;
|
g_autoptr(GPtrArray) ids = NULL;
|
||||||
guint i;
|
guint i;
|
||||||
|
gboolean ignore_carrier = FALSE;
|
||||||
|
|
||||||
vid = mm_base_modem_get_vendor_id (self);
|
vid = mm_base_modem_get_vendor_id (self);
|
||||||
pid = mm_base_modem_get_product_id (self);
|
pid = mm_base_modem_get_product_id (self);
|
||||||
@@ -370,16 +375,20 @@ add_generic_device_ids (MMBaseModem *self,
|
|||||||
return FALSE;
|
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);
|
ids = g_ptr_array_new_with_free_func (g_free);
|
||||||
if (aux) {
|
if (carrier_config) {
|
||||||
gchar *carrier;
|
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",
|
g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X&REV_%04X&CARRIER_%s",
|
||||||
supported_subsystems[i], vid, pid, rid, carrier));
|
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",
|
g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X&REV_%04X",
|
||||||
supported_subsystems[i], vid, pid, rid));
|
supported_subsystems[i], vid, pid, rid));
|
||||||
@@ -563,6 +572,14 @@ iface_modem_firmware_init (gpointer g_iface)
|
|||||||
MM_GDBUS_TYPE_MODEM_FIRMWARE_SKELETON,
|
MM_GDBUS_TYPE_MODEM_FIRMWARE_SKELETON,
|
||||||
G_PARAM_READWRITE));
|
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;
|
initialized = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,7 +27,8 @@
|
|||||||
#define MM_IS_IFACE_MODEM_FIRMWARE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_IFACE_MODEM_FIRMWARE))
|
#define MM_IS_IFACE_MODEM_FIRMWARE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_IFACE_MODEM_FIRMWARE))
|
||||||
#define MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MM_TYPE_IFACE_MODEM_FIRMWARE, MMIfaceModemFirmware))
|
#define MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MM_TYPE_IFACE_MODEM_FIRMWARE, MMIfaceModemFirmware))
|
||||||
|
|
||||||
#define MM_IFACE_MODEM_FIRMWARE_DBUS_SKELETON "iface-modem-firmware-dbus-skeleton"
|
#define MM_IFACE_MODEM_FIRMWARE_DBUS_SKELETON "iface-modem-firmware-dbus-skeleton"
|
||||||
|
#define MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER "iface-modem-firmware-ignore-carrier"
|
||||||
|
|
||||||
typedef struct _MMIfaceModemFirmware MMIfaceModemFirmware;
|
typedef struct _MMIfaceModemFirmware MMIfaceModemFirmware;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user