diff --git a/src/gap.h b/src/gap.h index 989c47c95..e4d5c5769 100644 --- a/src/gap.h +++ b/src/gap.h @@ -289,6 +289,8 @@ void gap_scan_response_set_data(uint8_t scan_response_data_length, uint8_t * sca /** * @brief Set connection parameters for outgoing connections + * @param conn_scan_interval (unit: 0.625 msec), default: 60 ms + * @param conn_scan_window (unit: 0.625 msec), default: 30 ms * @param conn_interval_min (unit: 1.25ms), default: 10 ms * @param conn_interval_max (unit: 1.25ms), default: 30 ms * @param conn_latency, default: 4 @@ -296,9 +298,9 @@ void gap_scan_response_set_data(uint8_t scan_response_data_length, uint8_t * sca * @param min_ce_length (unit: 0.625ms), default: 10 ms * @param max_ce_length (unit: 0.625ms), default: 30 ms */ - -void gap_set_connection_parameters(uint16_t conn_interval_min, uint16_t conn_interval_max, - uint16_t conn_latency, uint16_t supervision_timeout, uint16_t min_ce_length, uint16_t max_ce_length); +void gap_set_connection_parameters(uint16_t conn_scan_interval, uint16_t conn_scan_window, + uint16_t conn_interval_min, uint16_t conn_interval_max, uint16_t conn_latency, + uint16_t supervision_timeout, uint16_t min_ce_length, uint16_t max_ce_length); /** * @brief Request an update of the connection parameter for a given LE connection diff --git a/src/hci.c b/src/hci.c index ec00b45a1..e9ddb11c0 100644 --- a/src/hci.c +++ b/src/hci.c @@ -2446,6 +2446,8 @@ void hci_init(const hci_transport_t *transport, const void *config){ #ifdef ENABLE_LE_CENTRAL // connection parameter to use for outgoing connections + hci_stack->le_connection_scan_interval = 0x0060; // 60ms + hci_stack->le_connection_scan_window = 0x0030; // 30ms hci_stack->le_connection_interval_min = 0x0008; // 10 ms hci_stack->le_connection_interval_max = 0x0018; // 30 ms hci_stack->le_connection_latency = 4; // 4 @@ -3085,8 +3087,8 @@ static void hci_run(void){ bd_addr_t null_addr; memset(null_addr, 0, 6); hci_send_cmd(&hci_le_create_connection, - 0x0060, // scan interval: 60 ms - 0x0030, // scan interval: 30 ms + hci_stack->le_connection_scan_interval, // scan interval: 60 ms + hci_stack->le_connection_scan_window, // scan interval: 30 ms 1, // use whitelist 0, // peer address type null_addr, // peer bd addr @@ -3122,8 +3124,8 @@ static void hci_run(void){ #ifdef ENABLE_LE_CENTRAL log_info("sending hci_le_create_connection"); hci_send_cmd(&hci_le_create_connection, - 0x0060, // scan interval: 60 ms - 0x0030, // scan interval: 30 ms + hci_stack->le_connection_scan_interval, // conn scan interval + hci_stack->le_connection_scan_window, // conn scan windows 0, // don't use whitelist connection->address_type, // peer address type connection->address, // peer bd addr @@ -4063,6 +4065,8 @@ uint8_t gap_connect_cancel(void){ #ifdef ENABLE_LE_CENTRAL /** * @brief Set connection parameters for outgoing connections + * @param conn_scan_interval (unit: 0.625 msec), default: 60 ms + * @param conn_scan_window (unit: 0.625 msec), default: 30 ms * @param conn_interval_min (unit: 1.25ms), default: 10 ms * @param conn_interval_max (unit: 1.25ms), default: 30 ms * @param conn_latency, default: 4 @@ -4071,8 +4075,11 @@ uint8_t gap_connect_cancel(void){ * @param max_ce_length (unit: 0.625ms), default: 30 ms */ -void gap_set_connection_parameters(uint16_t conn_interval_min, uint16_t conn_interval_max, - uint16_t conn_latency, uint16_t supervision_timeout, uint16_t min_ce_length, uint16_t max_ce_length){ +void gap_set_connection_parameters(uint16_t conn_scan_interval, uint16_t conn_scan_window, + uint16_t conn_interval_min, uint16_t conn_interval_max, uint16_t conn_latency, + uint16_t supervision_timeout, uint16_t min_ce_length, uint16_t max_ce_length){ + hci_stack->le_connection_scan_interval = conn_scan_interval; + hci_stack->le_connection_scan_window = conn_scan_window; hci_stack->le_connection_interval_min = conn_interval_min; hci_stack->le_connection_interval_max = conn_interval_max; hci_stack->le_connection_latency = conn_latency; diff --git a/src/hci.h b/src/hci.h index 129a02cb4..db3a73a70 100644 --- a/src/hci.h +++ b/src/hci.h @@ -814,6 +814,8 @@ typedef struct { uint16_t le_supervision_timeout; uint16_t le_minimum_ce_length; uint16_t le_maximum_ce_length; + uint16_t le_connection_scan_interval; + uint16_t le_connection_scan_window; #endif le_connection_parameter_range_t le_connection_parameter_range;