From: ionut dediu <dyonutz@yahoo.com>
To: bluez-devel@lists.sourceforge.net
Subject: [Bluez-devel] L2Cap Connection problem : PC - Nokia 6600
Date: Sat, 5 Jun 2004 07:27:20 -0700 (PDT) [thread overview]
Message-ID: <20040605142720.89620.qmail@web50902.mail.yahoo.com> (raw)
Hy everybody.
I'm a newbie (big surprise :). I'm trying to make a
simple chat application between a Nokia 6600 phone
(using j2me ) and my PC (using BlueZ) over L2CAP. The
problem is that I can't get the connection to start.
I'm guessing it's from connection parameters
negotiation (probably imtu and omtu). First I didn't
supply any of the mtus, neither on pc nor phone, then
I used the same values (512). On both situations I get
the following error message from connect : Can't
connect. Connection refused(111). The phone is the
server, and the PC is the client. I don't specify a
psm on the connection string url on the phone because
I get an exception. Instead I let the BCC of the phone
supply me one. Then using the sdptool I find the psm
(which is allways 4097 <-> 0x1001) and use it in the
client application on the PC to connect. The code is
very simple. Here it is :
PHONE :
public void registerSimpleL2CAPService()
{
try
{
String serverConnString =
"btl2cap://localhost:ABCD;ReceiveMTU=512;TransmitMTU=512;name=Simple";
server =
(L2CAPConnectionNotifier)
Connector.open(serverConnString);
L2CAPConnection clientConn =
(L2CAPConnection)server.acceptAndOpen();
((TextBox)mainScreen).setString("Connected");
}
catch(Exception e)
{
((TextBox)mainScreen).setString("BT Exception");
}
}
PC :
#define BT_LOCAL_ADDR "00:0C:76:D3:4C:D3"
#define BT_REM_NOKIA_ADDR "00:60:57:D2:27:66"
int do_connect(char * remAddr)
{
struct sockaddr_l2 rem_addr, loc_addr;
struct l2cap_options opts;
int s, opt;
if ((s = socket(PF_BLUETOOTH, SOCK_SEQPACKET,
BTPROTO_L2CAP)) < 0) {
syslog(LOG_ERR, "Can't create socket. %s(%d)",
strerror(errno), errno);
return -1;
}
memset(&loc_addr, 0, sizeof(loc_addr));
loc_addr.l2_family = AF_BLUETOOTH;
str2ba(BT_LOCAL_ADDR, &loc_addr.l2_bdaddr);
if (bind(s, (struct sockaddr *) &loc_addr,
sizeof(loc_addr)) < 0) {
printf("Can't bind socket. %s(%d)", strerror(errno),
errno);
exit(1);
}
// Get default options
opt = sizeof(opts);
if (getsockopt(s, SOL_L2CAP, L2CAP_OPTIONS, &opts,
&opt) < 0) {
printf("Can't get default L2CAP options. %s(%d)",
strerror(errno), errno);
return -1;
}
// Set new options
opts.omtu = 512;
opts.imtu = 512;
if (setsockopt(s, SOL_L2CAP, L2CAP_OPTIONS, &opts,
opt) < 0) {
printf("Can't set L2CAP options. %s(%d)",
strerror(errno), errno);
return -1;
}
memset(&rem_addr, 0, sizeof(rem_addr));
rem_addr.l2_family = AF_BLUETOOTH;
baswap(&rem_addr.l2_bdaddr, strtoba(remAddr));
rem_addr.l2_psm = htobs(4097);
if (connect(s, (struct sockaddr *)&rem_addr,
sizeof(rem_addr)) < 0 ) {
printf("Can't connect. %s(%d)\n", strerror(errno),
errno);
close(s);
return -1;
}
printf("Connected\n");
return s;
}
int main(int argc, char** argv)
{
do_connect(BT_REM_NOKIA_ADDR);
return 0;
}
The hcidump is :
HCIDump - HCI packet analyzer ver 1.8
device: hci0 snap_len: 1028 filter: 0xffffffff
< HCI Command: Create Connection(0x01|0x0005) plen 13
> HCI Event: Command Status(0x0f) plen 4
> HCI Event: Connect Complete(0x03) plen 11
< ACL data: handle 0x0029 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 4097 scid 0x0040
> HCI Event: Number of Completed Packets(0x13) plen 5
> HCI Event: Max Slots Change(0x1b) plen 3
> ACL data: handle 0x0029 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0056 scid 0x0040
result 1 status 2
> HCI Event: QoS Setup Complete(0x0d) plen 21
> ACL data: handle 0x0029 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0056 scid 0x0040
result 3 status 0
< HCI Command: Disconnect(0x01|0x0006) plen 3
> HCI Event: Command Status(0x0f) plen 4
> HCI Event: Disconn Complete(0x05) plen 4
What means result 3 status 0, from hcidump ? Sorry I'm
not familiar with hcidump. Thanks a lot in advance.
__________________________________
Do you Yahoo!?
Friends. Fun. Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/
-------------------------------------------------------
This SF.Net email is sponsored by the new InstallShield X.
>From Windows to Linux, servers to mobile, InstallShield X is the one
installation-authoring solution that does it all. Learn more and
evaluate today! http://www.installshield.com/Dev2Dev/0504
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
next reply other threads:[~2004-06-05 14:27 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-05 14:27 ionut dediu [this message]
2004-06-05 17:29 ` [Bluez-devel] L2Cap Connection problem : PC - Nokia 6600 Marcel Holtmann
2004-06-11 9:17 ` ionut dediu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040605142720.89620.qmail@web50902.mail.yahoo.com \
--to=dyonutz@yahoo.com \
--cc=bluez-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox