Bluetooth: Add support for specifying connection parameters

Applications may want fine-grained control of connection parameters.
The two APIs to provide this through are bt_le_set_auto_conn() as well
as bt_conn_create_le().

Change-Id: If5cddbbf017b868d768d18d2a09daf4af8aa00d8
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Johan Hedberg 2015-12-05 15:32:58 +02:00 committed by Anas Nashif
commit 1a32d5ed55
10 changed files with 81 additions and 48 deletions

View file

@ -527,6 +527,8 @@ struct bt_conn *bt_conn_add_le(const bt_addr_le_t *peer)
conn->required_sec_level = BT_SECURITY_LOW;
#endif /* CONFIG_BLUETOOTH_SMP */
conn->type = BT_CONN_TYPE_LE;
conn->le.interval_min = BT_GAP_INIT_CONN_INT_MIN;
conn->le.interval_max = BT_GAP_INIT_CONN_INT_MAX;
return conn;
}
@ -824,7 +826,8 @@ int bt_conn_disconnect(struct bt_conn *conn, uint8_t reason)
}
}
struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer)
struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer,
const struct bt_le_conn_param *param)
{
struct bt_conn *conn;
@ -836,6 +839,9 @@ struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer)
if (conn) {
switch (conn->state) {
case BT_CONN_CONNECT_SCAN:
conn->le.interval_min = param->interval_min;
conn->le.interval_max = param->interval_max;
return conn;
case BT_CONN_CONNECT:
case BT_CONN_CONNECTED:
return conn;
@ -850,6 +856,9 @@ struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer)
return NULL;
}
conn->le.interval_min = param->interval_min;
conn->le.interval_max = param->interval_max;
bt_conn_set_state(conn, BT_CONN_CONNECT_SCAN);
bt_le_scan_update(true);