This commit implements the GPRS context setup and teardown according to
doc/dataconnectionmanager-api.txt
One issue with the AT implementation of the api is that "Powered" (a
read-write property) can be set independently of "Attached" (read-only
property) and remain set when "Attached" is clear. The semantics would
be that the network doesn't have resources to let the modem attach,
but the modem waits for the resources to become available and then
attaches. On AT the modem is in this state only when executing +CGATT,
so currently the code will rerun +CGATT as soon as the previous one
returns with error, probably starving other commands. A possible
workaround would be for "Powered" to flip back to False after the modem
fails to attach once, or give up on having separate properties.
Alternatively we could re-try to attach periodically but on one modem
I've tried +CGATT fails after about 1 minute (that's the Calypso) and
on another only about 0.5s (Nokia phones with AT emulation).
When "Powered" is set and "RoamingAllowed" is clear and we manage to
attach and find that we're roaming, ofono resets "Powered".
We may want to catch the user trying to dial *99***1# which is the
backwards compatibility quirk for old modems (same way ofono parses
USSD strings).
We already know the indicators we're interested in from the
specification, malloc/free-ing the indicator names is thus pointless.
Instead save off the indicator index positions in an array. Parse the
current values instead of storing the unparsed list.
This updates the g1 code to create the GAtChat object in the enable() callback,
and to unref it in the disable() callback. This is more in line with what
the other plugins do, and as a bonus fixes a segfault when powering down
the G1 modem..
Signed-off-by: Andres Salomon <dilinger@collabora.co.uk>
Reports <foo> Broadband <foo> instead of <foo> Broadband Minicard <foo>
F3607gw Mobile Broadband Data Modem
F3607gw Mobile Broadband Modem
F3607gw Mobile Broadband GPS Port
F3607gw Mobile Broadband Network Adapter
F3607gw Mobile Broadband Device Management
F3607gw Mobile Broadband USIM Port
The G1 doesn't support mode2, despite advertising it.
The G1 chokes w/ an "Error 303" when we specify NMI mode 2. Adding a
quirk to drop that mode from the supported list (just use mode 1) allows
the G1 to properly deal with SMS.
This is based on the generic_at parser, with unnecessary stuff removed.
The G1 routinely screws up CRLFs, so the parser needs to account for
that. This parser ignores leading CRLFs (which is what reference-ril
does as well), as well as trailing LFs (which are sometimes left out).
CRs are used as end-of-message indicators. Since we're not bothering
tracking CRLFs, there's also no need for a GARBAGE state, or MULTILINE
stuff.
G1 plugin is based on generic_at, with a bunch of stuff dropped
and simplified. We use AT+CFUN=1 for powering on rather than having
a configurable init string. We also manually set the default state
during init (the G1 appears to start in mode V0 by default). The
device (/dev/smd0) is hardcoded.