Commit Graph
457 Commits
Author SHA1 Message Date
Dan Williams 16039244bb core: rework logging
Make it more flexible, add logging to a file, and absolute and
relative timestamps.
2011-01-23 20:51:48 -06:00
Guido Günther d44ae44558 gsm: wire up USSD Respond function (bgo #638038) 2011-01-14 12:25:05 -06:00
Dan Williams d908389aff core: add modem reset/power-cycle command
Based on a patch by Elly Jones from Google.
2011-01-14 12:17:02 -06:00
Michał Sroczyński f4d4569cdd gsm: correctly parse Samsung S8500 Wave CREG response
(testcases by dcbw)
2011-01-11 13:42:54 -06:00
Dan Williams 794353ebcc cdma: update reg state to HOME based on SPERI response
If the SPERI response indicates the home network, then set
CDMA registration to HOME if it was REGISTERED (which is
less specific).
2011-01-05 11:15:11 -06:00
Dan Williams 6c56db07fc cdma: fix segfault by handling MEID property
Also, MEID->Meid to follow standard D-Bus property semantics.
2011-01-04 17:21:41 -06:00
Dan Williams b0cd9288c2 cdma: fix CDMA registration state retrieval on single AT port devices
If the device only has one AT port that's being used for data and
thus we can't do more specific registration checking in MMGenericCdma
using AT commands, but generic registration checking was successful,
just use the less specific state.

Previously, an error would be returned when no AT port was available
even though less specific QCDM registration checking worked.  That
was just stupid.
2011-01-04 14:06:03 -06:00
Dan Williams ceb5cc29d6 core: signal property changes for IpMethod
If the modem's IP Method changes after construction because the
modem's full capabilities were only discovered after it was created,
make sure the change notification gets emitted.
2011-01-01 17:47:40 -06:00
Dan Williams a502fd2b19 gsm: add access technology support for HSPA+ 2011-01-01 11:55:41 -06:00
Dan Williams 292c98029d test: fix CIND test index checking
CIND indexes returned from helper are 1-based, not 0-based, because
that makes it easier to match against the modem's unsolicited CIND
message.
2010-12-21 11:54:47 -06:00
Elly Jones eb90498efd Add CDMA Activate and ActivateManual methods.
BUG=6885
TEST=built modemmanager and cromo

Change-Id: Ib73a093b13da05948a2f1da8f051fe7c55682584

Review URL: http://codereview.chromium.org/3517013
(cherry picked from commit f447c8e1a0062500e1171e031cf4c8fef76ffd59)

Conflicts:

	src/mm-modem-cdma.c
2010-12-20 15:19:45 -05:00
Elly Jones 48169926f4 Don't probe virtual devices before they exist
Prevent ModemManager from probing virtual devices before their
associated files exist in /dev tree.

Contributed by Nasser Grainawi <nasser@codeaurora.org>

Review URL: http://codereview.chromium.org/2118005
(cherry picked from commit 617660e3572a7b79ed83f9fc0fda89b7efcb2d4d)

Conflicts:

	src/mm-plugin-base.c

Change-Id: Ie5e8b98fb6b6c69e294175523ef99c934092433b
2010-12-20 12:41:03 -05:00
Elly Jones 245818de33 Install xml files so they can be used by cromo (chromeos modem manager)
Amended: Install the files under their proper DBus names.

Review URL: http://codereview.chromium.org/1618004
(cherry picked from commit 89f7f05f1294485fa8b44cfdd3c9b0d924d45ac1)

Conflicts:

	Makefile.am

Change-Id: I65b2b0c1b5e579bb5b1d5d5b390c3be2ae49543c
2010-12-20 12:23:41 -05:00
Elly Jones d32eeec9ea Update from Qualcomm to support smd devices in Modem Manager
Review URL: http://codereview.chromium.org/661471
(cherry picked from commit 8475eb44b7ea41afa823919b017a39d82b07a5a2)

Conflicts:

	src/mm-plugin-base.c

Change-Id: I825886cad62a27acb39dfe74da7028d83adf692a
2010-12-20 11:05:49 -05:00
Dan Williams 00b0b70f5d bluetooth: tag 'moved' bluetooth ttys as candidates
The kernel appears to add the device first without any parents,
then to move it to the correct place in the hierarchy, with its
immediate parent being the device's HCI controller.  So we need
to capture the 'move' event too since that's when the rfcomm
device is finally usable.
2010-12-19 15:18:12 -06:00
Dan Williams a4e620aca0 bluetooth: ensure bluetooth rfcomm devices get tagged as candidates 2010-12-19 15:07:56 -06:00
Dan Williams d2ce75b57a core: separate PropertiesChanged signal XML
Which requires that we turn it into a GInterface that MMModemBase
can implement, because dbus-glib does not allow attaching more
than one introspection glue structure to an object at a time.

Also implement the standard D-Bus properties changed signal.
2010-12-17 16:27:55 -06:00
Dan Williams 592d71ff76 core: work around udev parallel startup race
Ignore devices that aren't completely configured by udev yet.  If
ModemManager is started in parallel with udev, explicitly requesting
devices may return devices for which not all udev rules have yet been
applied (a bug in udev/gudev).  Since we often need those rules to match
the device to a specific ModemManager driver, we need to ensure that all
rules have been processed before handling a device.

Do this by adding an item to the environment of each device that MM
might possibly be interested in, and ignoring devices that don't
have that.  When the device is fully processed by udev, MM will get
an 'add' event and the device will have all rules applied.
2010-12-08 17:04:59 -06:00
Dan Williams ea0797cbec gsm: prefer AT+CIND signal quality for modems that support it (lp:682282) (bgo #636040)
Some devices always reply with 99 for AT+CSQ when in UMTS mode (Linktop LW273)
so if the modem supports it, use CIND/CIEV instead.
2010-11-30 10:04:46 -06:00
Dan Williams 586c9ec2c5 gsm: don't poll signal quality if it was recently updated 2010-11-29 12:01:42 -06:00
Dan Williams 5419f1f195 core: allow setting IP method after construction
Some modems might not know their IP method until after the
modem object has been created.
2010-11-29 00:21:44 -06:00
Dan Williams c1232e2534 serial: print debug data unsigned 2010-11-28 23:10:27 -06:00
Dan Williams dc95f531ad gsm: query signal strength with +CIND if modem does not support +CSQ (lp:682282) 2010-11-28 22:46:03 -06:00
Dan Williams 6d37c9b471 core: +CIND indexes start at 1 2010-11-28 21:46:27 -06:00
Dan Williams 2dd59c3ddd core: add index to CIND helper 2010-11-28 21:34:00 -06:00
Dan Williams 9479c04aec core: add +CIND parsing helpers 2010-11-28 19:45:53 -06:00
Dan Williams 802a6f3a56 gsm: fix up CID signed/unsigned confusion
-1 = no APN set, so use modem default.  We'll have to fix a few
more things up for modems like hso/mbm that don't use ATDT and
require CIDs, but this gets us halfway there for other devices.
2010-11-10 13:16:19 -06:00
Dan Williams d2ab1d7f78 gsm: fix up USSD property exports
If the base class advertises that it implements an interface, it
really does need to implement all that interface's properties too.
Otherwise dbus-glib gets mad and can't look up the property information
for D-Bus Introspection.
2010-11-08 10:24:26 -06:00
Guido Günther 3c13d9aec8 gsm: add preliminary USSD support (bgo #590798)
We currently convert to and from the modem's set charset and always pass
'15' as the data coding scheme. Passing the correct data coding scheme
as third argument to CUSD only upsets the network. This contradicts 3GPP
TS 23.038. Other tools like gsm-ussd handle it the same way.

Network responses that require further actions are not yet implemented.

(some fixes and cleanups by Dan Williams)
2010-11-05 14:50:50 -05:00
Dan Williams 2a98b2ae2d core: add bin -> hex string converter 2010-11-05 14:44:20 -05:00
Dan Williams 6921a9f71d core: unconditionally enable the Location Services API
This required dbus-glib 0.86 or later, which was released 2010-03-24.
2010-11-05 14:03:44 -05:00
Dan Williams a2d54b1437 trivial: avoid build warning by using g_message() correctly 2010-11-03 10:03:51 -05:00
Dan Williams 610a907d5c gsm: retry SIM ID if we didn't get it before card was enabled 2010-10-25 21:18:10 -05:00
Dan Williams 6f809b589b gsm: request ICCID after checking the PIN status
Checking PIN status makes sure the SIM is initialized, and
that has to happen before we try to read the SIM for the
ICCID.  So move PIN checking before getting the ICCID, and
retry the ICCID at least once for odd cards like Gobi 1K
that seems to need one more try right after it's done
booting up.
2010-10-25 21:02:43 -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 46106660fe core: print out modem hardware VID/PID and subsystem 2010-10-22 11:34:55 -05:00
Dan Williams 0ec4dbcc1a trivial: fix formatting 2010-10-22 11:25:03 -05:00
Dan Williams 91a58bbe3d core: detect PCMCIA manfid and cardid
These aren't added to the udev device database by anything yet
(though they should be) so grab them manually.
2010-10-22 11:20:16 -05:00
Dan Williams 7c410a8d08 core: strip "0x" off udev ID_VENDOR_ID and ID_MODEL_ID strings 2010-10-22 11:14:34 -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 328d2369a9 core: add DeviceIdentifier property
This is computed before any PIN is entered, and thus before we can
usually get IMEI or MEID/ESN out of the device in many cases. It's
therefore not the same as EquipmentIdentifier.

This is intended to be used by UI programs for matching devices with
PIN numbers for automatic unlocking.  While the PIN number is actually
*SIM* specific, no modems allow access to the IMSI before the PIN is
entered, and thus we cannot actually match the PIN with the SIM.  The
device ID is the next best thing we can use and should allow auto
unlocking in most cases.
2010-10-21 16:57:37 -05:00
Dan Williams 4cdaba3161 cdma: clear error when getting state if no AT port is available
We don't care about the error if we have a QCDM port.
2010-10-14 14:00:42 -05:00
Dan Williams dd8a061d28 serial: make QCDM frame parsing more robust
Ensure that valid HDLC frames that are not valid QCDM frames
are correctly rejected, and that their data is correctly
discarded.

The core bug was that Sierra CnS frames have leading and trailing
HDLC frame terminator bytes (0x7E), and the code was incorrectly
treating the leading terminator as the end of a frame, not the
beginning.  Thus it would consider the outstanding serial request
finished without actually parsing the response packet.

Now, we make sure we don't tell the serial receive code that
we have a full QCDM frame until we actually do have one, which is
at least 3 bytes + 0x7E.
2010-10-14 10:22:59 -05:00
Dan Williams 8a4f621245 core: add more QCDM frame marker testcases 2010-10-14 10:22:41 -05:00
Dan Williams e16a58e54b core: add basic QCDM serial port unit tests
Test that a Version Info request/response works as expected, and
add a testcase for a bug where specific Sierra CnS responses to
the Version Info request do not properly return an error when
attempting to parse the response as a QCDM packet.  Fix for the
second thing forthcoming.
2010-10-14 00:10:46 -05:00
Dan Williams 1dae103484 build: create convenience serial library
For better unit testing.
2010-10-14 00:10:18 -05:00
Dan Williams 9956b06a44 core: add helper to create QCDM serial ports from a file descriptor
Aids in unit testing
2010-10-14 00:09:22 -05:00
Dan Williams ad4e2fc656 serial: allow creating serial ports with a given file descriptor
To enable better unit testing of MMSerialPort and subclasses
behavior.
2010-10-14 00:08:14 -05:00
Dan Williams 8935812da4 serial: kill serial port closing wait
This is the real fix for 81d0fd148f.

Some devices don't interact well with the option driver or the usb-serial
layer; they don't respond to the USB data requests and thus data never
gets written to that port.  When close(2) is called, that data is still
pending and so the tty layer waits 30 seconds before returning from
the close.  This is the 'closing_wait' value, which unfortunately is
not able to be modified by ModemManager because most serial drivers
for 3G devices don't implement the .ioctl handler or its TCIOSSERIAL
option to change closing_wait.

This goes along with a kernel patch to various drivers to enable
the TIOCSSERIAL ioctl to modify closing_wait which will be posted
soon.
2010-09-28 10:20:11 -05:00
Dan Williams 81d0fd148f core: better debugging of serial port open/close
Some devices don't interact well with the option drivr or the usb-serial
layer; they don't respond to the USB data requests and thus data never
gets written to that port.  When close(2) is called, that data is still
pending and so the tty layer waits 30 seconds before returning from
the close.  This is the 'closing_wait' value, which unfortunately is
not able to be modified by ModemManager because most serial drivers
for 3G devices don't implement the .ioctl handler or its TCIOSSERIAL
option to change closing_wait.

Print out open/close timestamps to help debug this issue and get a
list of modems that have this problem.
2010-09-27 16:04:11 -05:00