/********************************************************************************************* * Filename : ll_config.h * Description : Lto 优化Macro 定义 * Author : Bingquan * Email : bingquan_cai@zh-jieli.com * Last modifiled : 2018-12-19 16:12 * Copyright:(c)JIELI 2011-2017 @ , All Rights Reserved. *********************************************************************************************/ #ifndef _LL_CONFIG_H_ #define _LL_CONFIG_H_ #include //for UINT64_C /* *-------------------LE FEATURE SUPPORT * brief : 运行时优化(LTO)下,代码空间优化; */ /* --- Core Spec 4.0 --- */ #define LL_FEAT_ENCRYPTION (UINT64_C(1) << ( 0)) /*!< Encryption supported. */ /* --- Core Spec 4.2 --- */ #define LL_FEAT_CONN_PARAM_REQ_PROC (UINT64_C(1) << ( 1)) /*!< Connection Parameters Request Procedure supported. */ #define LL_FEAT_EXT_REJECT_IND (UINT64_C(1) << ( 2)) /*!< Extended Reject Indication supported. */ #define LL_FEAT_SLV_INIT_FEAT_EXCH (UINT64_C(1) << ( 3)) /*!< Slave-Initiated Features Exchange supported. */ #define LL_FEAT_LE_PING (UINT64_C(1) << ( 4)) /*!< LE Ping supported. */ #define LL_FEAT_DATA_LEN_EXT (UINT64_C(1) << ( 5)) /*!< Data Length Extension supported. */ #define LL_FEAT_PRIVACY (UINT64_C(1) << ( 6)) /*!< LL Privacy supported. */ #define LL_FEAT_EXT_SCAN_FILT_POLICY (UINT64_C(1) << ( 7)) /*!< Extended Scan Filter Policy supported. */ /* --- Core Spec 5.0 --- */ #define LL_FEAT_LE_2M_PHY (UINT64_C(1) << ( 8)) /*!< LE 2M PHY supported. */ #define LL_FEAT_STABLE_MOD_IDX_TRANSMITTER (UINT64_C(1) << ( 9)) /*!< Stable Modulation Index - Transmitter supported. */ #define LL_FEAT_STABLE_MOD_IDX_RECEIVER (UINT64_C(1) << (10)) /*!< Stable Modulation Index - Receiver supported. */ #define LL_FEAT_LE_CODED_PHY (UINT64_C(1) << (11)) /*!< LE Coded PHY supported. */ #define LL_FEAT_LE_EXT_ADV (UINT64_C(1) << (12)) /*!< LE Extended Advertising supported. */ #define LL_FEAT_LE_PER_ADV (UINT64_C(1) << (13)) /*!< LE Periodic Advertising supported. */ #define LL_FEAT_CH_SEL_2 (UINT64_C(1) << (14)) /*!< Channel Selection Algorithm #2 supported. */ #define LL_FEAT_LE_POWER_CLASS_1 (UINT64_C(1) << (15)) /*!< LE Power Class 1 supported. */ #define LL_FEAT_MIN_NUM_USED_CHAN (UINT64_C(1) << (16)) /*!< Minimum Number of Used Channels supported. */ /* --- Core Spec 5.1 --- */ #define LL_FEAT_CONN_CTE_REQ (UINT64_C(1) << (17)) /*!< Connection CTE Request supported */ #define LL_FEAT_CONN_CTE_RSP (UINT64_C(1) << (18)) /*!< Connection CTE Response supported */ #define LL_FEAT_CONNLESS_CTE_TRANS (UINT64_C(1) << (19)) /*!< Connectionless CTE Transmitter supported */ #define LL_FEAT_CONNLESS_CTE_RECV (UINT64_C(1) << (20)) /*!< Connectionless CTE Receiver supported */ #define LL_FEAT_ANTENNA_SWITCH_AOD (UINT64_C(1) << (21)) /*!< Anetenna Switching during CTE Transmission (AoD) supported */ #define LL_FEAT_ANTENNA_SWITCH_AOA (UINT64_C(1) << (22)) /*!< Anetenna Switching during CTE Reception (AoA) supported */ #define LL_FEAT_RECV_CTE (UINT64_C(1) << (23)) /*!< Receive Constant Tone Extension supported */ #define LL_FEAT_PAST_SENDER (UINT64_C(1) << (24)) /*!< Periodic Advertising Sync Transfer – Sender supported. */ #define LL_FEAT_PAST_RECIPIENT (UINT64_C(1) << (25)) /*!< Periodic Advertising Sync Transfer – Recipient supported. */ #define LL_FEAT_SCA_UPDATE (UINT64_C(1) << (26)) /*!< Sleep Clock Accuracy Updates supported. */ #define LL_FEAT_REMOTE_PUB_KEY_VALIDATION (UINT64_C(1) << (27)) /*!< Remote Public Key Validation supported. */ /* --- Core Spec 5.2 --- */ #define LL_FEAT_CIS_MASTER_ROLE (UINT64_C(1) << (28)) /*!< Connected Isochronous Stream Master Role supported. */ #define LL_FEAT_CIS_SLAVE_ROLE (UINT64_C(1) << (29)) /*!< Connected Isochronous Stream Slave Role supported. */ #define LL_FEAT_ISO_BROADCASTER (UINT64_C(1) << (30)) /*!< Isochronous Broadcaster Role supported. */ #define LL_FEAT_ISO_SYNC (UINT64_C(1) << (31)) /*!< Isochronous Synchronizer Role supported. */ #define LL_FEAT_ISO_HOST_SUPPORT (UINT64_C(1) << (32)) /*!< Host support for ISO Channels. */ #define LL_FEAT_POWER_CONTROL_REQUEST (UINT64_C(1) << (33)) /*!< Power control requests supported. */ #define LL_FEAT_POWER_CHANGE_IND (UINT64_C(1) << (34)) /*!< Power control power change indication supported. */ #define LL_FEAT_PATH_LOSS_MONITOR (UINT64_C(1) << (35)) /*!< Path loss monitoring supported. */ #define LE_ENCRYPTION LL_FEAT_ENCRYPTION #define CONNECTION_PARAMETER_REQUEST LL_FEAT_CONN_PARAM_REQ_PROC #define EXTENDED_REJECT_INDICATION LL_FEAT_EXT_REJECT_IND #define LE_SLAVE_INIT_FEATURES_EXCHANGE LL_FEAT_SLV_INIT_FEAT_EXCH #define LE_PING LL_FEAT_LE_PING #define LE_DATA_PACKET_LENGTH_EXTENSION LL_FEAT_DATA_LEN_EXT #define LL_PRIVACY LL_FEAT_PRIVACY #define EXTENDED_SCANNER_FILTER_POLICIES LL_FEAT_EXT_SCAN_FILT_POLICY #define LE_2M_PHY LL_FEAT_LE_2M_PHY #define LE_CODED_PHY LL_FEAT_LE_CODED_PHY #define LE_EXTENDED_ADVERTISING LL_FEAT_LE_EXT_ADV #define LE_PERIODIC_ADVERTISING LL_FEAT_LE_PER_ADV #define CHANNEL_SELECTION_ALGORITHM_2 LL_FEAT_CH_SEL_2 #define LE_CORE_V50_FEATURES \ ( \ LE_2M_PHY | \ LE_CODED_PHY | \ LE_EXTENDED_ADVERTISING | \ LE_PERIODIC_ADVERTISING | \ CHANNEL_SELECTION_ALGORITHM_2 | \ 0 \ ) #if (LE_CORE_V50_FEATURES & LE_PERIODIC_ADVERTISING) #if ((LE_CORE_V50_FEATURES & LE_EXTENDED_ADVERTISING) == 0) #error "enable must enable at the same time" #endif #endif #define LE_FEATURES_CONST_TONE (LL_FEAT_CONN_CTE_REQ | \ LL_FEAT_CONN_CTE_RSP | \ LL_FEAT_CONNLESS_CTE_TRANS | \ LL_FEAT_CONNLESS_CTE_RECV | \ LL_FEAT_ANTENNA_SWITCH_AOD | \ LL_FEAT_ANTENNA_SWITCH_AOA | \ LL_FEAT_RECV_CTE) #define LE_FEATURES_CIS (LL_FEAT_CIS_MASTER_ROLE | \ LL_FEAT_CIS_SLAVE_ROLE | \ LL_FEAT_ISO_HOST_SUPPORT) #define LE_FEATURES_BIS (LL_FEAT_ISO_BROADCASTER | \ LL_FEAT_ISO_SYNC | \ LL_FEAT_ISO_HOST_SUPPORT) #define LE_FEATURES_ISO (LE_FEATURES_BIS|LE_FEATURES_CIS) #define LE_FEATURES_POWER_CONTROL (LL_FEAT_POWER_CONTROL_REQUEST | \ LL_FEAT_POWER_CHANGE_IND | \ LL_FEAT_PATH_LOSS_MONITOR) extern const uint64_t config_btctler_le_features; #define LE_FEATURES_IS_SUPPORT(x) (config_btctler_le_features & (x)) #define LE_FEATURES_IS_SUPPORT_OPTIMIZE(x) if (LE_FEATURES_IS_SUPPORT(x) == 0x0) return /*-----------------------------------------------------------*/ /* *-------------------LE ROLES SUPPORT * brief : 运行时优化(LTO)下,代码空间优化; */ #define LE_MASTER BIT(0) #define LE_SLAVE BIT(1) #define LE_ADV BIT(2) #define LE_SCAN BIT(3) #define LE_INIT BIT(4) /*! \brief Combination */ #define LE_CONN (LE_MASTER|LE_SLAVE) extern const int config_btctler_le_roles; #define LE_ROLES_IS_SUPPORT(x) (config_btctler_le_roles & x) #define LE_ROLES_IS_SUPPORT_OPTIMIZE(x) if (LE_ROLES_IS_SUPPORT(x) == 0x0) return /*-----------------------------------------------------------*/ extern const int config_btctler_le_tws; #define LE_TWS_IS_SUPPORT() (config_btctler_le_tws) /*-----------------------------------------------------------*/ extern const int config_btctler_le_afh_en; #define LE_AFH_IS_SUPPORT() (config_btctler_le_afh_en) #define LE_AFH_IS_SUPPORT_OPTIMIZE(x) if (LE_AFH_IS_SUPPORT() == 0x0) return /* *-------------------LE PARAM CHECK * brief : 运行时优化(LTO)下,代码空间优化; */ // extern const int config_btctler_le_param_check; #define LE_PARAM_IS_CHECK() TRUE//(config_btctler_le_param_check) /* *-------------------LE RAM CONTROL * */ extern const int config_btctler_le_hw_nums; extern const int config_btctler_le_rx_nums; extern const int config_btctler_le_acl_packet_length; extern const int config_btctler_le_acl_total_nums; extern const int config_btctler_le_slave_conn_update_winden; /*-----------------------------------------------------------*/ /* *-------------------LE Multi-link CONTROL */ extern const int config_btctler_le_master_multilink; /*-----------------------------------------------------------*/ #endif //_LL_CONFIG_H_