2010-12-13 11:10:12

by Slawomir Bochenski

[permalink] [raw]
Subject: How to implement multiple instances of obexd service?

In order to fully implement Message Access Profile, support for more
than one so-called instance is needed (MAP specification, chapter
3.1.8). According to specs, separate e-mail accounts on MSE should be
represented by separate MAS instances. This requires one SDP record
per instance and those differ by MASInstanceID and ServiceName.

As I understand this also implies that each and every instance needs
its own separate RFCOMM channel?

What would be the preffered way to deal with this ugliness in obexd
code? If separate channels are needed how to keep this in compliance
with bluez doc/assigned-numbers.txt? And what about assigned bitmask values for
services in src/obex.h?

--
Slawomir Bochenski


2010-12-13 13:56:05

by Slawomir Bochenski

[permalink] [raw]
Subject: Re: How to implement multiple instances of obexd service?

On Mon, Dec 13, 2010 at 2:21 PM, Johan Hedberg <[email protected]> wrote:
> Hi Slawek,
>
> On Mon, Dec 13, 2010, Slawomir Bochenski wrote:
>> On Mon, Dec 13, 2010 at 1:00 PM, Johan Hedberg <[email protected]> wrote:
>> >> And what about assigned bitmask values for services in src/obex.h?
>> >
>> > Do we need to change something there?
>>
>> In that case src/obex.h is the only place that will need simple
>> modification for now -- MAP service value for services bitmask. This
>> may be OBEX_MAP (or OBEX_MAS) and I supppose its value should be the
>> next one available -- (1 << 8).
>
> Right, we'll need that. I thought you were talking about something
> related to multiple MAS instances (which I don't think affect this
> bitmask in any way).
>
> Johan
>

Yes, if we were to implement multiple instances using multiple
obex_service_driver structures (which would be needed in order to
support additional sdp records and additional channels), then we would
again have to add one define for each planned instance as obexd allows
adding only one service driver per service.

--
Slawomir Bochenski

2010-12-13 13:21:45

by Johan Hedberg

[permalink] [raw]
Subject: Re: How to implement multiple instances of obexd service?

Hi Slawek,

On Mon, Dec 13, 2010, Slawomir Bochenski wrote:
> On Mon, Dec 13, 2010 at 1:00 PM, Johan Hedberg <[email protected]> wrote:
> >> And what about assigned bitmask values for services in src/obex.h?
> >
> > Do we need to change something there?
>
> In that case src/obex.h is the only place that will need simple
> modification for now -- MAP service value for services bitmask. This
> may be OBEX_MAP (or OBEX_MAS) and I supppose its value should be the
> next one available -- (1 << 8).

Right, we'll need that. I thought you were talking about something
related to multiple MAS instances (which I don't think affect this
bitmask in any way).

Johan

2010-12-13 12:31:19

by Slawomir Bochenski

[permalink] [raw]
Subject: Re: How to implement multiple instances of obexd service?

Hello Johan,

On Mon, Dec 13, 2010 at 1:00 PM, Johan Hedberg <[email protected]> wrote:
>> And what about assigned bitmask values for services in src/obex.h?
>
> Do we need to change something there?

In that case src/obex.h is the only place that will need simple
modification for now -- MAP service value for services bitmask. This
may be OBEX_MAP (or OBEX_MAS) and I supppose its value should be the
next one available -- (1 << 8).

--
Slawomir Bochenski

2010-12-13 12:00:03

by Johan Hedberg

[permalink] [raw]
Subject: Re: How to implement multiple instances of obexd service?

Hi Slawek,

On Mon, Dec 13, 2010, Slawomir Bochenski wrote:
> In order to fully implement Message Access Profile, support for more
> than one so-called instance is needed (MAP specification, chapter
> 3.1.8). According to specs, separate e-mail accounts on MSE should be
> represented by separate MAS instances. This requires one SDP record
> per instance and those differ by MASInstanceID and ServiceName.
>
> As I understand this also implies that each and every instance needs
> its own separate RFCOMM channel?

Yep, I think that's implied, since othewise we can't detect which MAS
instance the client is trying to connect to (if I read the spec
correctly).

> What would be the preffered way to deal with this ugliness in obexd
> code?

Since we're primarly conserned with supporting only SMS for now, I think
it's too early to start adding complexity to the code due to this
feature. I.e. let's get working MAP with SMS support integrated upstream
and only after that start looking into these more advanced features.

> If separate channels are needed how to keep this in compliance
> with bluez doc/assigned-numbers.txt?

We'll need to reserve some channels for additional MAS instances.

> And what about assigned bitmask values for services in src/obex.h?

Do we need to change something there?

Johan