summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2010-09-01 15:28:58 -0300
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2010-10-04 17:38:22 -0300
commit388cdea43870fe5c5163cfbe96d3218111ba39b5 (patch)
tree7716ba684ea628ef0f9d398396baaa32380dffbf
parent980dc45cc2a1972a7f61b4940cb75f5f3ea6e49c (diff)
downloadbluez-388cdea43870fe5c5163cfbe96d3218111ba39b5.tar.gz
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).
-rw-r--r--plugins/hciops.c6
-rw-r--r--src/adapter.c6
-rw-r--r--src/adapter.h2
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);