/* * Copyright (c) 2016-2018 Nordic Semiconductor ASA * Copyright (c) 2016 Vinayak Kariappa Chettimada * * SPDX-License-Identifier: Apache-2.0 */ #ifndef BIT64 #define BIT64(n) (1ULL << (n)) #endif #if defined(CONFIG_BT_CTLR_LE_ENC) #define LL_FEAT_BIT_ENC BIT64(BT_LE_FEAT_BIT_ENC) #else /* !CONFIG_BT_CTLR_LE_ENC */ #define LL_FEAT_BIT_ENC 0 #endif /* !CONFIG_BT_CTLR_LE_ENC */ #if defined(CONFIG_BT_CTLR_CONN_PARAM_REQ) #define LL_FEAT_BIT_CONN_PARAM_REQ BIT64(BT_LE_FEAT_BIT_CONN_PARAM_REQ) #else /* !CONFIG_BT_CTLR_CONN_PARAM_REQ */ #define LL_FEAT_BIT_CONN_PARAM_REQ 0 #endif /* !CONFIG_BT_CTLR_CONN_PARAM_REQ */ #if defined(CONFIG_BT_CTLR_EXT_REJ_IND) #define LL_FEAT_BIT_EXT_REJ_IND BIT64(BT_LE_FEAT_BIT_EXT_REJ_IND) #else /* !CONFIG_BT_CTLR_EXT_REJ_IND */ #define LL_FEAT_BIT_EXT_REJ_IND 0 #endif /* !CONFIG_BT_CTLR_EXT_REJ_IND */ #if defined(CONFIG_BT_CTLR_SLAVE_FEAT_REQ) #define LL_FEAT_BIT_SLAVE_FEAT_REQ BIT64(BT_LE_FEAT_BIT_SLAVE_FEAT_REQ) #else /* !CONFIG_BT_CTLR_SLAVE_FEAT_REQ */ #define LL_FEAT_BIT_SLAVE_FEAT_REQ 0 #endif /* !CONFIG_BT_CTLR_SLAVE_FEAT_REQ */ #if defined(CONFIG_BT_CTLR_LE_PING) #define LL_FEAT_BIT_PING BIT64(BT_LE_FEAT_BIT_PING) #else /* !CONFIG_BT_CTLR_LE_PING */ #define LL_FEAT_BIT_PING 0 #endif /* !CONFIG_BT_CTLR_LE_PING */ #if defined(CONFIG_BT_CTLR_DATA_LENGTH_MAX) #define LL_FEAT_BIT_DLE BIT64(BT_LE_FEAT_BIT_DLE) #define LL_LENGTH_OCTETS_RX_MAX CONFIG_BT_CTLR_DATA_LENGTH_MAX #else #define LL_FEAT_BIT_DLE 0 #define LL_LENGTH_OCTETS_RX_MAX 27 #endif /* CONFIG_BT_CTLR_DATA_LENGTH_MAX */ #if defined(CONFIG_BT_CTLR_PRIVACY) #define LL_FEAT_BIT_PRIVACY BIT64(BT_LE_FEAT_BIT_PRIVACY) #else /* !CONFIG_BT_CTLR_PRIVACY */ #define LL_FEAT_BIT_PRIVACY 0 #endif /* !CONFIG_BT_CTLR_PRIVACY */ #if defined(CONFIG_BT_CTLR_EXT_SCAN_FP) #define LL_FEAT_BIT_EXT_SCAN BIT64(BT_LE_FEAT_BIT_EXT_SCAN) #else /* !CONFIG_BT_CTLR_EXT_SCAN_FP */ #define LL_FEAT_BIT_EXT_SCAN 0 #endif /* !CONFIG_BT_CTLR_EXT_SCAN_FP */ #if defined(CONFIG_BT_CTLR_CHAN_SEL_2) #define LL_FEAT_BIT_CHAN_SEL_2 BIT64(BT_LE_FEAT_BIT_CHAN_SEL_ALGO_2) #else /* !CONFIG_BT_CTLR_CHAN_SEL_2 */ #define LL_FEAT_BIT_CHAN_SEL_2 0 #endif /* !CONFIG_BT_CTLR_CHAN_SEL_2 */ #if defined(CONFIG_BT_CTLR_MIN_USED_CHAN) #define LL_FEAT_BIT_MIN_USED_CHAN \ BIT64(BT_LE_FEAT_BIT_MIN_USED_CHAN_PROC) #else /* !CONFIG_BT_CTLR_MIN_USED_CHAN */ #define LL_FEAT_BIT_MIN_USED_CHAN 0 #endif /* !CONFIG_BT_CTLR_MIN_USED_CHAN */ #if defined(CONFIG_BT_CTLR_PHY_2M) #define LL_FEAT_BIT_PHY_2M BIT64(BT_LE_FEAT_BIT_PHY_2M) #else /* !CONFIG_BT_CTLR_PHY_2M */ #define LL_FEAT_BIT_PHY_2M 0 #endif /* !CONFIG_BT_CTLR_PHY_2M */ #if defined(CONFIG_BT_CTLR_PHY_CODED) #define LL_FEAT_BIT_PHY_CODED BIT64(BT_LE_FEAT_BIT_PHY_CODED) #else /* !CONFIG_BT_CTLR_PHY_CODED */ #define LL_FEAT_BIT_PHY_CODED 0 #endif /* !CONFIG_BT_CTLR_PHY_CODED */ #define LL_FEAT_BIT_MASK 0x1FFFF #define LL_FEAT_BIT_MASK_VALID 0x1CF2F #define LL_FEAT (LL_FEAT_BIT_ENC | \ LL_FEAT_BIT_CONN_PARAM_REQ | \ LL_FEAT_BIT_EXT_REJ_IND | \ LL_FEAT_BIT_SLAVE_FEAT_REQ | \ LL_FEAT_BIT_PING | \ LL_FEAT_BIT_DLE | \ LL_FEAT_BIT_PRIVACY | \ LL_FEAT_BIT_EXT_SCAN | \ LL_FEAT_BIT_PHY_2M | \ LL_FEAT_BIT_PHY_CODED | \ LL_FEAT_BIT_CHAN_SEL_2 | \ LL_FEAT_BIT_MIN_USED_CHAN)