Re: [Bluez-devel] [Bluez-users] How to setup a reliable RFCOMM connection

Marcel Holtmann
2006-12-10T14:18:53Z

Hi,

> > > > > How to setup a reliable RFCOMM connection, that is, a connection with
> > > > > infinite flush timeout. I find the RFCOMM_LM_RELIABLE option in the
> > > > > example program l2test.c. It compiles, but at runtime setsockopt with
> > > > > RFCOMM_LM give me an error. I'm using kernel-2.4.21 patched by
> > > > > patch-2.4.21-mh10. So what's the problem. Doesn't kernel-2.4.21-mh10
> > > > > support RFCOMM_LM? If so, how can I setup a reliable RFCOMM connection?
> > > >
> > > > the RFCOMM channels are always reliable. No need for any other options.
> > > >
> > > Does that mean that the Automatic Flush Timeout Timer for the L2CAP
> > > connection underlying the RFCOMM connection is set to 0xFFFF by
> > > default? And when does the RFCOMM_LM option introduced?
> >
> > this won't fly. The underlaying L2CAP connection must be reliable and so
> > we are not using an automatic flush timeout at all for that channel.
> > Please check the specification for details.
> In my understanding of the specification, the Automatic Flush Timeout
> is applied on a connection handle which corresponds to the ACL link.
> So does that mean once a RFCOMM connection is established, the
> automatic flush timeout would be disabled(to ensure link reliability)?
> Or that bluez doesn't use automatic flush timeout at all for all
> connections?

we should use automatic flush timeout, but we actually don't. It
currently makes no sense for use to use it, because all upper layers
assume that the lower layers are reliable. With Bluetooth 2.1 this will
change and you can mark L2CAP channels as flushable. This is needed for
the A2DP audio channels were it doesn't matter if you loose a packet.