Commit Graph

4066 Commits

Author SHA1 Message Date
Dan Williams
35daaff983 gsm: more complete parsing of PIN responses
Need to handle ex PH-NET PIN from a subsidy-locked device for
example.
2009-11-30 20:17:43 -08:00
Dan Williams
909b8b7c8d Merge commit 'origin/master' into states 2009-11-30 15:44:20 -08:00
Dan Williams
0f595adb7f gsm: fix unsolicited registration segfaults
By decoupling the solicited registration callback from unsolicited
replies, we can be sure of the call flow and avoid issues where
unsolicited registration will be processed when an explicit
registration request is no longer in progress.

Also ups the timeout on CREG=0,, to 120 seconds because that
appears to trigger an internal scan on some of the 'hso' devices
that I have, and can take up to 60 or more seconds to complete
or fail.
2009-11-30 15:41:09 -08:00
Dan Williams
d06f8f46c6 serial: don't run commands when there's already one in-progress
If there's already a command in-progress don't try to send
another until the previous one has timed out.  Also use
g_timeout_add_seconds() since precision doesn't really matter for
command timeouts.
2009-11-29 22:46:48 -08:00
Dan Williams
9dbf8f22c0 gsm: allow unsolicted registration updates to actually update reg state 2009-11-29 18:58:21 -08:00
Dan Williams
aea0be5b9a nozomi: fix detection (lp:425312)
Nozomi devices aren't quite ready when the ports show up, so
we have to keep trying to open the port for a few seconds and
eventually it'll succeed.  Should really be fixed in the driver
(ie, don't create the ttys until they can actually be used) but
whatever.
2009-11-26 13:54:47 -08:00
Dan Williams
15595b33dc gsm: CGDCONT parsing fixes (bgo #602552)
Ignore spaces and account for random parentheses in the CGDCONT
response.  Also fixes parsing CGDCONT=? on nozomi.
2009-11-26 13:52:50 -08:00
Dan Williams
8dd2421e9c core: don't allow double-scheduled callbacks
If the modem becomes invalid (it crashes and resets, for example)
the callback-info's modem_destroyed_cb() function will handle
cleanup.  Buf if the callback-info's callback does more work than
just returning the result (like simple_state_machine) it could
double-schedule the callback.  Don't let that happen.

We need better modem-removal handling, but this fixes a crash for
now.
2009-11-26 13:40:32 -08:00
Jeroen Elebaut
19e9c0cb48 serial: handle arbitrary amounts of <CR><LF> padding in responses
Firmware on some Option devices (iCON 505) likes to spray newlines
all over the place.  Some fixes and boundary checks by me (dcbw).
2009-11-24 15:36:32 -08:00
Dan Williams
3218b94376 cdma: handle 1x and EVDO quality separately 2009-11-24 12:57:44 -08:00
Jeroen Elebaut
5175c2accb gsm: some modems dislike spaces in AT+CGDCONT
0.7 hasn't used spaces for over a year, so this is a pretty safe
change.  Some modems just don't like it.

0.7 commit to remove spaces:

commit 0265bfe52dcc93372aff6064e849044ccb72aa1e
Author: Dan Williams <dcbw@redhat.com>
Date:   Fri Oct 24 15:15:06 2008 +0000

    2008-10-24  Dan Williams  <dcbw@redhat.com>

        * src/nm-gsm-device.c
                - (set_apn): remove erroneous spaces in AT+CGDCONT command (Jerone Young)
2009-11-24 11:31:22 -08:00
Jeroen Elebaut
5ceb3a2106 gsm: allow longer timeout for registration
Often modems will scan before registering with +COPS.
2009-11-24 00:43:20 -08:00
Dan Williams
3be4a15189 Merge commit 'origin/master' into states 2009-11-23 23:48:26 -08:00
Dan Williams
d8ff5f74e0 core: state -> DISABLED when the modem becomes invalid 2009-11-23 23:30:30 -08:00
Dan Williams
500fb5f29a gsm: don't regress states on registration change if still registered 2009-11-23 23:30:04 -08:00
Dan Williams
3193e97bb8 probe: fix probing on PPC due to missing cast
gcc will interpret the constant value as a uint32 but
the port's set_property() was taking it as a uint64.  Thus
the top 32 bits were probably garbage, and messed up
on big-endian architectures leading to random large
probe delays.
2009-11-17 14:16:24 -08:00
Dan Williams
3c6e4056e7 Merge commit 'origin/master' into states 2009-11-06 15:11:01 -08:00
Dan Williams
107f950a9e gsm: tighter signal strength validation
The standard dictates CSQ response strength value to be [0 - 31]
inclusive, and 99 means "unknown" or "no service".  Make that
apparent and don't treat 99 as 99% which it clearly isn't.  Also,
allow spaces in the CSQ response.
2009-10-30 17:11:31 -07:00
Dan Williams
122aa62afa trivial: spacing fix 2009-10-30 17:11:22 -07:00
Dan Williams
07cf870937 gsm: give a network scan 2 minutes instead of 1
On many modems that support 7 or more bands (quad-band 2G, tri-band
or more for 3G) scans take quite a while.
2009-10-30 16:55:56 -07:00
Dan Williams
54901933fe gsm: make "X4 &C1" init arguments optional (lp:455031)
At least don't error out of the fail since they aren't really
necessary, just nice to have.
2009-10-30 16:55:04 -07:00
Dan Williams
9bbc6ab53b core: initial implementation of modem states
Needs more work for GSM, but should be reasonably complete for CDMA.
2009-10-27 15:01:00 -07:00
Dan Williams
4e74953b91 cdma: return registration state, not error, when unregistered 2009-10-26 17:59:33 -07: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
2887a50b23 gsm: ignore errors from power-on command
Phones especially don't seem to consistently implement this.  For now,
we'll hack it out, but later, we'll want to have a class method for
power-on instead of just a property so that subclasses can decided for
themselves (since they know their hardware better) whether failure
of the power-on command is fatal or not.
2009-10-26 15:39:34 -07:00
Alexander Sack
16f3e00f34 gsm: fix unsolicited registration by calling the statemachine callback info - lp:416893 2009-10-15 01:32:08 +02:00
Dan Williams
3d86a3e89a gsm: don't issue CFUN=0 by default
Let plugins do it when they know it's OK.
2009-10-14 13:47:21 -07:00
Dan Williams
c77dbb7a94 cdma: give cards more time to register
5 was left-over from debugging unplug-while-registering issues,
was meant to be 15 (ie, 60 seconds) anyway.
2009-10-13 16:05:02 -07:00
Dan Williams
f4ada20709 cdma: implement registration in Simple.Connect path
Wait a bit for the modem to register before trying to dial.
2009-10-12 22:44:03 -07:00
Dan Williams
c0253c7c29 core: convert MMCallbackInfo modem refs to weak refs
Full references prevented destruction of the modem object if
it was unplugged or somehow removed.  To fix that using full
references on the modems would require that all usage of
MMCallbackInfo to be aware of the validity of the modem and to
ensure the callback was called whenever the modem became invalid.
That, needless to say, would suck.  Since any in-progress calls
can't complete when the modem is invalid anyway, just have the
MMCallbackInfo object return a generic error when the modem goes
away and the call is still in-progress.
2009-10-12 19:51:10 -07:00
Dan Williams
958b9048a3 cdma: split 1x and EVDO registration states
Like UMTS vs. GSM, EVDO and 1x are separate networks and technologies
and have separate registration state.  You can even be roaming on
EVDO while in your home 1x network.  Handle that.
2009-10-12 10:06:53 -07:00
Dan Williams
bdd60a4941 cdma: fix memory leak parsing serving system results 2009-10-11 11:31:23 -07:00
Dan Williams
0c5c94b691 cdma: add signal quality update helper for subclasses 2009-10-11 11:25:43 -07:00
Dan Williams
19b7c8fef1 cdma: use consistent terminology for registration 2009-10-11 11:24:41 -07:00
Dan Williams
665d1847a8 cdma: add port accessors for subclasses 2009-10-11 11:23:50 -07:00
Dan Williams
e1d757ea76 cdma: use secondary port more aggressively where one exists
Like on the Huawei EC121 and EC168C (Reliance India).
2009-10-11 11:15:46 -07:00
Dan Williams
91171cdae2 cdma: implement generic registration state handling 2009-10-09 16:17:13 -07:00
Dan Williams
a088f12956 cdma: better CSS response parsing 2009-10-08 10:16:25 -07:00
Dan Williams
01100c1008 gsm: strip command response bits from mfg/model/revision responses 2009-10-06 12:38:21 -07:00
Dan Williams
d867b1fe6a gsm: add cell access technology reporting to Scan() 2009-10-06 11:39:40 -07:00
Dan Williams
912b98723b Merge commit 'origin/master' into enable-split 2009-10-05 09:52:01 -07:00
Dan Williams
aa78b5f5e5 bluetooth: handle rfcomm device moves
rfcomm devices seem to be created as 'virtual' devices first, without
any parents, then moved to the right place in the device tree.  So
handle moves too; if the modem was already found in the 'add' phase
it'll be ignored in the move phase.
2009-10-02 23:33:18 -07:00
Dan Williams
ed059286c5 bluetooth: physical device is a bit higher up the tree 2009-10-02 23:32:57 -07:00
Dan Williams
e5441115a2 bluetooth: recognize rfcomm devices
Two hacks here:
1) rfcomm ports don't have an easily accessible driver name, so we just
match the parent's subsystem to 'bluetooth' and use that

2) libgudev doesn't seem be be able to get the rfcomm device's device file,
which would normally be /dev/rfcommX.  Oh well, we don't use the device file
yet anyway
2009-10-02 22:31:16 -07:00
Dan Williams
3b19a85727 core: split generic modem enable/disable operations 2009-09-23 16:04:25 -07:00
Dan Williams
f2a3825f9d generic: match CONNECT even if we get PPP spew
Found by Eugene Crosser <crosser@average.org>
2009-09-23 01:38:42 -07:00
Dan Williams
64b7be7460 serial: use connected notifier only when needed
It's only relevant when the port is open anyway, and marking the port
disconnected in nm_serial_port_close(), which used to be called from
the finalize() function, would trigger the notifier when stuff was
already cleaned up.  So move the nm_serial_port_close() call to
dispose() and remove the connected notifier before we clean the
port up.
2009-09-09 07:28:54 -07:00
Dan Williams
c02adee802 serial: mark port disconnected on close
Otherwise it could still be connected when the port was opened again,
and subsequent calls for stuff could fail.
2009-09-08 17:41:25 -07:00
Dan Williams
14e5c52f78 core: don't allow concurrent flashes on the same device
Previously, a few operations (like disable) could trigger a modem
flash in parallel with another flash.  That's wrong, don't allow
that.  At the same time, add in finer-grained error checking on
serial port speed operations, and fix a GSM generic bug that would
send the POWER_UP string on disable.
2009-09-08 17:34:04 -07:00
Noel J. Bergman
53af144f49 udev: handle removal of parent usb devices
fix device removal event handling to remove modems
if the associated parent usb device is removed
2009-09-09 01:17:20 +02:00