Bluetooth: Add LE scan interval & window to bt_le_scan_param
Change-Id: If2ae26625b98485c3495f4f4f48e49600a1ffd14 Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
610d32311e
commit
3226780a3c
2 changed files with 43 additions and 3 deletions
|
@ -104,11 +104,23 @@ typedef void bt_le_scan_cb_t(const bt_addr_le_t *addr, int8_t rssi,
|
|||
(&(struct bt_le_scan_param) { \
|
||||
.type = BT_HCI_LE_SCAN_ACTIVE, \
|
||||
.filter_dup = 0x01, \
|
||||
.interval = 0x0030, \
|
||||
.window = 0x0030, \
|
||||
})
|
||||
|
||||
/** LE scan parameters */
|
||||
struct bt_le_scan_param {
|
||||
uint8_t type;
|
||||
uint8_t filter_dup;
|
||||
/** Type of scanning (active/passive) */
|
||||
uint8_t type;
|
||||
|
||||
/** Enable duplicate filtering */
|
||||
uint8_t filter_dup;
|
||||
|
||||
/** Scan interval */
|
||||
uint16_t interval;
|
||||
|
||||
/** Scan window */
|
||||
uint16_t window;
|
||||
};
|
||||
|
||||
/** @brief Start (LE) scanning
|
||||
|
|
|
@ -2072,10 +2072,37 @@ int bt_le_adv_stop(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool valid_le_scan_param(const struct bt_le_scan_param *param)
|
||||
{
|
||||
if (param->type != BT_HCI_LE_SCAN_PASSIVE &&
|
||||
param->type != BT_HCI_LE_SCAN_ACTIVE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (param->interval < 0x0004 || param->interval > 0x4000) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (param->window < 0x0004 || param->window > 0x4000) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (param->window > param->interval) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int bt_le_scan_start(const struct bt_le_scan_param *param, bt_le_scan_cb_t cb)
|
||||
{
|
||||
int err;
|
||||
|
||||
/* Check that the parameters have valid values */
|
||||
if (!valid_le_scan_param(param)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Return if active scan is already enabled */
|
||||
if (atomic_test_and_set_bit(bt_dev.flags, BT_DEV_EXPLICIT_SCAN)) {
|
||||
return -EALREADY;
|
||||
|
@ -2089,7 +2116,8 @@ int bt_le_scan_start(const struct bt_le_scan_param *param, bt_le_scan_cb_t cb)
|
|||
}
|
||||
}
|
||||
|
||||
err = start_le_scan(param->type, 0x0010, 0x0010, param->filter_dup);
|
||||
err = start_le_scan(param->type, param->interval, param->window,
|
||||
param->filter_dup);
|
||||
if (err) {
|
||||
atomic_clear_bit(bt_dev.flags, BT_DEV_EXPLICIT_SCAN);
|
||||
return err;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue