public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
* non-blocking hci_inquiry()
       [not found] <5eee8c670907280453i76f4957fvcca9c3954576580d@mail.gmail.com>
@ 2009-07-28 11:55 ` Alexander H Deriziotis
  2009-07-28 12:31   ` Marcel Holtmann
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander H Deriziotis @ 2009-07-28 11:55 UTC (permalink / raw)
  To: linux-bluetooth

Hi,

I've been playing with the linux wiimote daemon called Cwiid, and
noticed that while it's waiting for a connection from a wiimote, it's
blocking the bluetooth adapter from doing anything else.

Searching around and looking at the code, I can see it's calling
hci_inquiry() in a loop which is blocking the device.

Does a non-blocking hci_inquiry() function exist? If not, could I get
some help on how to go about writing one?

Looking around, someone mentions that it might be the ioctl() function
called within hci_inquiry() which is causing the blocking, could it be
something as trivial as playing with that?

from lib/hci.c:

int hci_inquiry(int dev_id, int len, int nrsp, const uint8_t *lap,
inquiry_info **ii, long flags)
{
[snip]
        ret = ioctl(dd, HCIINQUIRY, (unsigned long) buf);
        if (ret < 0)
                goto free;


Many thanks,

Alex

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: non-blocking hci_inquiry()
  2009-07-28 11:55 ` non-blocking hci_inquiry() Alexander H Deriziotis
@ 2009-07-28 12:31   ` Marcel Holtmann
  2009-08-12 22:37     ` Alexander H Deriziotis
  0 siblings, 1 reply; 4+ messages in thread
From: Marcel Holtmann @ 2009-07-28 12:31 UTC (permalink / raw)
  To: Alexander H Deriziotis; +Cc: linux-bluetooth

Hi Alex,

> I've been playing with the linux wiimote daemon called Cwiid, and
> noticed that while it's waiting for a connection from a wiimote, it's
> blocking the bluetooth adapter from doing anything else.
> 
> Searching around and looking at the code, I can see it's calling
> hci_inquiry() in a loop which is blocking the device.
> 
> Does a non-blocking hci_inquiry() function exist? If not, could I get
> some help on how to go about writing one?

use the D-Bus interface for non-blocking inquiry.

Regards

Marcel



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: non-blocking hci_inquiry()
  2009-07-28 12:31   ` Marcel Holtmann
@ 2009-08-12 22:37     ` Alexander H Deriziotis
  2009-08-12 22:40       ` Marcel Holtmann
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander H Deriziotis @ 2009-08-12 22:37 UTC (permalink / raw)
  To: Marcel Holtmann; +Cc: linux-bluetooth

Hi Marcel,

2009/7/28 Marcel Holtmann <marcel@holtmann.org>:
>
> use the D-Bus interface for non-blocking inquiry.

I'm following the GLib with C example in the following doc:
http://wiki.bluez.org/wiki/HOWTO/DiscoveringDevices and having
problems running the example code.

It compiles perfectly fine, however, when I run it, it gives me the
following error:

jackflap@genesis:~/Desktop/cwiid-0.6.00/new_test$ ./bluetooth
Failed to discover devices: Method "DiscoverDevices" with signature ""
on interface "org.bluez.Adapter" doesn't exist

I'm getting the impression that it's the following line in the code
that isn't working:

        obj = dbus_g_proxy_new_for_name(bus, "org.bluez",
"/org/bluez/hci0", "org.bluez.Adapter");

I'm certain my bluetooth adapter is recognized and is configured as hci0.

What am I missing?

Thanks,
Alex

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: non-blocking hci_inquiry()
  2009-08-12 22:37     ` Alexander H Deriziotis
@ 2009-08-12 22:40       ` Marcel Holtmann
  0 siblings, 0 replies; 4+ messages in thread
From: Marcel Holtmann @ 2009-08-12 22:40 UTC (permalink / raw)
  To: Alexander H Deriziotis; +Cc: linux-bluetooth

Hi Alex,

> > use the D-Bus interface for non-blocking inquiry.
> 
> I'm following the GLib with C example in the following doc:
> http://wiki.bluez.org/wiki/HOWTO/DiscoveringDevices and having
> problems running the example code.
> 
> It compiles perfectly fine, however, when I run it, it gives me the
> following error:
> 
> jackflap@genesis:~/Desktop/cwiid-0.6.00/new_test$ ./bluetooth
> Failed to discover devices: Method "DiscoverDevices" with signature ""
> on interface "org.bluez.Adapter" doesn't exist
> 
> I'm getting the impression that it's the following line in the code
> that isn't working:
> 
>         obj = dbus_g_proxy_new_for_name(bus, "org.bluez",
> "/org/bluez/hci0", "org.bluez.Adapter");
> 
> I'm certain my bluetooth adapter is recognized and is configured as hci0.

looks like you are not using the 4.x API. That one works differently.

Regards

Marcel



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-08-12 22:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <5eee8c670907280453i76f4957fvcca9c3954576580d@mail.gmail.com>
2009-07-28 11:55 ` non-blocking hci_inquiry() Alexander H Deriziotis
2009-07-28 12:31   ` Marcel Holtmann
2009-08-12 22:37     ` Alexander H Deriziotis
2009-08-12 22:40       ` Marcel Holtmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox