Two issues here, first we dont' need to chain up to the parent
because it's not doing anything we need (it's mainly for PPP-based
devices) and second we need to wait a bit for the disconnect command
to complete by specifying a callback, otherwise the command may get
discarded when the port is shut down afterward.
Don't need init retries since the modem seems pretty sane, and we
also don't need to call AT+CFUN=1 twice. Just once should be
fine. We also don't need any "flashing" since the modem doesn't
really do PPP and thus shouldn't need any of the serial port
carrier stuff to get its attention, since we'll never be using
PPP on any of its ports.
Use standard vendor/device id detection mechanisms and handle the
net port like other net ports are handled, by just claiming it. Also
reject CDMA modems for now.
BUG=chrome-os-partner:2394
TEST=gmerge modemmanager, watch logs, see detected as Samsung modem, connect to AT&T network
Review URL: http://codereview.chromium.org/6614026
Patch from Jun Woo Lee <jw86.lee@samsung.com>.
Change-Id: I913628ff4a1cd16c8180e3c808644b0134e69e31
Implement connect, disconnect, and IP4 config stuff.
Also fix handling of Icera private data. After creation we
need to use MM_MODEM_ICERA_GET_INTERFACE(m)->priv to get the
private data instead of just dereferencing the MMModemIcera,
for reasons that I don't know. If this isn't done, data
gets silently corrupted because writes to the private data
are going into a random location in the object. This a
side-effect of the slightly hack-ish way that MMModemIcera
is a GInterface with private data.
-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.
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."
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.
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.
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.
And possibly the X225 as well. Can't tell much about the modem and
what commands it supports other than AT+SYSSEL for mode selection.
The driver software and connection manager for Windows/Mac OS X are
written by JRD Communication in China, which is a subsidiary of
TCT, which makes Alcatel-branded phones and data sticks. But it
doesn't appear to be the same firmware as other Alcatel/T&A modems
like X060S and such which are supported by the Longcheer plugin.
For devices like the UMW190 that appear to be dual-mode without needing a
firmware reload (unlike Gobis, which are dual-mode but require a reboot with
different firwmare) prefer CDMA capabilities since that's where these devices
will most likely be used more often. In the end we'll need to change MM to
advertise a "capabilities" attribute on the modem class and modify devices
such that they can implement both GSM and CDMA semantics at the same time.