Commit Graph
23 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
Dan Williams 267b83ae27 sierra: add support for Icera based devices (USB305, AT&T Lightning) 2011-12-31 11:43:42 -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
Dan Williams da57b9a0eb sierra: fix possible double-free
Need to reset password to NULL after freeing it.
2011-08-02 21:57:02 -05:00
Aleksander Morgado 56db818901 sierra: do not send power-up command if not needed 2011-06-22 13:11:39 +02:00
Aleksander Morgado 9323daec01 core, plugins: if modem removed don't process response
We try to avoid a memory leak when info->error is reset, as well as a second
re-schedule of the info.
2011-06-05 17:51:00 +02:00
Dan Williams 1df1ff38b0 sierra: support pseduo-ethernet interface on GSM devices
Requires the sierra_net driver, which is included in the
2.6.34 and later kernels.
2010-11-29 00:45:58 -06:00
Dan Williams d63dcd682d sierra: check for PS attach before dialing
Some devices (8775 specifically) get angry if you don't check for
a PS attach before dialing.  The next time they try to connect,
they'll continuously report "searching" as the registration status
and return CME ERROR 30 (No Network Service) for lots of requests.
So initiate a PS attach (which should return OK if the modem is
already attached) before dialing, and if that fails cancel the
dial attempt.

See http://mail.gnome.org/archives/networkmanager-list/2010-October/msg00072.html

"I talked about this problem with a contact at SierraWireless. He said that
a firmware upgrade will not help in this case. But what can help is checking
for PS attach and dial only if PS attach status is attached. Dialing without
PS attach can bring modem into unwanted condition that sometimes restart is
needed to recover."
2010-10-30 12:31:08 -05:00
Dan Williams f93e24dda3 sierra: fix ICCID requests
Depending on when the core requested the ICCID, the port may or may
not be open.  Stuff that needs an open serial port needs to make sure
that the port gets opened itself.
2010-10-25 21:00:26 -05:00
Dan Williams 1684d8b173 gsm: add SimIdentifier property
An obfuscated SimIdentifier that may be available before the PIN has
been entered, for use in auto-unlocking a device.  If this value is
present, it should be used in preference to DeviceIdentifier as it
is SIM-specific like the PIN code.
2010-10-25 17:41:08 -05:00
Dan Williams 7ae8ffe21b core: use hardware IDs as part of DeviceIdentifier
Pass the device's hardware IDs through modem creation and use them
when calculating the device's identifier.  Add a bunch of testcases
for real hardware to ensure we don't break the device ID in the
future unless we really want to.
2010-10-22 11:06:48 -05:00
Dan Williams da8cf4a7c2 gsm: use generic string -> access technology helper 2010-05-01 22:42:58 -07:00
Dan Williams a50708dbea sierra: implement GSM solicited access technology request 2010-03-26 00:27:30 -07:00
Dan Williams 6744e08104 gsm: simplify finding the right serial port for commands 2010-03-16 13:17:14 -07:00
Dan Williams 429c7cc661 sierra: implement GSM mode preference handling 2010-03-12 17:06:04 -08:00
Dan Williams f3721a5674 Merge remote branch 'origin/master' into qcdm 2010-03-08 20:01:22 -08:00
Dan Williams d94ca3d310 sierra: fix power-on delay
Since the modem states patch the delay for power-on wasn't honored
for Sierra devices.  Fix that using the new power-on-done handler
and also fix the bug where if the modem was removed, the plugin
would crash because it wasn't handling the timeout removal.

Also remove the explicit PIN check since that's now handled by the
generic GSM code before the modem is even exported over DBus.
2010-03-04 20:09:54 -08:00
Dan Williams 3f7b173932 sierra: fix comment about CFUN=1 delay 2010-03-04 19:40:33 -08:00
Dan Williams a8c7bba19e serial: refactor MMSerialPort into a base class and an AT-capable serial port
For QCDM devices we want most of what MMSerialPort does, but not
the AT command handling stuff since the commands and responses
aren't AT commands nor are they even strings.  So convert everything
that MMSerialPort does into a GByteArray, and let MMAtSerialPort
handle the conversion to strings when necessary.
2010-02-20 14:55:10 -08:00
Dan Williams 953095466d sierra: ignore +PACSP0 on GSM devices 2010-02-09 22:14:06 -08:00
Dan Williams 5bdabaabec gsm: implement enable/connecting/disconnecting state handling
And consolidate generic port enable code in one place since pretty
much every modem needs that.
2009-12-02 14:43:09 -08:00
Dan Williams 49b5ffd076 core: use G_DEFINE_TYPE_* instead of rolling our own
Use the macro; save some trees.
2009-10-26 17:56:48 -07:00
Dan Williams f0dc449c50 sierra: rename MMModemSierra -> MMModemSierraGsm 2009-10-11 11:39:18 -07:00