2009/8/10 Denis Kenzior <denkenz(a)gmail.com>:
>> It would make sense for the providers to resend the MWI information
>> everytime subscriber connects the network and then it would be less
>> problematic in case the information couldn't be written to SIM, but I
>> don't know if they ever do this.
> Probably they don't, there are also weird roaming cases to consider,
> where you receive MWI, turn phone off, step on a plane and turn phone on
> with some other network entirely.
There is another case to consider when the SIM is moved to a
completely different phone. In fact, I think this is the original
reason to store the MWI flag to the SIM.
This is why we always attempt to write to the SIM for EFmwis. If the SIM
doesn't support this file, then there's nothing we can do to preserve the MWIS
information in the case you describe above.
There are other cases as well:
- EFmbdn & perhaps EFmbi
> Can we make the MWI interface smarter somehow? Perhaps by not enabling
> it unless at least the EFmwis file is available, or by always storing the
> EFmwis contents on the filesystem?
I think this makes sense. There is another, related issue with some
Nokia modems, though. They might not support low-level, EF access
directly, but have some higher level API for accessing things like the
MWI flag, HPLMN list and SPN. We might need to think about adding such
high-level API support to the driver API as (optional) ops --
especially if other modems behave similarly -- otherwise the ISI modem
driver may need some kluge to handing EF writes.
There is vast amount of information stored on the SIM that we need to expose.
Today oFono processes:
We also eventually need to support:
So there are two issues here:
- There is absolutely no standard data format for such vendor commands. So
coming up with a higher level API that supports all modems might be tricky.
The advantage of using low-level SIM access is that the command syntax & data
format is standard and should be supported by any modem out there. Of course,
as you point out, many don't.
- This presents the issue of having many more code paths to debug inside the
core and potentially many more plugin functions to implement.
I'd like to keep the core as clean and small as possible. What is your
feeling for the level of bloat such higher level APIs will introduce in
comparison to a giant if-else statement inside the driver itself?