From 388cdea43870fe5c5163cfbe96d3218111ba39b5 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Wed, 1 Sep 2010 15:28:58 -0300 Subject: Add length argument on hciops start discovery function For BR/EDR only adapters, the recommended inquiry length is 0x08 (10.24 seconds). For interleave discovery the inquiry length is 0x04(5.12 seconds). --- plugins/hciops.c | 6 +++--- src/adapter.c | 6 ++++-- src/adapter.h | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/plugins/hciops.c b/plugins/hciops.c index a2b8eacaf..4424d7f97 100644 --- a/plugins/hciops.c +++ b/plugins/hciops.c @@ -561,7 +561,7 @@ fail: return err; } -static int hciops_start_discovery(int index, gboolean periodic) +static int hciops_start_discovery(int index, uint8_t length, gboolean periodic) { uint8_t lap[3] = { 0x33, 0x8b, 0x9e }; int dd, err; @@ -577,7 +577,7 @@ static int hciops_start_discovery(int index, gboolean periodic) memcpy(&cp.lap, lap, 3); cp.max_period = htobs(24); cp.min_period = htobs(16); - cp.length = 0x04; + cp.length = length; cp.num_rsp = 0x00; err = hci_send_cmd(dd, OGF_LINK_CTL, OCF_PERIODIC_INQUIRY, @@ -587,7 +587,7 @@ static int hciops_start_discovery(int index, gboolean periodic) memset(&inq_cp, 0, sizeof(inq_cp)); memcpy(&inq_cp.lap, lap, 3); - inq_cp.length = 0x04; + inq_cp.length = length; inq_cp.num_rsp = 0x00; err = hci_send_cmd(dd, OGF_LINK_CTL, OCF_INQUIRY, diff --git a/src/adapter.c b/src/adapter.c index 1a26bd2e6..41a3a914e 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -1284,14 +1284,16 @@ static int start_discovery(struct btd_adapter *adapter) /* BR/EDR only? */ if (le_capable(adapter) == FALSE) - return adapter_ops->start_discovery(adapter->dev_id, periodic); + return adapter_ops->start_discovery(adapter->dev_id, + 0x08, periodic); /* Dual mode or LE only */ if (bredr_capable(adapter) == FALSE) { err = adapter_ops->start_scanning(adapter->dev_id); stop = stop_scanning; } else { - err = adapter_ops->start_discovery(adapter->dev_id, FALSE); + err = adapter_ops->start_discovery(adapter->dev_id, + 0x04, FALSE); stop = stop_inquiry; } diff --git a/src/adapter.h b/src/adapter.h index 7b686ad9d..058413ddc 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -185,7 +185,7 @@ struct btd_adapter_ops { int (*set_discoverable) (int index); int (*set_limited_discoverable) (int index, uint32_t class, gboolean limited); - int (*start_discovery) (int index, gboolean periodic); + int (*start_discovery) (int index, uint8_t length, gboolean periodic); int (*stop_discovery) (int index); int (*start_scanning) (int index); int (*stop_scanning) (int index); -- cgit v1.2.1