2006-11-04 16:38:16

by Olivier Le Pogam

[permalink] [raw]
Subject: Re: [Bluez-devel] To blueZ developers : can't do two "connect" concurrently, help required !

Hi Brad,

Ok I will try this !
The two remote devices I test with are a mobile phone
(with a j2me application) and a Windows XP RFCOMM
server. I am not sure how to check the "master" setting on
the mobile phone or windows XP !!

Thanks, a lot,
Oli

----- Original Message -----
From: "Brad Midgley" <[email protected]>
To: "Olivier Le Pogam" <[email protected]>; "BlueZ development"
<[email protected]>
Sent: Friday, November 03, 2006 10:26 PM
Subject: Re: [Bluez-devel] To blueZ developers : can't do two "connect"
concurrently, help required !


> Olivier
>
> This thing tends to happen if you have the wrong end of the connection
> being master. Make sure your linux box has master in the lm line in
> hcid.conf and that your clients do not.
>
> Brad
>
>> For the ones who have read my messages a few days ago ...
>> I am still performing concurrency tests !
>>
>> I run a server on 2 remote devices (one on channel 24, the
>> other on channel 25), and I try to connect to them concurrently
>> from the same Linux box / BT key (the remote servers are simple "echo"
>> ones, the linux client is sending numbers from 1 to 10 with a sleep(1) at
>> each step).
>>
>> I have a simple batch :
>>
>> client.sh :
>> ./client 00:16:4E:83:2D:19 25 &
>> ./client 00:0D:88:9B:FF:D7 24 &
>>
>> where client is called with BDADDR and channel
>>
>> Here is what I get in my logs :
>>
>> Connection to remote 00:16:4E:83:2D:19 channel 25
>> Connection to remote 00:0D:88:9B:FF:D7 channel 24
>> [00:16:4E:83:2D:19] Can't connect(111) ====> 111 is connection refused
>> [00:0D:88:9B:FF:D7] Connected to remote 00:0D:88:9B:FF:D7 channel 24,
>> from local 00:11:67:0D:2E:2C channel 24
>> [00:0D:88:9B:FF:D7] Sent 0 received 0
>> ...
>>
>> If I swap the order of calling "client" i.e :
>>
>> client.sh :
>> ./client 00:0D:88:9B:FF:D7 24 &
>> ./client 00:16:4E:83:2D:19 25 &
>>
>> Then it's still the first which can't connect (now it will be
>> 00:0D:88:9B:FF:D7)
>>
>> So basically, it seems that there can't be two "connect"
>> concurrently on the same adaptor.
>>
>> Can please BlueZ developers confirm ?
>>
>> Thanks a lot
>> Oli
>>
>> For who is interested, here is the interesting part of client.c :
>>
>> int main(int argc, char **argv)
>> {
>> struct sockaddr_rc laddr, raddr;
>> int sk, i;
>>
>> memset(&laddr, 0, sizeof(laddr));
>> memset(&raddr, 0, sizeof(raddr));
>>
>> laddr.rc_family = AF_BLUETOOTH;
>> bacpy(&laddr.rc_bdaddr, BDADDR_ANY);
>> laddr.rc_channel = 0;
>>
>> raddr.rc_family = AF_BLUETOOTH;
>> str2ba(argv[1], &raddr.rc_bdaddr);
>> raddr.rc_channel = atoi(argv[2]);
>>
>> if (argc != 3) {
>> fprintf(stderr,"Usage: client address channel\n");
>> exit(EXIT_FAILURE);
>> }
>>
>> debugOutput("Connection to remote %s channel %s", argv[1], argv[2]);
>>
>> sk = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
>> if (sk < 0) {
>> debugOutput("[%s] Can't create RFCOMM socket", argv[1]);
>> return -1;
>> }
>>
>> if (bind(sk, (struct sockaddr *)&laddr, sizeof(laddr)) < 0) {
>> debugOutput("[%s] Can't bind RFCOMM socket", argv[1]);
>> close(sk);
>> return -1;
>> }
>>
>> if (connect(sk, (struct sockaddr *)&raddr, sizeof(raddr)) < 0) {
>> debugOutput("[%s] Can't connect(%d)", argv[1], errno);
>> close(sk);
>> return -1;
>> }
>>
>> char loc_addr[30];
>> strcpy(loc_addr, "");
>>
>> int len = sizeof(laddr);
>> if (getsockname (sk, &laddr, &len ) > 0)
>> debugOutput("[%s] Can't getsockname", argv[1]);
>> else ba2str(&laddr.rc_bdaddr, loc_addr);
>>
>> debugOutput("[%s] Connected to remote %s channel %s, from local %s
>> channel %d", argv[1], argv[1], argv[2], loc_addr, laddr.rc_channel);
>>
>> for (i = 0; i<10; i++)
>> {
>> char buf[1024];
>> sprintf(buf, "%d%c", i, 10);
>> write(sk, buf, strlen(buf));
>> strcpy(buf, "");
>>
>> readString(sk, buf);
>> if( strlen(buf) > 0 ) {
>> debugOutput("[%s] Sent %d received %s", argv[1], i, buf);
>> } else {
>> debugOutput("[%s] Sent %d received no answer", argv[1], i);
>> break;
>> }
>> sleep(1);
>> }
>>
>> close(sk);
>> debugOutput("[%s] Disconnected", argv[1]);
>>
>> return 0;
>> }
>>
>>
>> ------------------------------------------------------------------------
>>
>> No virus found in this outgoing message.
>> Checked by AVG Free Edition.
>> Version: 7.1.409 / Virus Database: 268.13.25/515 - Release Date:
>> 03/11/2006
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> -------------------------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job
>> easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache
>> Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Bluez-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/bluez-devel
>
>
>
>
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.1.409 / Virus Database: 268.13.25/515 - Release Date:
> 03/11/2006
>



--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.409 / Virus Database: 268.13.27/517 - Release Date: 03/11/2006


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel