Hi Tony,

>>> We've been working on MMS support for Ubuntu Touch recently and have run 
>>> into a couple of stumbling blocks, so I have a few questions about the 
>>> current MMS logic in oFono ( we're still 1.12 based ), and in particular 
>>> the provisioning/management of gprs-contexts.
>>> 
>>> As part of this work, we're planning to switch from using the builtin gprs 
>>> 'provision' plugin, to the new android-provision/apndb plugin ( originally 
>>> written by Simon Busch ) which uses the file apns-conf.xml instead of 
>>> mbpi's serviceproviders.xml.
>>> 
>>> There are a couple of issues we ran into...
>>> 
>>> 1. How to represent APNs that support multiple usages types?
>>> 
>>> The "type" attribute in apns-conf.xml is a list vs. the single type defined 
>>> by a gprs_context.
>>> 
>>> The android-apndb plugin uses TYPE_INTERNET for APNs which support multiple 
>>> types.  In order to properly support MMS, the core code needed to be 
>>> modified to allow the MMS properties to be additionally be set on a 
>>> TYPE_INTERNET context.  Thus if an APN supports both Internet and MMS, our 
>>> DownloadManager can grab the additional MMS properties from the context and 
>>> handle MMS traffic.
>>> 
>>> Now perhaps I missed something and there is a way to represent a combined 
>>> usage APN ( maybe using TYPE_ANY? ), but I couldn't see how to accomplish 
>>> without changes to the core gprs code.
>>> 
>>> 2. No way to disable core ofono TYPE_MMS network config.
>>> 
>>> The core gprs_context code has special logic for TYPE_MMS contexts which 
>>> configures the HTTP proxy using networking ioctl requests.  We have an 
>>> external download manager that handles the actual download of content from 
>>> the message center.  As it has logic to handle HTTP proxies already, if we 
>>> use TYPE_MMS, we'd need a way to disable ofono's builtin logic.
>> 
>> you do realize that these are not actually standard HTTP proxies. You are 
>> suppose to talk to the MMS Proxy to reach the MMSC. That is how this works. 
>> You always go through the MMS Proxy.
> 
> I haven't actually worked directly on the proxy support myself, and had 
> assumed this was a standard HTTP proxy.  I will make sure my co-worker 
> handling the support in our download manager realizes this, and point him at 
> mmsd/connman's GWeb code for reference.
> 
>> If you are mixing Internet proxies with MMS proxies, you end up in a really 
>> awkward configuration later down the road.
> 
> Sorry, no intentions of mixing them.
> 
>> As Denis mentioned we have been using this successfully within mmsd that we 
>> wrote.
> 
> I saw that, we originally did a bunch of work with mmsd, however we decided 
> instead to add MMS capability to our ubuntu-download-manager used in Touch.

feels weird if a download manager handles delivery receipts and read receipts. 
Especially since there are so many MMS specific header in the HTTP request.

> > The current design of oFono works just fine by activating the
> > MMS context and then talking to the MMS proxy to reach the MMSC.
> 
> Sure, although as I mentioned orginally, if we already have an active data 
> connection and the apn happens to also support MMS, it seems odd not being 
> able to share.

If you have an active data connection you can just compare the TYPE_MMS context 
details (APN, username, passed) with the TYPE_INTERNET context ones and if they 
match, you choose not to activate the MMS one and just use the Internet one. As 
I said in the other emails, oFono is activating contexts only on request. So 
either ConnMan requests the Internet context or mmsd requests the MMS context. 
oFono is not in the business of magically activating contexts. It only attaches 
to the GPRS part of the network.

The only problem with the Internet context usage for MMS is that you now also 
have to talk to ConnMan to figure out when the IP part of the context is 
successfully configured. And here is where this gets complicated. And active 
context does not mean it is actively in use. You might actually use your WiFi 
and have an activated Internet context, but neither the IP or routing is set. 
Or in same case you are just on WiFi and have no Internet context activated. As 
you can see this can get extremely complex.

We opted for just providing a MMS context type and an Internet context type. If 
the APN happens to be the same (not always the case btw.) then you just double 
activate that context. Send or receive your MMS and deactivate it. We have used 
this just fine. And in that case oFono does all the heavy lifting for you. You 
just need to talk to the MMS Proxy address that has been configured. That is it.

Regards

Marcel

_______________________________________________
ofono mailing list
ofono@ofono.org
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to