This patch only provides access to the SIM phonebook. Note that the
interface to the SIM phonebook is quite slow, which may cause timeouts
on phonebooks with a large number of entries using the default D-Bus
timeout value.
The proper way to register with a particular network technology
is to use a band selection command (e.g. select 2G only or 3G only,
or hybrid)
The tech selection according to 27.007 is non-binding anyway
Some modems, like the G1 do not support UCS2/UTF8. However, we can
still attempt to export some phonebook entries which are probably
going to be simple Latin1 characters (e.g. 411, etc)
SIM File Access conditions would be reported similarly between various
stacks, so it seems like the core logic of figuring out the access
conditions belongs up in the daemon.
This also fixes various problems, including:
- access conditions read from bytes 10-12, instead of 9-11.
- read/update, invalidate/rehabilitate and increase conditions
read from the wrong bits (0-3 instead of 4-7 and vice versa)
Some Nokia modems only support "MT" as the incoming sms store.
Presumably the modem has some intelligence to pick the right store
depending on the SMS class. This means that oFono must now track
what the current store is, and issue a CPMS, CMGR & CMGD when a
CMTI notification arrives.
This fixes segfaults resulting either from destroying a NULL ISI
client, or when multiple ISI modems become available, and get removed
in the wrong order. To support multiple ISI modems concurrently, a
modem object needs to be exposed via the gisi API, and tracked by the
ISI driver. This is a TODO item to add.
CLCC does not report clip_validity. So if clip_validity of witheld
has been reported in CLIP, but we're still somehow polling CLCC,
which happens if CRING is not supported, and RING is used instead,
this fact can be lost. Make sure we preserve clip_validity if
possible
Add capability to read / write / stat files on the SIM. This now
supports cyclic, linear fixed and transparent SIM files.
Parse GET RESPONSE result to find structure of the file (cyclic, linear
fixed, or transparent), the file size and the record length.
Add both read and update capability for binary and record-based files.
Implement writing sim files through AT.
Use immediate mode reporting, which means that the individual CPBR
lines are reported up to the core immediately. This has a couple
advantages:
- We do not need to malloc/free a bunch of single variables
and copy them over. Helps performance.
- The lines are not buffered up and given to the plugin in one
shot, instead processing is performed piecemeal. This helps
with keeping memory consumption down to a minimum
Since the PDU line doesn't have a prefix, the parser can get confused
if other unsolicited notifications arrive. There is already explicit
support for unsolicited notifications with PDU, so we use that
instead
- Can receive 7Bit, 8Bit and UCS2 encoded messages
- 8Bit is assumed to be a datagram to a certain port
- Messages with Invalid format are ignored
- Concatenation not yet supported
Modem cleanup happens in two places: manager_free (ofono exit) and
manager_destroy (manually removing a specific modem). Both need
to unregister the entire set of registered interfaces.
manager_destroy function did not unregister all interfaces. Fixed
by adding a common function for both code paths.
The CallWaiting interface had one settable attribute after the latest
set of refactoring. Squash it onto the CallSettings interface where
it belonged in the first place
The use of a struct with status & cls seemed pointless when only
a single integer can work just as well.
Also the Fax & Data attributes have been squished. oFono does
not yet support those call types.
Creates a new structure in driver.h called ofono_phone_number.
This is meant to replace const char *number, int number_type
arguments everywhere.
Fix up all existing code to use this structure instead.