Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jul 2005 11:06:08 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
To:        Oliver <urnenfel@tiscali.es>
Cc:        freebsd-bluetooth@freebsd.org
Subject:   Re: SCO / eSCO
Message-ID:  <42E91E90.4010703@savvis.net>
In-Reply-To: <20050728193504.14880.1@@vodafone.es>
References:  <20050728113713.2925.5@@vodafone.es> <42E90D5E.3030404@savvis.net> <20050728193504.14880.1@@vodafone.es>

next in thread | previous in thread | raw e-mail | index | archive | help
Oliver,

>>i have some code already sitting in my local cvs. i will clean it up and
>>commit it soon (within a month or so).
> 
> Sorry, now i remember, this question was already commented in the list

ok

>>what are you planning to do with SCO?
> 
> Actually at the moment, I just wanted to understand the Stack, as it is the 
> first FreeBSD code i am looking at. Concretely know how HCI looks at, and 
> talks with the upper layers (L2CAP & SCO).

SCO is *not* upper layer protocol. the picture goes something like this:

                  | OBEX | IrMC | etc|
            ---------------------------------
            | SDP |       RFCOMM     | etc. |
            ---------------------------------
            |              L2CAP            |
--------------------------------------------
|                   HCI                    |
--------------------------------------------
|      Link Manager (device firmware)      |
--------------------------------------------
| SCO link |            ACL link           |
--------------------------------------------
|             baseband radio               |
--------------------------------------------

so both ACL (data) and SCO (voice/video) links are at the same level. 
ACL (data) link is used for *reliable* data transfer. it supports packet 
segmentation etc. SCO link is unreliable, no packet segmentation, etc. 
think of it as two pipes over the same radio link.

L2CAP is a upper layer protocol that supports multiple logical channels, 
reliable data transfer, packet segmentation etc. it runs over ACL link 
because it assumes that underlaying data link is *reliable*.

the protocols that run over L2CAP, i.e SDP, RFCOMM, etc. essentially use 
different logical L2CAP channels (similar to well known ports in UDP/TCP 
protocols).

so, SCO is really a side channel for *unreliable* data transfer. it is 
well suited for streaming audio/video where it does not matter if you 
loose one or few packets. L2CAP does not run over SCO. in fact, i do not 
think any upper layer protocol uses SCO as transport layer. for example 
headset profile: there are two channels: one is RFCOMM connection, i.e. 
reliable control channel, and other is SCO link to send/receive voice.

>>SCO (just like ACL) is just a link type. its not really a protocol. HCI
>>- Host Controller Interface - is just a way to access bluetooth device,
>>you might call it a protocol. there is set of HCI commands that will
>>make device create a ACL and SCO link using the same baseband radio
>>link. eSCO is a bluetooth v1.2 thing and i have not looked at bluetooth
>>v1.2 yet.
> 
> So this confirms me that L2CAP absotulelly doesnt make any handling in the 
> SCO data, am i wrong?

you are correct. L2CAP does not have anything to do with SCO.

> But as I understood in your explanation there will not be a ""paralel 
> layer"" to the L2CAP (being HCI below them) am i wrong again? just the 
> socket interface and support in the driver...

ACL and SCO links are parallel. HCI is on top of them. L2CAP asks HCI to 
create a ACL (data) link and then uses it as transport.

>>you are the second person on the list who wanted to start working on the
>>SCO support. if you are serious about this i will commit my code to
>>-current, but then someone has to help me with maintaining it (i.e.
>>fixing bugs, adding features etc.), because i'm not comfortable with
>>committing untested code. if you are not prepared to actively work on
>>the code then please wait until i have chance to finish it.
> 
> Sure, no hurries at all for commiting, as I told I was just trying to 
> understand.

ok

thanks,
max



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42E91E90.4010703>