api,modem: new 'IgnoredPorts' property

Expose a new list of 'IgnoredPorts' via D-Bus and therefore remove the use of `MM_MODEM_PORT_TYPE_IGNORED`

Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
This commit is contained in:
Lukas Voegl
2025-04-25 09:37:16 +02:00
parent 39123f964b
commit 436081648b
34 changed files with 235 additions and 62 deletions
+7
View File
@@ -316,8 +316,11 @@ print_modem_info (void)
MMModemBand *bands = NULL; MMModemBand *bands = NULL;
guint n_bands = 0; guint n_bands = 0;
MMModemPortInfo *ports = NULL; MMModemPortInfo *ports = NULL;
MMModemPortInfo *ignored_ports = NULL;
guint n_ports = 0; guint n_ports = 0;
guint n_ignored_ports = 0;
gchar *ports_string; gchar *ports_string;
gchar *ignored_ports_string;
MMUnlockRetries *unlock_retries; MMUnlockRetries *unlock_retries;
guint signal_quality = 0; guint signal_quality = 0;
gboolean signal_quality_recent = FALSE; gboolean signal_quality_recent = FALSE;
@@ -343,6 +346,8 @@ print_modem_info (void)
g_free (bands); g_free (bands);
mm_modem_get_ports (ctx->modem, &ports, &n_ports); mm_modem_get_ports (ctx->modem, &ports, &n_ports);
ports_string = mm_common_build_ports_string (ports, n_ports); ports_string = mm_common_build_ports_string (ports, n_ports);
mm_modem_get_ignored_ports (ctx->modem, &ignored_ports, &n_ignored_ports);
ignored_ports_string = mm_common_build_ports_string (ignored_ports, n_ignored_ports);
mm_modem_port_info_array_free (ports, n_ports); mm_modem_port_info_array_free (ports, n_ports);
if (mm_modem_get_current_modes (ctx->modem, &allowed_modes, &preferred_mode)) { if (mm_modem_get_current_modes (ctx->modem, &allowed_modes, &preferred_mode)) {
allowed_modes_string = mm_modem_mode_build_string_from_mask (allowed_modes); allowed_modes_string = mm_modem_mode_build_string_from_mask (allowed_modes);
@@ -376,6 +381,7 @@ print_modem_info (void)
mmcli_output_string (MMC_F_SYSTEM_PLUGIN, mm_modem_get_plugin (ctx->modem)); mmcli_output_string (MMC_F_SYSTEM_PLUGIN, mm_modem_get_plugin (ctx->modem));
mmcli_output_string (MMC_F_SYSTEM_PRIMARY_PORT, mm_modem_get_primary_port (ctx->modem)); mmcli_output_string (MMC_F_SYSTEM_PRIMARY_PORT, mm_modem_get_primary_port (ctx->modem));
mmcli_output_string_list (MMC_F_SYSTEM_PORTS, ports_string); mmcli_output_string_list (MMC_F_SYSTEM_PORTS, ports_string);
mmcli_output_string_list (MMC_F_SYSTEM_IGNORED_PORTS, ignored_ports_string);
mmcli_output_string_array (MMC_F_NUMBERS_OWN, (const gchar **) mm_modem_get_own_numbers (ctx->modem), FALSE); mmcli_output_string_array (MMC_F_NUMBERS_OWN, (const gchar **) mm_modem_get_own_numbers (ctx->modem), FALSE);
@@ -540,6 +546,7 @@ print_modem_info (void)
mmcli_output_dump (); mmcli_output_dump ();
g_free (ports_string); g_free (ports_string);
g_free (ignored_ports_string);
g_free (supported_ip_families_string); g_free (supported_ip_families_string);
g_free (current_bands_string); g_free (current_bands_string);
g_free (supported_bands_string); g_free (supported_bands_string);
+1
View File
@@ -120,6 +120,7 @@ static FieldInfo field_infos[] = {
[MMC_F_SYSTEM_PLUGIN] = { "modem.generic.plugin", "plugin", MMC_S_MODEM_SYSTEM, }, [MMC_F_SYSTEM_PLUGIN] = { "modem.generic.plugin", "plugin", MMC_S_MODEM_SYSTEM, },
[MMC_F_SYSTEM_PRIMARY_PORT] = { "modem.generic.primary-port", "primary port", MMC_S_MODEM_SYSTEM, }, [MMC_F_SYSTEM_PRIMARY_PORT] = { "modem.generic.primary-port", "primary port", MMC_S_MODEM_SYSTEM, },
[MMC_F_SYSTEM_PORTS] = { "modem.generic.ports", "ports", MMC_S_MODEM_SYSTEM, }, [MMC_F_SYSTEM_PORTS] = { "modem.generic.ports", "ports", MMC_S_MODEM_SYSTEM, },
[MMC_F_SYSTEM_IGNORED_PORTS] = { "modem.generic.ignored-ports", "ignored ports", MMC_S_MODEM_SYSTEM, },
[MMC_F_NUMBERS_OWN] = { "modem.generic.own-numbers", "own", MMC_S_MODEM_NUMBERS, }, [MMC_F_NUMBERS_OWN] = { "modem.generic.own-numbers", "own", MMC_S_MODEM_NUMBERS, },
[MMC_F_STATUS_LOCK] = { "modem.generic.unlock-required", "lock", MMC_S_MODEM_STATUS, }, [MMC_F_STATUS_LOCK] = { "modem.generic.unlock-required", "lock", MMC_S_MODEM_STATUS, },
[MMC_F_STATUS_UNLOCK_RETRIES] = { "modem.generic.unlock-retries", "unlock retries", MMC_S_MODEM_STATUS, }, [MMC_F_STATUS_UNLOCK_RETRIES] = { "modem.generic.unlock-retries", "unlock retries", MMC_S_MODEM_STATUS, },
+1
View File
@@ -114,6 +114,7 @@ typedef enum {
MMC_F_SYSTEM_PLUGIN, MMC_F_SYSTEM_PLUGIN,
MMC_F_SYSTEM_PRIMARY_PORT, MMC_F_SYSTEM_PRIMARY_PORT,
MMC_F_SYSTEM_PORTS, MMC_F_SYSTEM_PORTS,
MMC_F_SYSTEM_IGNORED_PORTS,
/* Numbers section */ /* Numbers section */
MMC_F_NUMBERS_OWN, MMC_F_NUMBERS_OWN,
/* Status section */ /* Status section */
@@ -2822,6 +2822,8 @@ mm_gdbus_modem_get_primary_port
mm_gdbus_modem_dup_primary_port mm_gdbus_modem_dup_primary_port
mm_gdbus_modem_get_ports mm_gdbus_modem_get_ports
mm_gdbus_modem_dup_ports mm_gdbus_modem_dup_ports
mm_gdbus_modem_get_ignored_ports
mm_gdbus_modem_dup_ignored_ports
mm_gdbus_modem_get_revision mm_gdbus_modem_get_revision
mm_gdbus_modem_dup_revision mm_gdbus_modem_dup_revision
mm_gdbus_modem_get_carrier_configuration mm_gdbus_modem_get_carrier_configuration
@@ -2908,6 +2910,7 @@ mm_gdbus_modem_set_own_numbers
mm_gdbus_modem_set_plugin mm_gdbus_modem_set_plugin
mm_gdbus_modem_set_primary_port mm_gdbus_modem_set_primary_port
mm_gdbus_modem_set_ports mm_gdbus_modem_set_ports
mm_gdbus_modem_set_ignored_ports
mm_gdbus_modem_set_revision mm_gdbus_modem_set_revision
mm_gdbus_modem_set_carrier_configuration mm_gdbus_modem_set_carrier_configuration
mm_gdbus_modem_set_carrier_configuration_revision mm_gdbus_modem_set_carrier_configuration_revision
@@ -973,15 +973,27 @@
<!-- <!--
Ports: Ports:
The list of ports in the modem, given as an array of string and unsigned The list of used ports in the modem, given as an array of string and
integer pairs. The string is the port name or path, and the integer is unsigned integer pairs. The string is the port name or path, and the
the port type given as a integer is the port type given as a
<link linkend="MMModemPortType">MMModemPortType</link> value. <link linkend="MMModemPortType">MMModemPortType</link> value.
Since: 1.0 Since: 1.0
--> -->
<property name="Ports" type="a(su)" access="read" /> <property name="Ports" type="a(su)" access="read" />
<!--
IgnoredPorts:
The list of ignored ports in the modem, given as an array of string and
unsigned integer pairs. The string is the port name or path, and the
integer is the port type given as a
<link linkend="MMModemPortType">MMModemPortType</link> value.
Since: 1.26
-->
<property name="IgnoredPorts" type="a(su)" access="read" />
<!-- <!--
EquipmentIdentifier: EquipmentIdentifier:
+42 -1
View File
@@ -47,6 +47,7 @@ struct _MMModemPrivate {
GMutex mutex; GMutex mutex;
PROPERTY_ARRAY_DECLARE (ports) PROPERTY_ARRAY_DECLARE (ports)
PROPERTY_ARRAY_DECLARE (ignored_ports)
PROPERTY_ARRAY_DECLARE (supported_modes) PROPERTY_ARRAY_DECLARE (supported_modes)
PROPERTY_ARRAY_DECLARE (supported_capabilities) PROPERTY_ARRAY_DECLARE (supported_capabilities)
PROPERTY_ARRAY_DECLARE (supported_bands) PROPERTY_ARRAY_DECLARE (supported_bands)
@@ -984,7 +985,7 @@ mm_modem_dup_primary_port (MMModem *self)
* mm_modem_port_info_array_free() when no longer needed. * mm_modem_port_info_array_free() when no longer needed.
* @n_ports: (out): Return location for the number of values in @ports. * @n_ports: (out): Return location for the number of values in @ports.
* *
* Gets the list of ports in the modem. * Gets the list of used ports in the modem.
* *
* Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise. * Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise.
* *
@@ -999,6 +1000,44 @@ PROPERTY_ARRAY_DEFINE_DEEP (ports,
/*****************************************************************************/ /*****************************************************************************/
/**
* mm_modem_peek_ignored_ports:
* @self: A #MMModem.
* @ports: (out) (array length=n_ports) (transfer none): Return location for the
* array of #MMModemPortInfo values. Do not free the returned value, it is
* owned by @self.
* @n_ports: (out): Return location for the number of values in @ports.
*
* Gets the list of ignored ports in the modem.
*
* Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise.
*
* Since: 1.26
*/
/**
* mm_modem_get_ignored_ports:
* @self: A #MMModem.
* @ports: (out) (array length=n_ports): Return location for the array of
* #MMModemPortInfo values. The returned array should be freed with
* mm_modem_port_info_array_free() when no longer needed.
* @n_ports: (out): Return location for the number of values in @ports.
*
* Gets the list of ignored ports in the modem.
*
* Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise.
*
* Since: 1.26
*/
PROPERTY_ARRAY_DEFINE_DEEP (ignored_ports,
Modem, modem, MODEM,
MMModemPortInfo,
mm_common_ports_variant_to_garray,
mm_common_ports_garray_to_array)
/*****************************************************************************/
/** /**
* mm_modem_get_equipment_identifier: * mm_modem_get_equipment_identifier:
* @self: A #MMModem. * @self: A #MMModem.
@@ -3430,6 +3469,7 @@ mm_modem_init (MMModem *self)
g_mutex_init (&self->priv->mutex); g_mutex_init (&self->priv->mutex);
PROPERTY_INITIALIZE (ports, "ports") PROPERTY_INITIALIZE (ports, "ports")
PROPERTY_INITIALIZE (ignored_ports, "ignored-ports")
PROPERTY_INITIALIZE (supported_modes, "supported-modes") PROPERTY_INITIALIZE (supported_modes, "supported-modes")
PROPERTY_INITIALIZE (supported_capabilities, "supported-capabilities") PROPERTY_INITIALIZE (supported_capabilities, "supported-capabilities")
PROPERTY_INITIALIZE (supported_bands, "supported-bands") PROPERTY_INITIALIZE (supported_bands, "supported-bands")
@@ -3445,6 +3485,7 @@ finalize (GObject *object)
g_mutex_clear (&self->priv->mutex); g_mutex_clear (&self->priv->mutex);
PROPERTY_ARRAY_FINALIZE (ports) PROPERTY_ARRAY_FINALIZE (ports)
PROPERTY_ARRAY_FINALIZE (ignored_ports)
PROPERTY_ARRAY_FINALIZE (supported_modes) PROPERTY_ARRAY_FINALIZE (supported_modes)
PROPERTY_ARRAY_FINALIZE (supported_capabilities) PROPERTY_ARRAY_FINALIZE (supported_capabilities)
PROPERTY_ARRAY_FINALIZE (supported_bands) PROPERTY_ARRAY_FINALIZE (supported_bands)
+8
View File
@@ -138,6 +138,14 @@ gboolean mm_modem_get_ports (MMModem *self,
MMModemPortInfo **ports, MMModemPortInfo **ports,
guint *n_ports); guint *n_ports);
gboolean mm_modem_peek_ignored_ports (MMModem *self,
const MMModemPortInfo **ports,
guint *n_ports);
gboolean mm_modem_get_ignored_ports (MMModem *self,
MMModemPortInfo **ports,
guint *n_ports);
const gchar *mm_modem_get_equipment_identifier (MMModem *self); const gchar *mm_modem_get_equipment_identifier (MMModem *self);
gchar *mm_modem_dup_equipment_identifier (MMModem *self); gchar *mm_modem_dup_equipment_identifier (MMModem *self);
+56 -27
View File
@@ -190,11 +190,13 @@ port_timed_out_cb (MMPort *port,
static MMPort * static MMPort *
base_modem_create_ignored_port (MMBaseModem *self, base_modem_create_ignored_port (MMBaseModem *self,
MMPortType ptype,
const gchar *name) const gchar *name)
{ {
return MM_PORT (g_object_new (MM_TYPE_PORT, return MM_PORT (g_object_new (MM_TYPE_PORT,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_TYPE, MM_PORT_TYPE_IGNORED, MM_PORT_GROUP, MM_PORT_GROUP_IGNORED,
MM_PORT_TYPE, ptype,
NULL)); NULL));
} }
@@ -326,6 +328,7 @@ base_modem_create_wwan_port (MMBaseModem *self,
return MM_PORT (g_object_new (MM_TYPE_PORT, return MM_PORT (g_object_new (MM_TYPE_PORT,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, MM_PORT_SUBSYS_WWAN, MM_PORT_SUBSYS, MM_PORT_SUBSYS_WWAN,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_XMMRPC, MM_PORT_TYPE, MM_PORT_TYPE_XMMRPC,
NULL)); NULL));
@@ -343,6 +346,7 @@ static MMPort *
base_modem_internal_grab_port (MMBaseModem *self, base_modem_internal_grab_port (MMBaseModem *self,
MMKernelDevice *kernel_device, MMKernelDevice *kernel_device,
gboolean link_port, gboolean link_port,
MMPortGroup pgroup,
MMPortType ptype, MMPortType ptype,
MMPortSerialAtFlag at_pflags, MMPortSerialAtFlag at_pflags,
GError **error) GError **error)
@@ -377,8 +381,8 @@ base_modem_internal_grab_port (MMBaseModem *self,
/* Explicitly ignored ports, grab them but explicitly flag them as ignored /* Explicitly ignored ports, grab them but explicitly flag them as ignored
* right away, all the same way (i.e. regardless of subsystem). */ * right away, all the same way (i.e. regardless of subsystem). */
if (ptype == MM_PORT_TYPE_IGNORED) if (pgroup == MM_PORT_GROUP_IGNORED)
port = base_modem_create_ignored_port (self, name); port = base_modem_create_ignored_port (self, ptype, name);
else if (g_str_equal (subsys, "net")) else if (g_str_equal (subsys, "net"))
port = base_modem_create_net_port (self, name); port = base_modem_create_net_port (self, name);
else if (g_str_equal (subsys, "tty")) else if (g_str_equal (subsys, "tty"))
@@ -403,25 +407,27 @@ base_modem_internal_grab_port (MMBaseModem *self,
} }
/* Setup consecutive ports and removal watchers in all control ports */ /* Setup consecutive ports and removal watchers in all control ports */
if (MM_IS_PORT_SERIAL_AT (port)) { if (pgroup == MM_PORT_GROUP_USED) {
mm_obj_dbg (port, "port monitoring enabled in AT port"); if (MM_IS_PORT_SERIAL_AT (port)) {
port_monitoring = TRUE; mm_obj_dbg (port, "port monitoring enabled in AT port");
} else if (MM_IS_PORT_SERIAL_QCDM (port)) { port_monitoring = TRUE;
mm_obj_dbg (port, "port monitoring enabled in QCDM port"); } else if (MM_IS_PORT_SERIAL_QCDM (port)) {
port_monitoring = TRUE; mm_obj_dbg (port, "port monitoring enabled in QCDM port");
} port_monitoring = TRUE;
}
#if defined WITH_QMI #if defined WITH_QMI
else if (MM_IS_PORT_QMI (port)) { else if (MM_IS_PORT_QMI (port)) {
mm_obj_dbg (port, "port monitoring enabled in QMI port"); mm_obj_dbg (port, "port monitoring enabled in QMI port");
port_monitoring = TRUE; port_monitoring = TRUE;
} }
#endif #endif
#if defined WITH_MBIM #if defined WITH_MBIM
else if (MM_IS_PORT_MBIM (port)) { else if (MM_IS_PORT_MBIM (port)) {
mm_obj_dbg (port, "port monitoring enabled in MBIM port"); mm_obj_dbg (port, "port monitoring enabled in MBIM port");
port_monitoring = TRUE; port_monitoring = TRUE;
} }
#endif #endif
}
if (port_monitoring) { if (port_monitoring) {
if (self->priv->max_timeouts > 0) if (self->priv->max_timeouts > 0)
@@ -487,13 +493,14 @@ base_modem_internal_grab_port (MMBaseModem *self,
gboolean gboolean
mm_base_modem_grab_port (MMBaseModem *self, mm_base_modem_grab_port (MMBaseModem *self,
MMKernelDevice *kernel_device, MMKernelDevice *kernel_device,
MMPortGroup pgroup,
MMPortType ptype, MMPortType ptype,
MMPortSerialAtFlag at_pflags, MMPortSerialAtFlag at_pflags,
GError **error) GError **error)
{ {
g_autoptr(GError) inner_error = NULL; g_autoptr(GError) inner_error = NULL;
if (!base_modem_internal_grab_port (self, kernel_device, FALSE, ptype, at_pflags, &inner_error)) { if (!base_modem_internal_grab_port (self, kernel_device, FALSE, pgroup, ptype, at_pflags, &inner_error)) {
/* If the port was REQUIRED via udev tags and we failed to grab it, we will report /* If the port was REQUIRED via udev tags and we failed to grab it, we will report
* a fatal error. */ * a fatal error. */
if (mm_kernel_device_get_property_as_boolean (kernel_device, ID_MM_REQUIRED)) { if (mm_kernel_device_get_property_as_boolean (kernel_device, ID_MM_REQUIRED)) {
@@ -540,6 +547,7 @@ mm_base_modem_grab_link_port (MMBaseModem *self,
port = base_modem_internal_grab_port (self, port = base_modem_internal_grab_port (self,
kernel_device, kernel_device,
TRUE, TRUE,
MM_PORT_GROUP_USED,
MM_PORT_TYPE_NET, MM_PORT_TYPE_NET,
MM_PORT_SERIAL_AT_FLAG_NONE, MM_PORT_SERIAL_AT_FLAG_NONE,
error); error);
@@ -1264,25 +1272,28 @@ port_info_cmp (const MMModemPortInfo *a,
return g_strcmp0 (a->name, b->name); return g_strcmp0 (a->name, b->name);
} }
MMModemPortInfo * static MMModemPortInfo *
mm_base_modem_get_port_infos (MMBaseModem *self, parse_port_infos (GHashTable *ports,
guint *n_port_infos) guint *n_port_infos,
MMPortGroup pgroup_filter)
{ {
GHashTableIter iter; GHashTableIter iter;
GArray *port_infos; GArray *port_infos;
MMPort *port; MMPort *port;
if (!self->priv->ports) { if (!ports) {
*n_port_infos = 0; *n_port_infos = 0;
return NULL; return NULL;
} }
*n_port_infos = g_hash_table_size (self->priv->ports); port_infos = g_array_new (FALSE, FALSE, sizeof (MMModemPortInfo));
port_infos = g_array_sized_new (FALSE, FALSE, sizeof (MMModemPortInfo), *n_port_infos); g_hash_table_iter_init (&iter, ports);
g_hash_table_iter_init (&iter, self->priv->ports);
while (g_hash_table_iter_next (&iter, NULL, (gpointer)&port)) { while (g_hash_table_iter_next (&iter, NULL, (gpointer)&port)) {
MMModemPortInfo port_info; MMModemPortInfo port_info;
if (mm_port_get_port_group (port) != pgroup_filter)
continue;
port_info.name = g_strdup (mm_port_get_device (port)); port_info.name = g_strdup (mm_port_get_device (port));
switch (mm_port_get_port_type (port)) { switch (mm_port_get_port_type (port)) {
case MM_PORT_TYPE_NET: case MM_PORT_TYPE_NET:
@@ -1321,11 +1332,25 @@ mm_base_modem_get_port_infos (MMBaseModem *self,
g_array_append_val (port_infos, port_info); g_array_append_val (port_infos, port_info);
} }
g_assert (*n_port_infos == port_infos->len); *n_port_infos = port_infos->len;
g_array_sort (port_infos, (GCompareFunc) port_info_cmp); g_array_sort (port_infos, (GCompareFunc) port_info_cmp);
return (MMModemPortInfo *) g_array_free (port_infos, FALSE); return (MMModemPortInfo *) g_array_free (port_infos, FALSE);
} }
MMModemPortInfo *
mm_base_modem_get_port_infos (MMBaseModem *self,
guint *n_port_infos)
{
return parse_port_infos (self->priv->ports, n_port_infos, MM_PORT_GROUP_USED);
}
MMModemPortInfo *
mm_base_modem_get_ignored_port_infos (MMBaseModem *self,
guint *n_port_infos)
{
return parse_port_infos (self->priv->ports, n_port_infos, MM_PORT_GROUP_IGNORED);
}
static gint static gint
port_cmp (MMPort *a, port_cmp (MMPort *a,
MMPort *b) MMPort *b)
@@ -1467,6 +1492,10 @@ mm_base_modem_organize_ports (MMBaseModem *self,
g_hash_table_iter_init (&iter, self->priv->ports); g_hash_table_iter_init (&iter, self->priv->ports);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &candidate)) { while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &candidate)) {
/* Skip ports that should not be used */
if (mm_port_get_port_group (candidate) != MM_PORT_GROUP_USED)
continue;
switch (mm_port_get_port_type (candidate)) { switch (mm_port_get_port_type (candidate)) {
case MM_PORT_TYPE_AT: case MM_PORT_TYPE_AT:
+3
View File
@@ -137,6 +137,7 @@ guint mm_base_modem_get_dbus_id (MMBaseModem *self);
gboolean mm_base_modem_grab_port (MMBaseModem *self, gboolean mm_base_modem_grab_port (MMBaseModem *self,
MMKernelDevice *kernel_device, MMKernelDevice *kernel_device,
MMPortGroup pgroup,
MMPortType ptype, MMPortType ptype,
MMPortSerialAtFlag at_pflags, MMPortSerialAtFlag at_pflags,
GError **error); GError **error);
@@ -183,6 +184,8 @@ GList *mm_base_modem_get_data_ports (MMBaseModem *self);
MMModemPortInfo *mm_base_modem_get_port_infos (MMBaseModem *self, MMModemPortInfo *mm_base_modem_get_port_infos (MMBaseModem *self,
guint *n_port_infos); guint *n_port_infos);
MMModemPortInfo *mm_base_modem_get_ignored_port_infos (MMBaseModem *self,
guint *n_port_infos);
GList *mm_base_modem_find_ports (MMBaseModem *self, GList *mm_base_modem_find_ports (MMBaseModem *self,
MMPortSubsys subsys, MMPortSubsys subsys,
+8
View File
@@ -5718,6 +5718,14 @@ interface_initialization_step (GTask *task)
mm_gdbus_modem_set_ports (ctx->skeleton, mm_common_ports_array_to_variant (port_infos, n_port_infos)); mm_gdbus_modem_set_ports (ctx->skeleton, mm_common_ports_array_to_variant (port_infos, n_port_infos));
mm_modem_port_info_array_free (port_infos, n_port_infos); mm_modem_port_info_array_free (port_infos, n_port_infos);
} }
if (!mm_gdbus_modem_get_ignored_ports (ctx->skeleton)) {
MMModemPortInfo *port_infos;
guint n_port_infos;
port_infos = mm_base_modem_get_ignored_port_infos (MM_BASE_MODEM (self), &n_port_infos);
mm_gdbus_modem_set_ignored_ports (ctx->skeleton, mm_common_ports_array_to_variant (port_infos, n_port_infos));
mm_modem_port_info_array_free (port_infos, n_port_infos);
}
ctx->step++; ctx->step++;
/* fall-through */ /* fall-through */
+17 -21
View File
@@ -974,19 +974,20 @@ mm_plugin_create_modem (MMPlugin *self,
GError *inner_error = NULL; GError *inner_error = NULL;
MMPortProbe *probe; MMPortProbe *probe;
gboolean grabbed = FALSE; gboolean grabbed = FALSE;
gboolean force_ignored = FALSE;
const gchar *subsys; const gchar *subsys;
const gchar *name; const gchar *name;
const gchar *driver; const gchar *driver;
MMPortGroup port_group;
MMPortType port_type; MMPortType port_type;
probe = MM_PORT_PROBE (l->data); probe = MM_PORT_PROBE (l->data);
subsys = mm_port_probe_get_port_subsys (probe); subsys = mm_port_probe_get_port_subsys (probe);
name = mm_port_probe_get_port_name (probe); name = mm_port_probe_get_port_name (probe);
port_type = mm_port_probe_get_port_type (probe); port_group = mm_port_probe_get_port_group (probe);
port_type = mm_port_probe_get_port_type (probe);
driver = mm_kernel_device_get_driver (mm_port_probe_peek_port (probe)); driver = mm_kernel_device_get_driver (mm_port_probe_peek_port (probe));
/* If grabbing a port fails, just warn. We'll decide if the modem is /* If grabbing a port fails, just warn. We'll decide if the modem is
* valid or not when all ports get organized */ * valid or not when all ports get organized */
@@ -1003,9 +1004,8 @@ mm_plugin_create_modem (MMPlugin *self,
} }
/* Ports that are explicitly ignored will be grabbed as ignored */ /* Ports that are explicitly ignored will be grabbed as ignored */
if (mm_port_probe_is_ignored (probe)) { if (port_group == MM_PORT_GROUP_IGNORED) {
mm_obj_dbg (self, "port %s is explicitly ignored", name); mm_obj_dbg (self, "port %s is explicitly ignored", name);
force_ignored = TRUE;
goto grab_port; goto grab_port;
} }
@@ -1017,7 +1017,7 @@ mm_plugin_create_modem (MMPlugin *self,
g_strcmp0 (driver, "qmi_wwan") != 0) { g_strcmp0 (driver, "qmi_wwan") != 0) {
/* Non-QMI net ports are ignored in QMI modems */ /* Non-QMI net ports are ignored in QMI modems */
mm_obj_dbg (self, "ignoring non-QMI net port %s in QMI modem", name); mm_obj_dbg (self, "ignoring non-QMI net port %s in QMI modem", name);
force_ignored = TRUE; port_group = MM_PORT_GROUP_IGNORED;
goto grab_port; goto grab_port;
} }
@@ -1026,7 +1026,7 @@ mm_plugin_create_modem (MMPlugin *self,
g_strcmp0 (driver, "qmi_wwan") == 0) { g_strcmp0 (driver, "qmi_wwan") == 0) {
/* QMI net ports are ignored in non-QMI modems */ /* QMI net ports are ignored in non-QMI modems */
mm_obj_dbg (self, "ignoring QMI net port %s in non-QMI modem", name); mm_obj_dbg (self, "ignoring QMI net port %s in non-QMI modem", name);
force_ignored = TRUE; port_group = MM_PORT_GROUP_IGNORED;
goto grab_port; goto grab_port;
} }
#else #else
@@ -1034,7 +1034,7 @@ mm_plugin_create_modem (MMPlugin *self,
g_strcmp0 (driver, "qmi_wwan") == 0) { g_strcmp0 (driver, "qmi_wwan") == 0) {
/* QMI net ports are ignored if QMI support not built */ /* QMI net ports are ignored if QMI support not built */
mm_obj_dbg (self, "ignoring QMI net port %s as QMI support isn't available", name); mm_obj_dbg (self, "ignoring QMI net port %s as QMI support isn't available", name);
force_ignored = TRUE; port_group = MM_PORT_GROUP_IGNORED;
goto grab_port; goto grab_port;
} }
#endif #endif
@@ -1048,7 +1048,7 @@ mm_plugin_create_modem (MMPlugin *self,
g_strcmp0 (driver, "cdc_mbim") != 0) { g_strcmp0 (driver, "cdc_mbim") != 0) {
/* Non-MBIM net ports are ignored in MBIM modems */ /* Non-MBIM net ports are ignored in MBIM modems */
mm_obj_dbg (self, "ignoring non-MBIM net port %s in MBIM modem", name); mm_obj_dbg (self, "ignoring non-MBIM net port %s in MBIM modem", name);
force_ignored = TRUE; port_group = MM_PORT_GROUP_IGNORED;
goto grab_port; goto grab_port;
} }
@@ -1057,27 +1057,21 @@ mm_plugin_create_modem (MMPlugin *self,
g_strcmp0 (driver, "cdc_mbim") == 0) { g_strcmp0 (driver, "cdc_mbim") == 0) {
/* MBIM net ports are ignored in non-MBIM modems */ /* MBIM net ports are ignored in non-MBIM modems */
mm_obj_dbg (self, "ignoring MBIM net port %s in non-MBIM modem", name); mm_obj_dbg (self, "ignoring MBIM net port %s in non-MBIM modem", name);
force_ignored = TRUE; port_group = MM_PORT_GROUP_IGNORED;
goto grab_port; goto grab_port;
} }
#else #else
if (port_type == MM_PORT_TYPE_NET && if (port_type == MM_PORT_TYPE_NET &&
g_strcmp0 (driver, "cdc_mbim") == 0) { g_strcmp0 (driver, "cdc_mbim") == 0) {
mm_obj_dbg (self, "ignoring MBIM net port %s as MBIM support isn't available", name); mm_obj_dbg (self, "ignoring MBIM net port %s as MBIM support isn't available", name);
force_ignored = TRUE; port_group = MM_PORT_GROUP_IGNORED;
goto grab_port; goto grab_port;
} }
#endif #endif
} }
grab_port: grab_port:
if (force_ignored) if (port_group != MM_PORT_GROUP_IGNORED && MM_PLUGIN_GET_CLASS (self)->grab_port)
grabbed = mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe),
MM_PORT_TYPE_IGNORED,
MM_PORT_SERIAL_AT_FLAG_NONE,
&inner_error);
else if (MM_PLUGIN_GET_CLASS (self)->grab_port)
grabbed = MM_PLUGIN_GET_CLASS (self)->grab_port (MM_PLUGIN (self), grabbed = MM_PLUGIN_GET_CLASS (self)->grab_port (MM_PLUGIN (self),
modem, modem,
probe, probe,
@@ -1085,7 +1079,8 @@ mm_plugin_create_modem (MMPlugin *self,
else else
grabbed = mm_base_modem_grab_port (modem, grabbed = mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe), mm_port_probe_peek_port (probe),
mm_port_probe_get_port_type (probe), port_group,
port_type,
MM_PORT_SERIAL_AT_FLAG_NONE, MM_PORT_SERIAL_AT_FLAG_NONE,
&inner_error); &inner_error);
@@ -1128,6 +1123,7 @@ mm_plugin_create_modem (MMPlugin *self,
g_clear_error (&inner_error); g_clear_error (&inner_error);
} else if (!mm_base_modem_grab_port (modem, } else if (!mm_base_modem_grab_port (modem,
kernel_device, kernel_device,
MM_PORT_GROUP_USED,
MM_PORT_TYPE_AT, MM_PORT_TYPE_AT,
MM_PORT_SERIAL_AT_FLAG_NONE, MM_PORT_SERIAL_AT_FLAG_NONE,
&inner_error)) { &inner_error)) {
+1
View File
@@ -940,6 +940,7 @@ mm_port_mbim_new (const gchar *name,
return MM_PORT_MBIM (g_object_new (MM_TYPE_PORT_MBIM, return MM_PORT_MBIM (g_object_new (MM_TYPE_PORT_MBIM,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, subsys, MM_PORT_SUBSYS, subsys,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_MBIM, MM_PORT_TYPE, MM_PORT_TYPE_MBIM,
NULL)); NULL));
} }
+1
View File
@@ -156,6 +156,7 @@ mm_port_net_new (const gchar *name)
return MM_PORT_NET (g_object_new (MM_TYPE_PORT_NET, return MM_PORT_NET (g_object_new (MM_TYPE_PORT_NET,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, MM_PORT_SUBSYS_NET, MM_PORT_SUBSYS, MM_PORT_SUBSYS_NET,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_NET, MM_PORT_TYPE, MM_PORT_TYPE_NET,
NULL)); NULL));
} }
+11 -8
View File
@@ -2002,6 +2002,17 @@ mm_port_probe_list_has_xmmrpc_port (GList *list)
return FALSE; return FALSE;
} }
MMPortGroup
mm_port_probe_get_port_group (MMPortProbe *self)
{
g_return_val_if_fail (MM_IS_PORT_PROBE (self), MM_PORT_GROUP_UNKNOWN);
if (self->priv->is_ignored)
return MM_PORT_GROUP_IGNORED;
return MM_PORT_GROUP_USED;
}
MMPortType MMPortType
mm_port_probe_get_port_type (MMPortProbe *self) mm_port_probe_get_port_type (MMPortProbe *self)
{ {
@@ -2144,14 +2155,6 @@ mm_port_probe_list_is_xmm (GList *probes)
return FALSE; return FALSE;
} }
gboolean
mm_port_probe_is_ignored (MMPortProbe *self)
{
g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE);
return self->priv->is_ignored;
}
const gchar * const gchar *
mm_port_probe_get_port_name (MMPortProbe *self) mm_port_probe_get_port_name (MMPortProbe *self)
{ {
+1 -1
View File
@@ -140,6 +140,7 @@ gboolean mm_port_probe_run_early_at_probe_finish (MMPortProbe *self,
GError **error); GError **error);
/* Probing result getters */ /* Probing result getters */
MMPortGroup mm_port_probe_get_port_group (MMPortProbe *self);
MMPortType mm_port_probe_get_port_type (MMPortProbe *self); MMPortType mm_port_probe_get_port_type (MMPortProbe *self);
gboolean mm_port_probe_is_at (MMPortProbe *self); gboolean mm_port_probe_is_at (MMPortProbe *self);
gboolean mm_port_probe_is_qcdm (MMPortProbe *self); gboolean mm_port_probe_is_qcdm (MMPortProbe *self);
@@ -150,7 +151,6 @@ const gchar *mm_port_probe_get_vendor (MMPortProbe *self);
const gchar *mm_port_probe_get_product (MMPortProbe *self); const gchar *mm_port_probe_get_product (MMPortProbe *self);
gboolean mm_port_probe_is_icera (MMPortProbe *self); gboolean mm_port_probe_is_icera (MMPortProbe *self);
gboolean mm_port_probe_is_xmm (MMPortProbe *self); gboolean mm_port_probe_is_xmm (MMPortProbe *self);
gboolean mm_port_probe_is_ignored (MMPortProbe *self);
/* Additional helpers */ /* Additional helpers */
gboolean mm_port_probe_list_has_at_port (GList *list); gboolean mm_port_probe_list_has_at_port (GList *list);
+2
View File
@@ -2842,6 +2842,7 @@ mm_port_qmi_new (const gchar *name,
return MM_PORT_QMI (g_object_new (MM_TYPE_PORT_QMI, return MM_PORT_QMI (g_object_new (MM_TYPE_PORT_QMI,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, subsys, MM_PORT_SUBSYS, subsys,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_QMI, MM_PORT_TYPE, MM_PORT_TYPE_QMI,
NULL)); NULL));
} }
@@ -2855,6 +2856,7 @@ mm_port_qmi_new_from_node (const gchar *name,
"node", node, "node", node,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, MM_PORT_SUBSYS_QRTR, MM_PORT_SUBSYS, MM_PORT_SUBSYS_QRTR,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_QMI, MM_PORT_TYPE, MM_PORT_TYPE_QMI,
NULL)); NULL));
} }
+1
View File
@@ -526,6 +526,7 @@ mm_port_serial_at_new (const char *name,
return MM_PORT_SERIAL_AT (g_object_new (MM_TYPE_PORT_SERIAL_AT, return MM_PORT_SERIAL_AT (g_object_new (MM_TYPE_PORT_SERIAL_AT,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, subsys, MM_PORT_SUBSYS, subsys,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_AT, MM_PORT_TYPE, MM_PORT_TYPE_AT,
NULL)); NULL));
} }
+1
View File
@@ -174,6 +174,7 @@ mm_port_serial_gps_new (const char *name)
return MM_PORT_SERIAL_GPS (g_object_new (MM_TYPE_PORT_SERIAL_GPS, return MM_PORT_SERIAL_GPS (g_object_new (MM_TYPE_PORT_SERIAL_GPS,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY, MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_GPS, MM_PORT_TYPE, MM_PORT_TYPE_GPS,
NULL)); NULL));
} }
+2
View File
@@ -372,6 +372,7 @@ mm_port_serial_qcdm_new (const char *name,
return MM_PORT_SERIAL_QCDM (g_object_new (MM_TYPE_PORT_SERIAL_QCDM, return MM_PORT_SERIAL_QCDM (g_object_new (MM_TYPE_PORT_SERIAL_QCDM,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, subsys, MM_PORT_SUBSYS, subsys,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_QCDM, MM_PORT_TYPE, MM_PORT_TYPE_QCDM,
MM_PORT_SERIAL_SEND_DELAY, (guint64) 0, MM_PORT_SERIAL_SEND_DELAY, (guint64) 0,
NULL)); NULL));
@@ -387,6 +388,7 @@ mm_port_serial_qcdm_new_fd (int fd)
port = MM_PORT_SERIAL_QCDM (g_object_new (MM_TYPE_PORT_SERIAL_QCDM, port = MM_PORT_SERIAL_QCDM (g_object_new (MM_TYPE_PORT_SERIAL_QCDM,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY, MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_QCDM, MM_PORT_TYPE, MM_PORT_TYPE_QCDM,
MM_PORT_SERIAL_FD, fd, MM_PORT_SERIAL_FD, fd,
MM_PORT_SERIAL_SEND_DELAY, (guint64) 0, MM_PORT_SERIAL_SEND_DELAY, (guint64) 0,
+1
View File
@@ -1895,6 +1895,7 @@ mm_port_serial_new (const char *name, MMPortType ptype)
return MM_PORT_SERIAL (g_object_new (MM_TYPE_PORT_SERIAL, return MM_PORT_SERIAL (g_object_new (MM_TYPE_PORT_SERIAL,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY, MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, ptype, MM_PORT_TYPE, ptype,
NULL)); NULL));
} }
+28
View File
@@ -31,6 +31,7 @@ enum {
PROP_0, PROP_0,
PROP_DEVICE, PROP_DEVICE,
PROP_SUBSYS, PROP_SUBSYS,
PROP_GROUP,
PROP_TYPE, PROP_TYPE,
PROP_CONNECTED, PROP_CONNECTED,
PROP_KERNEL_DEVICE, PROP_KERNEL_DEVICE,
@@ -49,6 +50,7 @@ static guint signals[LAST_SIGNAL] = { 0 };
struct _MMPortPrivate { struct _MMPortPrivate {
gchar *device; gchar *device;
MMPortSubsys subsys; MMPortSubsys subsys;
MMPortGroup pgroup;
MMPortType ptype; MMPortType ptype;
gboolean connected; gboolean connected;
MMKernelDevice *kernel_device; MMKernelDevice *kernel_device;
@@ -74,6 +76,15 @@ mm_port_get_subsys (MMPort *self)
return self->priv->subsys; return self->priv->subsys;
} }
MMPortGroup
mm_port_get_port_group (MMPort *self)
{
g_return_val_if_fail (self != NULL, MM_PORT_GROUP_UNKNOWN);
g_return_val_if_fail (MM_IS_PORT (self), MM_PORT_GROUP_UNKNOWN);
return self->priv->pgroup;
}
MMPortType MMPortType
mm_port_get_port_type (MMPort *self) mm_port_get_port_type (MMPort *self)
{ {
@@ -151,6 +162,10 @@ set_property (GObject *object,
/* Construct only */ /* Construct only */
self->priv->subsys = g_value_get_uint (value); self->priv->subsys = g_value_get_uint (value);
break; break;
case PROP_GROUP:
/* Construct only */
self->priv->pgroup = g_value_get_uint (value);
break;
case PROP_TYPE: case PROP_TYPE:
/* Construct only */ /* Construct only */
self->priv->ptype = g_value_get_uint (value); self->priv->ptype = g_value_get_uint (value);
@@ -182,6 +197,9 @@ get_property (GObject *object, guint prop_id,
case PROP_SUBSYS: case PROP_SUBSYS:
g_value_set_uint (value, self->priv->subsys); g_value_set_uint (value, self->priv->subsys);
break; break;
case PROP_GROUP:
g_value_set_uint (value, self->priv->pgroup);
break;
case PROP_TYPE: case PROP_TYPE:
g_value_set_uint (value, self->priv->ptype); g_value_set_uint (value, self->priv->ptype);
break; break;
@@ -254,6 +272,16 @@ mm_port_class_init (MMPortClass *klass)
MM_PORT_SUBSYS_UNKNOWN, MM_PORT_SUBSYS_UNKNOWN,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property
(object_class, PROP_GROUP,
g_param_spec_uint (MM_PORT_GROUP,
"Group",
"Group",
MM_PORT_GROUP_UNKNOWN,
MM_PORT_GROUP_LAST,
MM_PORT_GROUP_UNKNOWN,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property g_object_class_install_property
(object_class, PROP_TYPE, (object_class, PROP_TYPE,
g_param_spec_uint (MM_PORT_TYPE, g_param_spec_uint (MM_PORT_TYPE,
+9
View File
@@ -34,6 +34,13 @@ typedef enum { /*< underscore_name=mm_port_subsys >*/
MM_PORT_SUBSYS_LAST = MM_PORT_SUBSYS_WWAN /*< skip >*/ MM_PORT_SUBSYS_LAST = MM_PORT_SUBSYS_WWAN /*< skip >*/
} MMPortSubsys; } MMPortSubsys;
typedef enum { /*< underscore_name=mm_port_group >*/
MM_PORT_GROUP_UNKNOWN = 0x0,
MM_PORT_GROUP_USED,
MM_PORT_GROUP_IGNORED,
MM_PORT_GROUP_LAST = MM_PORT_GROUP_IGNORED /*< skip >*/
} MMPortGroup;
typedef enum { /*< underscore_name=mm_port_type >*/ typedef enum { /*< underscore_name=mm_port_type >*/
MM_PORT_TYPE_UNKNOWN = 0x0, MM_PORT_TYPE_UNKNOWN = 0x0,
MM_PORT_TYPE_IGNORED, MM_PORT_TYPE_IGNORED,
@@ -57,6 +64,7 @@ typedef enum { /*< underscore_name=mm_port_type >*/
#define MM_PORT_DEVICE "device" #define MM_PORT_DEVICE "device"
#define MM_PORT_SUBSYS "subsys" #define MM_PORT_SUBSYS "subsys"
#define MM_PORT_GROUP "group"
#define MM_PORT_TYPE "type" #define MM_PORT_TYPE "type"
#define MM_PORT_CONNECTED "connected" #define MM_PORT_CONNECTED "connected"
#define MM_PORT_KERNEL_DEVICE "kernel-device" #define MM_PORT_KERNEL_DEVICE "kernel-device"
@@ -86,6 +94,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMPort, g_object_unref)
const gchar *mm_port_get_device (MMPort *self); const gchar *mm_port_get_device (MMPort *self);
MMPortSubsys mm_port_get_subsys (MMPort *self); MMPortSubsys mm_port_get_subsys (MMPort *self);
MMPortGroup mm_port_get_port_group (MMPort *self);
MMPortType mm_port_get_port_type (MMPort *self); MMPortType mm_port_get_port_type (MMPort *self);
gboolean mm_port_get_connected (MMPort *self); gboolean mm_port_get_connected (MMPort *self);
void mm_port_set_connected (MMPort *self, gboolean connected); void mm_port_set_connected (MMPort *self, gboolean connected);
@@ -204,6 +204,7 @@ grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe), mm_port_probe_peek_port (probe),
mm_port_probe_get_port_group (probe),
ptype, ptype,
pflags, pflags,
error); error);
+1
View File
@@ -493,6 +493,7 @@ grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe), mm_port_probe_peek_port (probe),
mm_port_probe_get_port_group (probe),
mm_port_probe_get_port_type (probe), mm_port_probe_get_port_type (probe),
MM_PORT_SERIAL_AT_FLAG_NONE, MM_PORT_SERIAL_AT_FLAG_NONE,
error); error);
@@ -241,6 +241,7 @@ mm_port_mbim_fibocom_new (const gchar *name,
return MM_PORT_MBIM_FIBOCOM (g_object_new (MM_TYPE_PORT_MBIM_FIBOCOM, return MM_PORT_MBIM_FIBOCOM (g_object_new (MM_TYPE_PORT_MBIM_FIBOCOM,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, subsys, MM_PORT_SUBSYS, subsys,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_MBIM, MM_PORT_TYPE, MM_PORT_TYPE_MBIM,
NULL)); NULL));
} }
+1
View File
@@ -693,6 +693,7 @@ grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
port, port,
mm_port_probe_get_port_group (probe),
port_type, port_type,
pflags, pflags,
error); error);
+1
View File
@@ -159,6 +159,7 @@ grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe), mm_port_probe_peek_port (probe),
mm_port_probe_get_port_group (probe),
port_type, port_type,
pflags, pflags,
error); error);
+1
View File
@@ -81,6 +81,7 @@ grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
port, port,
mm_port_probe_get_port_group (probe),
MM_PORT_TYPE_AT, /* we only allow AT ports here */ MM_PORT_TYPE_AT, /* we only allow AT ports here */
pflags, pflags,
error); error);
+1
View File
@@ -123,6 +123,7 @@ grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe), mm_port_probe_peek_port (probe),
mm_port_probe_get_port_group (probe),
ptype, ptype,
pflags, pflags,
error); error);
@@ -250,6 +250,7 @@ mm_port_mbim_quectel_new (const gchar *name,
return MM_PORT_MBIM_QUECTEL (g_object_new (MM_TYPE_PORT_MBIM_QUECTEL, return MM_PORT_MBIM_QUECTEL (g_object_new (MM_TYPE_PORT_MBIM_QUECTEL,
MM_PORT_DEVICE, name, MM_PORT_DEVICE, name,
MM_PORT_SUBSYS, subsys, MM_PORT_SUBSYS, subsys,
MM_PORT_GROUP, MM_PORT_GROUP_USED,
MM_PORT_TYPE, MM_PORT_TYPE_MBIM, MM_PORT_TYPE, MM_PORT_TYPE_MBIM,
NULL)); NULL));
} }
+1
View File
@@ -54,6 +54,7 @@ mm_common_sierra_grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
mm_port_probe_peek_port (probe), mm_port_probe_peek_port (probe),
mm_port_probe_get_port_group (probe),
ptype, ptype,
pflags, pflags,
error); error);
+4 -1
View File
@@ -42,11 +42,13 @@ telit_grab_port (MMPlugin *self,
{ {
MMKernelDevice *port; MMKernelDevice *port;
MMDevice *device; MMDevice *device;
MMPortGroup pgroup;
MMPortType ptype; MMPortType ptype;
MMPortSerialAtFlag pflags = MM_PORT_SERIAL_AT_FLAG_NONE; MMPortSerialAtFlag pflags = MM_PORT_SERIAL_AT_FLAG_NONE;
const gchar *subsys; const gchar *subsys;
port = mm_port_probe_peek_port (probe); port = mm_port_probe_peek_port (probe);
pgroup = mm_port_probe_get_port_group (probe);
ptype = mm_port_probe_get_port_type (probe); ptype = mm_port_probe_get_port_type (probe);
device = mm_port_probe_peek_device (probe); device = mm_port_probe_peek_device (probe);
subsys = mm_port_probe_get_port_subsys (probe); subsys = mm_port_probe_get_port_subsys (probe);
@@ -76,12 +78,13 @@ telit_grab_port (MMPlugin *self,
mm_port_probe_get_port_name (probe)); mm_port_probe_get_port_name (probe));
ptype = MM_PORT_TYPE_GPS; ptype = MM_PORT_TYPE_GPS;
} else } else
ptype = MM_PORT_TYPE_IGNORED; pgroup = MM_PORT_GROUP_IGNORED;
} }
out: out:
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
port, port,
pgroup,
ptype, ptype,
pflags, pflags,
error); error);
+1
View File
@@ -139,6 +139,7 @@ grab_port (MMPlugin *self,
return mm_base_modem_grab_port (modem, return mm_base_modem_grab_port (modem,
port, port,
mm_port_probe_get_port_group (probe),
ptype, ptype,
MM_PORT_SERIAL_AT_FLAG_NONE, MM_PORT_SERIAL_AT_FLAG_NONE,
error); error);
+2
View File
@@ -202,6 +202,7 @@ PM_DRIVERS = "Drivers"
PM_PLUGIN = "Plugin" PM_PLUGIN = "Plugin"
PM_PRIMARY_PORT = "PrimaryPort" PM_PRIMARY_PORT = "PrimaryPort"
PM_PORTS = "Ports" PM_PORTS = "Ports"
PM_IGNORED_PORTS = "IgnoredPorts"
PM_EQUIPMENT_IDENTIFIER = "EquipmentIdentifier" PM_EQUIPMENT_IDENTIFIER = "EquipmentIdentifier"
PM_UNLOCK_REQUIRED = "UnlockRequired" PM_UNLOCK_REQUIRED = "UnlockRequired"
PM_UNLOCK_RETRIES = "UnlockRetries" PM_UNLOCK_RETRIES = "UnlockRetries"
@@ -259,6 +260,7 @@ class Modem(ExportedObj):
#props[PM_PLUGIN] = None #props[PM_PLUGIN] = None
#props[PM_PRIMARY_PORT] = None #props[PM_PRIMARY_PORT] = None
#props[PM_PORTS] = None #props[PM_PORTS] = None
#props[PM_IGNORED_PORTS] = None
#props[PM_EQUIPMENT_IDENTIFIER] = None #props[PM_EQUIPMENT_IDENTIFIER] = None
#props[PM_UNLOCK_RETRIES] = dbus.UInt32(0) #props[PM_UNLOCK_RETRIES] = dbus.UInt32(0)
#props[PM_ACCESS_TECHNOLOGIES] = None #props[PM_ACCESS_TECHNOLOGIES] = None