aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2017-03-06 13:56:19 +0100
committerAleksander Morgado <aleksander@aleksander.es>2017-03-16 22:24:03 +0100
commit60be293fa57a3d3f6db1d1ae064d42af320f84e0 (patch)
tree1476558c628525ede31a5d50a4482a1c82682ab3 /plugins
parent875ade3e41b61528bbd2b018a5d34c1a1cda9b99 (diff)
telit: don't ignore AT ports without an explicit port type hint tag
The telit plugin is based on two main ways of checking the purpose of each port: udev tags flagging specific interfaces (with info taken from Windows .inf drivers), or otherwise using AT#PORTCFG? to query the modem about that information. If none of those applies, the port is ignored by default. In order to support devices that are not explicitly tagged, the plugin shouldn't flag as ignored the AT-capable TTYs, instead they are now grabbed as 'secondary': ports grabbed as secondary will never be used for either primary/data IF there is another port flagged explicitly for primary/data. This fixes the support for modems with a single TTY and no explicit port type hint tag, e.g. RS232 modems with just one single TTY where there's no point in specifying port type hints: the port will be grabbed as secondary, and then automatically promoted to primary/data as there is no other port grabbed. https://bugs.freedesktop.org/show_bug.cgi?id=100159
Diffstat (limited to 'plugins')
-rw-r--r--plugins/telit/mm-common-telit.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/plugins/telit/mm-common-telit.c b/plugins/telit/mm-common-telit.c
index 78530c42..3f2cce5c 100644
--- a/plugins/telit/mm-common-telit.c
+++ b/plugins/telit/mm-common-telit.c
@@ -84,11 +84,22 @@ telit_grab_port (MMPlugin *self,
} else
ptype = MM_PORT_TYPE_IGNORED;
} else {
- /* If the port was tagged by the udev rules but isn't a primary or secondary,
- * then ignore it to guard against race conditions if a device just happens
- * to show up with more than two AT-capable ports.
+ /* If the port isn't explicitly tagged as primary, secondary, or gps
+ * port, we will fallback to flagging it as secondary, but only if it
+ * probed AT successfully.
+ *
+ * This is so that we support the case where a single TTY is exposed
+ * by the modem and no explicit port type hint is specified.
+ *
+ * From the modem point of view, only the AT_FLAG_PRIMARY would be
+ * important, as that is the port that would end up getting used for PPP
+ * in this case, so having multiple secondary ports, if that ever
+ * happened, wouldn't be an issue.
*/
- ptype = MM_PORT_TYPE_IGNORED;
+ if (mm_port_probe_is_at (probe))
+ pflags = MM_PORT_SERIAL_AT_FLAG_SECONDARY;
+ else
+ ptype = MM_PORT_TYPE_IGNORED;
}
return mm_base_modem_grab_port (modem,