Bluetooth: controller: User defined CPR intervals
Some proprietary protocols that reuse the Bluetooth LLCP logic requires that the CPR interval has a valid range that differs from the Bluetooth specification defined. Vendor must implement the function (ull_vendor.h) uint16_t ull_conn_interval_min_get(struct ll_conn *conn) that returns the valid limit for the given connection. Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
This commit is contained in:
parent
9efc7b661e
commit
c3f557c12b
2 changed files with 22 additions and 3 deletions
|
@ -551,6 +551,13 @@ config BT_RX_USER_PDU_LEN
|
||||||
header and payload. It does not account for HCI event headers as these
|
header and payload. It does not account for HCI event headers as these
|
||||||
PDUs are assumed to not go across HCI.
|
PDUs are assumed to not go across HCI.
|
||||||
|
|
||||||
|
config BT_CTLR_USER_CPR_INTERVAL_MIN
|
||||||
|
bool "Enable proprietary Connection Parameter Request minimum interval"
|
||||||
|
depends on BT_CTLR_USER_EXT
|
||||||
|
help
|
||||||
|
When enabled, controller will accept Connection Parameter Request
|
||||||
|
intervals down to a proprietary minimum value.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
comment "BLE Controller hardware configuration"
|
comment "BLE Controller hardware configuration"
|
||||||
|
|
|
@ -51,6 +51,18 @@
|
||||||
#include "ull_vendor.h"
|
#include "ull_vendor.h"
|
||||||
#endif /* CONFIG_BT_CTLR_USER_EXT */
|
#endif /* CONFIG_BT_CTLR_USER_EXT */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User CPR Interval
|
||||||
|
*/
|
||||||
|
#if !defined(CONFIG_BT_CTLR_USER_CPR_INTERVAL_MIN)
|
||||||
|
/* Bluetooth defined CPR Interval Minimum (7.5ms) */
|
||||||
|
#define CONN_INTERVAL_MIN(x) (6)
|
||||||
|
#else /* CONFIG_BT_CTLR_USER_CPR_INTERVAL_MIN */
|
||||||
|
/* Proprietary user defined CPR Interval Minimum */
|
||||||
|
extern uint16_t ull_conn_interval_min_get(struct ll_conn *conn);
|
||||||
|
#define CONN_INTERVAL_MIN(x) (MAX(ull_conn_interval_min_get(x), 1))
|
||||||
|
#endif /* CONFIG_BT_CTLR_USER_CPR_INTERVAL_MIN */
|
||||||
|
|
||||||
inline void ull_conn_upd_curr_reset(void);
|
inline void ull_conn_upd_curr_reset(void);
|
||||||
|
|
||||||
static int init_reset(void);
|
static int init_reset(void);
|
||||||
|
@ -5697,7 +5709,7 @@ static inline int ctrl_rx(memq_link_t *link, struct node_rx_pdu **rx,
|
||||||
cpr->preferred_periodicity;
|
cpr->preferred_periodicity;
|
||||||
|
|
||||||
/* Invalid parameters */
|
/* Invalid parameters */
|
||||||
if ((interval_min < 6) ||
|
if ((interval_min < CONN_INTERVAL_MIN(conn)) ||
|
||||||
(interval_max > 3200) ||
|
(interval_max > 3200) ||
|
||||||
(interval_min > interval_max) ||
|
(interval_min > interval_max) ||
|
||||||
(latency > 499) ||
|
(latency > 499) ||
|
||||||
|
@ -5803,7 +5815,7 @@ static inline int ctrl_rx(memq_link_t *link, struct node_rx_pdu **rx,
|
||||||
cpr->preferred_periodicity;
|
cpr->preferred_periodicity;
|
||||||
|
|
||||||
/* Invalid parameters */
|
/* Invalid parameters */
|
||||||
if ((interval_min < 6) ||
|
if ((interval_min < CONN_INTERVAL_MIN(conn)) ||
|
||||||
(interval_max > 3200) ||
|
(interval_max > 3200) ||
|
||||||
(interval_min > interval_max) ||
|
(interval_min > interval_max) ||
|
||||||
(latency > 499) ||
|
(latency > 499) ||
|
||||||
|
@ -5899,7 +5911,7 @@ static inline int ctrl_rx(memq_link_t *link, struct node_rx_pdu **rx,
|
||||||
cpr->preferred_periodicity;
|
cpr->preferred_periodicity;
|
||||||
|
|
||||||
/* Invalid parameters */
|
/* Invalid parameters */
|
||||||
if ((interval_min < 6) ||
|
if ((interval_min < CONN_INTERVAL_MIN(conn)) ||
|
||||||
(interval_max > 3200) ||
|
(interval_max > 3200) ||
|
||||||
(interval_min > interval_max) ||
|
(interval_min > interval_max) ||
|
||||||
(latency > 499) ||
|
(latency > 499) ||
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue