Commit Graph

317 Commits

Author SHA1 Message Date
Dan Williams
bb6f997fb8 gsm: update for new states and state flow fixes 2009-12-01 16:46:23 -08:00
Dan Williams
7f1951fec8 core: fix ordering of DISABLING and DISABLED states 2009-12-01 16:44:07 -08:00
Dan Williams
bf13b4698f cdma: reset previous state if disconnect failed 2009-12-01 16:33:44 -08:00
Dan Williams
c169396c1b cdma: correctly handle state update after disconnection
We only want to ignore connected/connecting/disconnecting states
and update the state based on registration for unsolicited
registration changes.  Basically, when disconnecting, the modem
will be in DISCONNECTING state, but after the disconnect has finished
we want to update the modem's state based on the current
registration status.  But the previous check for >= DISCONNECTING
would prevent that from happening, so we need a slightly more specific
check in update_enabled_state().
2009-12-01 16:19:27 -08:00
Dan Williams
d438012f63 cdma: s/GSM/CDMA
Oops.
2009-12-01 16:01:20 -08:00
Dan Williams
02c7db7fcf cdma: handle interim enabling/disabling states better
Have to fall back to the previous state if the enable/disable
operation fails since we cannot assume anything about the new
modem state when a failure occurs.
2009-12-01 15:58:11 -08:00
Dan Williams
a295afdd2d cdma: update for new modem states and make connect actually work 2009-12-01 15:39:06 -08:00
Dan Williams
e9964231e9 core: use modem states to protect against double operations 2009-12-01 15:38:11 -08:00
Dan Williams
0f19bbff0f core: add a few more interim modem states 2009-12-01 15:37:37 -08:00
Dan Williams
015da49d06 core: set modem state before potentially destroying the modem 2009-12-01 14:19:25 -08:00
Dan Williams
d269a9a278 core: state should always be reset to DISABLED when validity changes
When the modem becomes valid, it should initially be in disabled state,
and when it becomes invalid, it should also go to disabled.
2009-12-01 12:58:57 -08:00
Dan Williams
76facd6891 mbm: update state after enabling the device 2009-12-01 12:58:25 -08:00
Dan Williams
231d2ca90b core: schedule enabled/disabled callbacks to avoid infinite recursion 2009-12-01 12:57:39 -08:00
Dan Williams
3350a3aeea cdma: set correct modem state on connect failure 2009-12-01 12:57:18 -08:00
Dan Williams
881a725ea4 Merge commit 'origin/master' into states 2009-12-01 11:22:00 -08:00
Dan Williams
b46ac89ff6 zte: add missing ZTE device aux port tags 2009-12-01 10:02:47 -08:00
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
c87b4dcc77 zte: add additional device port tags
Don't know the aux port yet but we'll figure that out;
and in the mean time the autoprobing should tag the
port as a secondary port anyway.
2009-11-30 17:42:37 -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
f205c814b5 hso: ensure authentication works again after auth errors 2009-11-30 09:47:39 -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
028c6a5e4e hso: fix up connection issues and error ignorance
Should have ignored errors when cleaning up old contexts that
may or may not exist.  Rename hso_disable() to something more
appropriate since it's actually part of the enable/connect path,
not the disable path.
2009-11-29 22:45:28 -08:00
Dan Williams
3890009bcc test: actually send username and password when connecting 2009-11-29 22:45:03 -08:00
Dan Williams
01db3f1c2f test: give connect a bit more time
Registration can be part of the connect process, which can take quite a while.
2009-11-29 21:49:46 -08:00
Dan Williams
c8fdb592e3 hso: send authentication info correctly for Icera-based Option modems
Icera-based modems use AT_OPDPP instead of AT$QCPDPP.
2009-11-29 18:58:56 -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
d5b0574f58 test: handle scan errors more gracefully 2009-11-29 18:56:29 -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
50412ba3f9 test: handle signal quality exceptions 2009-11-24 15:16:58 -08:00
Dan Williams
8bd10ebda2 huawei: sometimes reports BOOT with two LFs, not LF+CR 2009-11-24 13:04:21 -08:00
Dan Williams
3218b94376 cdma: handle 1x and EVDO quality separately 2009-11-24 12:57:44 -08:00
Dan Williams
ac9cae2bc8 zte: retry init strings once on timeout
Some ZTE devices (MF626 for example) will emit the ZPASR unsolicited
response right after MM opens the port, and they will just throw the
init string away. So retry the init string once; the ZTE devices will
see it the second time and continue as normal.

This is the MM version of NM commit 861e9689c513cbd61fa75205a681a69d4ba8236c
2009-11-24 12:16:14 -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
c463b5a400 Merge commit 'origin/master' into states 2009-11-24 00:20:52 -08:00
Dan Williams
9e92bceb07 hso: consolidate PDP context activate/deactivate operations
And rename the function to make it clearer.  disable() wasn't using
the common activate/deactivate code so switch it to do so.
2009-11-24 00:19:27 -08:00
Dan Williams
3be4a15189 Merge commit 'origin/master' into states 2009-11-23 23:48:26 -08:00
Dan Williams
e5b5c83394 hso: disconnect the PDP context that was active (if any)
Instead of always disconnecting context #1.
2009-11-23 23:32:01 -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
1fe9150f5c test: add lsudev.c since I don't know where else to put it
A helpful little tool to debug udev device relationships.
2009-11-17 15:24:52 -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
Torgny Johansson
74f679acdb mbm: add USB IDs for C3607w 2009-11-04 13:11:23 -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