Commit Graph
14 Commits
Author SHA1 Message Date
Dan Williams 4dad94d500 core: rework port grabbing and organization
Make port roles more flexible.  We have modems that do PPP
on interfaces other than the primary interface, and that
wasn't possible with the old code.  So clean up all that
logic and move the port organization code into the core
so we can reduce code in the plugins.

In the new world order, the plugins say whether the port
is a QCDM port, an AT port, or ignored.  If it's an AT
port the plugins get to tag it as primary, secondary, or
PPP, or any combination of the 3.  This allows for modems
where PPP should really be done on the secondary port
(Huawei E220, Sierra devices) so that the primary port
stays open for command and status.

Modem subclasses no longer get asked to handle port grabbing
themselves.  Instead, that's now done by the generic classes
(MMGenericCdma and MMGenericGsm) and the plugins are notified
when a port is grabbed so they can add unsolicited response
handlers for it.  After all ports are grabbed by the generic
classes, they get "organized", which assigns various ports
to the roles of PRIMARY, SECONDARY, DATA, and QCDM based
on specific rules and hints that the plugin provided (which
are expressed as MMAtPortFlags).  The plugins then have
a chance to perform fixups on the primary port if they choose.

The plugin code is responsible for determining the port
hints (ie MMAtPortFlags) at probe time, instead of having
a combination of the plugin and the modem class do the
job.  This simplifies things greatly for the plugins at
the expense of more complicated logic in the core.
2012-02-28 10:06:04 -06:00
Nathan Williams 8710820156 core: ensure that GMatchInfo and GRegex objects are freed properly
In particular, g_regex_match() and g_regex_match_full() allocate a
match_info structure on both success and failure, so calling
g_match_info_free() only in the success case is insufficient.

BUG=None
TEST=Inspection

Change-Id: Iea76b5b5dc3ec48120e15601a5e2dd45322133d8
2011-09-27 13:40:39 -05:00
Aleksander Morgado 50e9d6fc54 cinterion, wavecom: update copyright info 2011-07-06 09:37:47 +02:00
Aleksander Morgado 7e69d2cf30 cinterion: always try to use RTS/CTS flow control
Otherwise, power-up after going to standby will not work properly
2011-06-22 16:00:58 +02:00
Aleksander Morgado eae5d6c41b cinterion: enable power-off command to go to sleep/standby mode
AT+CFUN=4 will be used when available to go to standby mode. If not supported,
(as in EGS5) AT+CFUN=7 will be used instead, which enables a CYCLIC SLEEP mode.

Flow control setup was updated to RCS/CTS so that waking up from sleep mode
works properly.
2011-06-22 13:11:39 +02:00
Aleksander Morgado 3921559901 cinterion: set modem disabled if 3 consecutive AT commands get timed out 2011-06-06 17:20:17 +02:00
Aleksander Morgado 9578e1b9ca cinterion: override CMER enabling command 2011-06-06 17:20:17 +02:00
Aleksander Morgado de5eb41a70 cinterion: override SMS indications setup commands 2011-06-06 17:20:17 +02:00
Aleksander Morgado 0b8f86534a cinterion: if modem removed don't process response 2011-06-06 17:20:17 +02:00
Aleksander Morgado 998b622611 cinterion: set and get bands 2011-06-06 17:20:16 +02:00
Aleksander Morgado ade9fe8d30 cinterion: set and get allowed mode
The 2G-preferred and 3G-preferred modes are not supported on dual
2G/3G cinterion modems.
2011-06-06 17:20:16 +02:00
Aleksander Morgado 8d8888bc63 cinterion: query supported networks to detect if 2G or 3G device 2011-06-06 17:20:16 +02:00
Aleksander Morgado 795de12050 cinterion: query network technology capabilities
We try to look for 'psinfo' indication in AT^SIND? output (available in 3G
devices from Cinterion), and if that is not available, we try to use the
AT^SMONG GPRS monitor (available in 2G devices from Cinterion).
2011-06-06 17:20:16 +02:00
Aleksander Morgado c6060e8c0f cinterion: add initial dummy plugin 2011-06-06 17:20:16 +02:00