Re: [Bluez-devel] simultaneous read/write on SCO channel

Andreas Kemnade
2007-07-27T17:10:22Z

On Fri, 27 Jul 2007 11:55:29 +0400
Irakli Tsagareli <itsagareli@yandex.ru> wrote:

> Hi all,
>
> I'm writing a small code to test HandsFree capabilities between my phone and PC. everything works fine for audio playback (on the PC, I can hear sound file played on the phone and in case of incoming call, I can hear a voice of remote subscriber) but when I try at the same time to send some audio data to the handset via same socket, send() function returns "Invalid argument" error. I tried to create new socket for writing (same way I created listening socket). creation succeeds, but connect fails with "Device or resource busy". can anybody be so kind and explain, how can I read and write data through SCO channel simultaneously ?

[...]
> read(snd_fd, buffer, 48);
> if(send(cli_scosock, buffer, 48, 0) < 0) << --- send() fails here with "Invalid argument"
> {
> perror("send failed");
> }
I remember having trouble with sco and hardcoded packet sizes (try 64). sometimes it's 64
and sometimes 48 if I remember correctly.

yout should do
struct sco_options opts;
int size=sizeof(opts);
getsockopt(cli_scosock,SOL_SCO,SCO_OPTIONS,&opts,&size);
once somewhere and then use opts.mtu

Greetings
Andreas Kemnade