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.
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