1 /** 2 **************************************************************************************** 3 * 4 * @file rwble_config.h 5 * 6 * @brief Configuration of the BLE protocol stack (max number of supported connections, 7 * type of partitioning, etc.) 8 * 9 * Copyright (C) RivieraWaves 2009-2015 10 * 11 * 12 **************************************************************************************** 13 */ 14 15 #ifndef RWBLE_CONFIG_H_ 16 #define RWBLE_CONFIG_H_ 17 18 /** 19 **************************************************************************************** 20 * @addtogroup ROOT 21 * @{ 22 * @name BLE stack configuration 23 * @{ 24 **************************************************************************************** 25 */ 26 27 #include "rwip_config.h" 28 29 30 /******************************************************************************************/ 31 /* ------------------------- COEXISTENCE SETUP ------------------------------------*/ 32 /******************************************************************************************/ 33 34 ///WLAN coex 35 #define RW_BLE_WLAN_COEX RW_WLAN_COEX 36 ///WLAN test mode 37 #define RW_BLE_WLAN_COEX_TEST RW_WLAN_COEX_TEST 38 39 /// MWS Coexistence 40 #define RW_BLE_MWS_COEX RW_MWS_COEX 41 ///WLAN test mode 42 #define RW_BLE_MWS_COEX_TEST RW_MWS_COEX_TEST 43 44 ///To let the HW using the default values set in the registers 45 #define RW_BLE_PTI_PRIO_AUTO 15 46 47 48 49 /// PTI configuration index 50 enum rwble_pti_config_idx 51 { 52 BLE_PTI_CON_IDX, 53 BLE_PTI_ADV_IDX, 54 BLE_PTI_SCAN_IDX, 55 BLE_PTI_INIT_IDX, 56 BLE_PTI_IDX_MAX 57 }; 58 59 60 /******************************************************************************************/ 61 /* -------------------------- DEBUG SETUP ----------------------------------------*/ 62 /******************************************************************************************/ 63 64 /// Flag indicating if tester emulator is available or not 65 #if defined(CFG_BLE_TESTER) 66 /// Flag indicating if tester emulator is available or not 67 #define BLE_TESTER 1 68 #else // defined (CFG_BLE_TESTER) 69 #define BLE_TESTER 0 70 #endif // defined (CFG_BLE_TESTER) 71 72 /// Flag indicating if debug mode is activated or not 73 #define BLE_DEBUG RW_DEBUG 74 #define BLE_SWDIAG RW_SWDIAG 75 76 /// Flag indicating if Read/Write memory commands are supported or not 77 #define BLE_DEBUG_MEM RW_DEBUG_MEM 78 79 /// Flag indicating if Flash debug commands are supported or not 80 #define BLE_DEBUG_FLASH RW_DEBUG_FLASH 81 82 /// Flag indicating if NVDS feature is supported or not 83 #define BLE_DEBUG_NVDS RW_DEBUG_NVDS 84 85 /// Flag indicating if CPU stack profiling commands are supported or not 86 #define BLE_DEBUG_STACK_PROF RW_DEBUG_STACK_PROF 87 88 /******************************************************************************************/ 89 /* ------------------------- BLE SETUP --------------------------------------------*/ 90 /******************************************************************************************/ 91 92 /// Exchange memory presence 93 #define BLE_EM_PRESENT (BLE_EMB_PRESENT) 94 95 #define BLE_TEST_MODE_SUPPORT (1) 96 97 /// Number of devices in the white list 98 #define BLE_WHITELIST_MAX (BLE_CONNECTION_MAX + 2) 99 100 /// Number of devices in the Resolution Address List 101 /// This have to be tuned according to the core frequency. Worst case is having in scan mode 102 /// all IRK and valid in resolving list and device receive a Direct Adv Report that contains 103 /// RPAs for InitA and AdvA 104 #define BLE_RESOL_ADDR_LIST_MAX (3) 105 106 /// Connection handle max 107 #define BLE_MAX_CONHDL (BLE_CONNECTION_MAX) 108 109 /// Number of devices capacity for the scan filtering 110 #if (BLE_CENTRAL || BLE_OBSERVER) 111 #define BLE_DUPLICATE_FILTER_MAX (10) 112 #endif //(BLE_CENTRAL || BLE_OBSERVER) 113 114 /** Size of the heap 115 * - For KE messages: (N+1) x 256 116 * - For LLC environment: N x 80 Bytes 117 * - For LLD events/intervals: (2N+1) x (80 + 16) 118 */ 119 #if (BLE_CENTRAL || BLE_PERIPHERAL) 120 #define BLE_HEAP_MSG_SIZE (256 * (BLE_CONNECTION_MAX+1) + 80 * (BLE_CONNECTION_MAX) + 96 * (2*BLE_CONNECTION_MAX+1)) 121 /// Size required to allocate environment variable for one link 122 #define BLE_HEAP_ENV_SIZE (sizeof(struct llc_env_tag) + 4) 123 #else 124 #define BLE_HEAP_MSG_SIZE (256) 125 /// Size required to allocate environment variable for one link 126 #define BLE_HEAP_ENV_SIZE (4) 127 #endif /* #if (BLE_CENTRAL || BLE_PERIPHERAL) */ 128 129 130 /******************************************************************************************/ 131 /* -------------------------- RADIO SETUP ----------------------------------------*/ 132 /******************************************************************************************/ 133 /// Class of device 134 #define RF_CLASS1 0 135 136 /******************************************************************************************/ 137 /* -------------------------- REGISTER SETUP --------------------------------------*/ 138 /******************************************************************************************/ 139 140 #define RW_BLE_CUST1_INST 0 141 142 /******************************************************************************************/ 143 /* -------------------------- SCHEDULING SETUP --------------------------------------*/ 144 /******************************************************************************************/ 145 146 /// EA programming latency for only 1 activity 147 #define RWBLE_PROG_LATENCY_DFT (2) 148 /// EA asap latency 149 #define RWBLE_ASAP_LATENCY (2) 150 /// Instant value mask 151 #define RWBLE_INSTANT_MASK (0x0000FFFF) 152 153 /******************************************************************************************/ 154 /* ----------------------- SUPPORTED HCI COMMANDS --------------------------------*/ 155 /******************************************************************************************/ 156 157 //byte0 158 #define BLE_CMDS_BYTE0 BLE_DISC_CMD 159 //byte2 160 #define BLE_CMDS_BYTE2 BLE_RD_REM_VERS_CMD 161 //byte5 162 #define BLE_CMDS_BYTE5 (BLE_SET_EVT_MSK_CMD | BLE_RESET_CMD) 163 //byte10 164 #define BLE_CMDS_BYTE10 (BLE_HL_NB_CMP_PKT_CMD | BLE_RD_TX_PWR_CMD\ 165 |BLE_HL_BUF_SIZE_CMD | BLE_SET_CTRL_TO_HL_FCTRL_CMD) 166 //byte14 167 #define BLE_CMDS_BYTE14 (BLE_RD_LOC_VERS_CMD | BLE_RD_LOC_SUP_FEAT_CMD\ 168 |BLE_RD_BUF_SIZE_CMD) 169 //byte15 170 #define BLE_CMDS_BYTE15 (BLE_RD_BD_ADDR_CMD | BLE_RD_RSSI_CMD) 171 #if !(BLE_QUALIF) 172 //byte22 173 #define BLE_CMDS_BYTE22 (BLE_SET_EVT_MSK_PG2_CMD) 174 #else 175 //byte22 176 #define BLE_CMDS_BYTE22 0 177 #endif 178 //byte25 179 #define BLE_CMDS_BYTE25 (BLE_LE_SET_EVT_MSK_CMD | BLE_LE_RD_BUF_SIZE_CMD\ 180 |BLE_LE_RD_LOC_SUP_FEAT_CMD | BLE_LE_SET_RAND_ADDR_CMD\ 181 |BLE_LE_SET_ADV_PARAM_CMD | BLE_LE_RD_ADV_TX_PWR_CMD\ 182 |BLE_LE_SET_ADV_DATA_CMD) 183 //byte26 184 #define BLE_CMDS_BYTE26 (BLE_LE_SET_SC_RSP_DATA_CMD | BLE_LE_SET_ADV_EN_CMD\ 185 |BLE_LE_SET_SC_PARAM_CMD | BLE_LE_SET_SC_EN_CMD\ 186 |BLE_LE_CREAT_CNX_CMD | BLE_LE_CREAT_CNX_CNL_CMD\ 187 |BLE_LE_RD_WL_SIZE_CMD | BLE_LE_CLEAR_WL_CMD) 188 //byte27 189 #define BLE_CMDS_BYTE27 (BLE_LE_ADD_DEV_WL_CMD | BLE_LE_REM_DEV_WL_CMD\ 190 |BLE_LE_CNX_UPDATE_CMD | BLE_LE_SET_HL_CH_CLASS_CMD\ 191 |BLE_LE_RD_CH_MAP_CMD | BLE_LE_RD_REM_USED_FEAT_CMD\ 192 |BLE_LE_ENCRYPT_CMD | BLE_LE_RAND_CMD) 193 //byte28 194 #define BLE_CMDS_BYTE28 (BLE_LE_START_ENC_CMD | BLE_LE_LTK_REQ_RPLY_CMD\ 195 |BLE_LE_LTK_REQ_NEG_RPLY_CMD | BLE_LE_RD_SUPP_STATES_CMD\ 196 |BLE_LE_RX_TEST_CMD | BLE_LE_TX_TEST_CMD\ 197 |BLE_LE_STOP_TEST_CMD) 198 #if !(BLE_QUALIF) 199 //byte32 200 #define BLE_CMDS_BYTE32 (BLE_RD_AUTH_PAYL_TO_CMD | BLE_WR_AUTH_PAYL_TO_CMD) 201 //byte33 202 #define BLE_CMDS_BYTE33 (BLE_LE_REM_CON_PARA_REQ_RPLY_CMD | BLE_LE_REM_CON_PARA_REQ_NEG_RPLY_CMD\ 203 | BLE_LE_SET_DATA_LEN_CMD | BLE_LE_RD_SUGGTED_DFT_DATA_LEN_CMD) 204 //byte34 205 #define BLE_CMDS_BYTE34 ( BLE_LE_WR_SUGGTED_DFT_DATA_LEN_CMD \ 206 | BLE_LE_RD_LOC_P256_PUB_KEY_CMD \ 207 | BLE_LE_GEN_DH_KEY_CMD \ 208 | BLE_LE_ADD_DEV_TO_RESOLV_LIST_CMD \ 209 | BLE_LE_REM_DEV_FROM_RESOLV_LIST_CMD \ 210 | BLE_LE_CLEAR_RESOLV_LIST_CMD \ 211 | BLE_LE_RD_RESOLV_LIST_SIZE_CMD \ 212 | BLE_LE_RD_PEER_RESOLV_ADDR_CMD) 213 //byte35 214 #define BLE_CMDS_BYTE35 ( BLE_LE_RD_LOCAL_RESOLV_ADDR_CMD \ 215 | BLE_LE_SET_ADDR_RESOL_CMD \ 216 | BLE_LE_SET_RESOLV_PRIV_ADDR_TO_CMD \ 217 | BLE_LE_RD_MAX_DATA_LEN_CMD) 218 #else 219 //byte32 220 #define BLE_CMDS_BYTE32 0 221 //byte33 222 #define BLE_CMDS_BYTE33 0 223 //byte34 224 #define BLE_CMDS_BYTE34 0 225 //byte35 226 #define BLE_CMDS_BYTE35 0 227 #endif // BLE_QUALIF 228 229 /******************************************************************************************/ 230 /* ------- SUPPORTED VALUES FOR DATA LENGTH EXTENSION COMMANDS -----------------------*/ 231 /******************************************************************************************/ 232 #define BLE_TESTMODE_MAX_OCTETS (255) 233 //8 bits preamble 234 #define BLE_PREAMBLE_TIME (8) 235 //32 bits Access Code 236 #define BLE_ACCESS_CODE_BIT_SIZE (32) 237 //16 bits header 238 #define BLE_HEADER_BIT_SIZE (16) 239 //32bits MIC 240 #define BLE_MIC_BIT_SIZE (32) 241 //24 bits CRC 242 #define BLE_CRC_BIT_SIZE (24) 243 //8 bits preamble 244 #define BLE_PREAMBLE_SIZE (1) 245 //4 bytes Access Code 246 #define BLE_ACCESS_CODE_SIZE (4) 247 //2 bytes header 248 #define BLE_HEADER_SIZE (2) 249 //4 bytes MIC 250 #define BLE_MIC_SIZE (4) 251 //3 bytes CRC 252 #define BLE_CRC_SIZE (3) 253 254 #define BLE_COMMON_BIT_SIZE (BLE_ACCESS_CODE_BIT_SIZE + BLE_HEADER_BIT_SIZE + BLE_CRC_BIT_SIZE) 255 /******************************************************************************************/ 256 /* -------------------------- DLE SETUP ----------------------------------------*/ 257 /******************************************************************************************/ 258 259 260 261 #define BLE_MIN_OCTETS (27) 262 #define BLE_MIN_TIME (328) 263 #if !(BLE_QUALIF) 264 #define BLE_MAX_OCTETS (251) 265 #define BLE_MAX_TIME (2120) 266 #else 267 #define BLE_MAX_OCTETS (27) 268 #define BLE_MAX_TIME (328) 269 #endif 270 // Max number of descriptor to be linked under IRQ context to avoid CPU overload 271 #define BLE_NB_MAX_CHUNKS (10) 272 /******************************************************************************************/ 273 /* -------------------------- PROCEDURE STARTUP ----------------------------------------*/ 274 /******************************************************************************************/ 275 276 #define BLE_DLE_PROCEDURE (1 << 0) 277 #define BLE_PHY_PROCEDURE (1 << 1) 278 279 /// @} BLE stack configuration 280 /// @} ROOT 281 282 #endif // RWBLE_CONFIG_H_ 283