diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2010-09-01 15:28:58 -0300 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2010-10-04 17:38:22 -0300 |
commit | 388cdea43870fe5c5163cfbe96d3218111ba39b5 (patch) | |
tree | 7716ba684ea628ef0f9d398396baaa32380dffbf | |
parent | 980dc45cc2a1972a7f61b4940cb75f5f3ea6e49c (diff) | |
download | bluez-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.c | 6 | ||||
-rw-r--r-- | src/adapter.c | 6 | ||||
-rw-r--r-- | 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); |