| /** |
| **************************************************************************************** |
| * |
| * @file rwble_config.h |
| * |
| * @brief Configuration of the BLE lower layer stack |
| * |
| * Copyright (C) RivieraWaves 2009-2016 |
| * |
| **************************************************************************************** |
| */ |
| |
| #ifndef RWBLE_CONFIG_H_ |
| #define RWBLE_CONFIG_H_ |
| |
| /** |
| **************************************************************************************** |
| * @addtogroup ROOT |
| * @{ |
| * @name BLE LL stack configuration |
| * @{ |
| **************************************************************************************** |
| */ |
| /******************************************************************************************/ |
| /* -------------------------- FEATURE SETUP --------------------------------------*/ |
| /******************************************************************************************/ |
| |
| /// Features byte 0 |
| #define BLE_FEATURES_BYTE0 ( (1 << BLE_FEAT_ENC ) \ |
| | (1 << BLE_FEAT_CON_PARAM_REQ_PROC ) \ |
| | (1 << BLE_FEAT_EXT_REJ_IND ) \ |
| | (1 << BLE_FEAT_SLAVE_INIT_FEAT_EXCHG ) \ |
| | (1 << BLE_FEAT_PING ) \ |
| | (1 << BLE_FEAT_DATA_PKT_LEN_EXT ) \ |
| | (1 << BLE_FEAT_LL_PRIVACY ) \ |
| | (1 << BLE_FEAT_EXT_SCAN_FILT_POLICY ) ) |
| |
| /// Features byte 1 |
| #define BLE_FEATURES_BYTE1 ( (BLE_PHY_2MBPS_SUPPORT << (BLE_FEAT_2M_PHY - 8) ) \ |
| | (BLE_STABLE_MOD_IDX_TX_SUPPORT << (BLE_FEAT_STABLE_MOD_IDX_TX - 8) ) \ |
| | (BLE_STABLE_MOD_IDX_RX_SUPPORT << (BLE_FEAT_STABLE_MOD_IDX_RX - 8) ) \ |
| | (BLE_PHY_CODED_SUPPORT << (BLE_FEAT_CODED_PHY - 8) ) \ |
| | (1 << (BLE_FEAT_EXT_ADV - 8) ) \ |
| | (1 << (BLE_FEAT_PER_ADV - 8) ) \ |
| | (1 << (BLE_CHAN_SEL_ALGO_2 - 8) ) \ |
| | (1 << (BLE_PWR_CLASS_1 - 8) ) ) |
| |
| /// Features byte 2 |
| #define BLE_FEATURES_BYTE2 ( (1 << (MIN_NUM_USED_CHAN_PROC - 16) ) ) |
| |
| /// Features byte 3 |
| #define BLE_FEATURES_BYTE3 ( (1 << (BLE_FEAT_PUB_KEY_VALID - 24) ) ) |
| |
| /// Features byte 4 |
| #define BLE_FEATURES_BYTE4 (0) |
| |
| /// Features byte 5 |
| #define BLE_FEATURES_BYTE5 (0) |
| |
| /// Features byte 6 |
| #define BLE_FEATURES_BYTE6 (0) |
| |
| /// Features byte 7 |
| #define BLE_FEATURES_BYTE7 (0) |
| |
| /// States byte 0 |
| #define BLE_STATES_BYTE0 ( BLE_NON_CON_ADV_STATE | BLE_DISC_ADV_STATE\ |
| | BLE_CON_ADV_STATE | BLE_HDC_DIRECT_ADV_STATE\ |
| | BLE_PASS_SCAN_STATE | BLE_ACTIV_SCAN_STATE\ |
| | BLE_INIT_MASTER_STATE | BLE_CON_SLAVE_STATE) |
| |
| /// States byte 1 |
| #define BLE_STATES_BYTE1 ( BLE_NON_CON_ADV_PASS_SCAN_STATE | BLE_DISC_ADV_PASS_SCAN_STATE\ |
| | BLE_CON_ADV_PASS_SCAN_STATE | BLE_HDC_DIRECT_ADV_PASS_SCAN_STATE\ |
| | BLE_NON_CON_ADV_ACTIV_SCAN_STATE | BLE_DISC_ADV_ACTIV_SCAN_STATE\ |
| | BLE_CON_ADV_ACTIV_SCAN_STATE | BLE_HDC_DIRECT_ADV_ACTIV_SCAN_STATE) |
| |
| /// States byte 2 |
| #define BLE_STATES_BYTE2 ( BLE_NON_CON_ADV_INIT_STATE | BLE_DISC_ADV_INIT_STATE\ |
| | BLE_NON_CON_ADV_MASTER_STATE | BLE_DISC_ADV_MASTER_STATE\ |
| | BLE_NON_CON_ADV_SLAVE_STATE | BLE_DISC_ADV_SLAVE_STATE\ |
| | BLE_PASS_SCAN_INIT_STATE | BLE_ACTIV_SCAN_INIT_STATE) |
| |
| /// States byte 3 |
| #define BLE_STATES_BYTE3 ( BLE_PASS_SCAN_MASTER_STATE | BLE_ACTIV_SCAN_MASTER_STATE\ |
| | BLE_PASS_SCAN_SLAVE_STATE | BLE_ACTIV_SCAN_SLAVE_STATE\ |
| | BLE_INIT_MASTER_MASTER_STATE | BLE_LDC_DIRECT_ADV_STATE\ |
| | BLE_LDC_DIRECT_ADV_PASS_SCAN_STATE | BLE_LDC_DIRECT_ADV_ACTIV_SCAN_STATE) |
| |
| /// States byte 4 |
| #define BLE_STATES_BYTE4 ( BLE_CON_ADV_INIT_MASTER_SLAVE_STATE | BLE_HDC_DIRECT_ADV_INIT_MASTER_SLAVE_STATE\ |
| | BLE_LDC_DIRECT_ADV_INIT_MASTER_SLAVE_STATE | BLE_CON_ADV_MASTER_SLAVE_STATE\ |
| | BLE_HDC_DIRECT_ADV_MASTER_SLAVE_STATE | BLE_LDC_DIRECT_ADV_MASTER_SLAVE_STATE\ |
| | BLE_CON_ADV_SLAVE_SLAVE_STATE | BLE_HDC_DIRECT_ADV_SLAVE_SLAVE_STATE) |
| |
| /// States byte 5 |
| #define BLE_STATES_BYTE5 ( BLE_LDC_DIRECT_ADV_SLAVE_SLAVE_STATE | BLE_INIT_MASTER_SLAVE_STATE) |
| |
| /// States byte 6 |
| #define BLE_STATES_BYTE6 0x0 |
| /// States byte 7 |
| #define BLE_STATES_BYTE7 0x0 |
| |
| |
| /******************************************************************************************/ |
| /* -------------------------- GENERAL SETUP --------------------------------------*/ |
| /******************************************************************************************/ |
| |
| /************************************ |
| * KE message heap * |
| ************************************ |
| * |
| * LLD->LLC/LLM messages: |
| * - connection < 6 |
| * - advertising adv end 56 |
| * - scan max adv chain 1650 |
| * - initiating init end 56 |
| * - per adv tx 2 |
| * - per adv rx max adv chain 1650 |
| * - encryption 16 |
| * => 1650 + 16 + (N-1) x 56 |
| * |
| * HCI params stored by LLM: |
| * - advertising 26 |
| * - scan 16 |
| * - initiating 58 |
| * - per adv tx 8 |
| * - per adv rx 14 |
| * => 58 + (N-1) x 26 |
| * |
| * LLCP TX queue: |
| * - Max 3 LLCP in the queue per link |
| * - Average 10 bytes per PDU |
| * - N x 3 x (12 + 10) = N x 66 |
| * |
| * HCI commands reception: |
| * - N commands of max 255 bytes |
| * - N x 255 |
| * |
| * HCI events: |
| * - Max advertising reports in TX queue: N x 255 |
| * - + 1 100-bytes event per activity: N x 100 |
| * |
| * Kernel timers: |
| * - 1 timer per connection |
| * - N x 12 |
| * |
| * Due to high probability of fragmentation, and sizes of the Kernel message headers, the total of above additions is |
| * doubled. |
| */ |
| |
| #define BLE_HEAP_MSG_SIZE ( 2 * ( (1650*BLE_OBSERVER) \ |
| + (16 + (BLE_ACTIVITY_MAX-1) * 56) \ |
| + (58 + (BLE_ACTIVITY_MAX-1) * 26) \ |
| + (BLE_ACTIVITY_MAX * 66) \ |
| + (HCI_NB_CMD_PKTS * 255) \ |
| + (BLE_OBSERVER * BLE_MAX_NB_ADV_REP_FRAG * 255 + BLE_ACTIVITY_MAX * 100) \ |
| + (BLE_ACTIVITY_MAX * 12) \ |
| ) ) |
| |
| /************************************ |
| * Environments heap * |
| ************************************ |
| * |
| * Max env usage per activity: |
| * - connection 84 (LLC) + 144 228 |
| * - advertising 140 140 |
| * - scan 32 + 2 x 108 + 16 264 |
| * - initiating 84 + 3 x 80 324 |
| * - per adv tx 80 80 |
| * - per adv rx 96 96 |
| * |
| * It is possible to have one initiating + 1 scan + (N-2) other activities. |
| * Add 2 activities to consider Heap fragmentation. |
| * |
| * Heap size = 330 + 270 + (N-2 x 230) + 2 x 230 = 600 + N x 230 |
| */ |
| #define BLE_HEAP_ENV_SIZE (330*BLE_CENTRAL + 270*BLE_OBSERVER + BLE_ACTIVITY_MAX * 230) |
| |
| /// Normal Rx window size (in us) |
| #define BLE_NORMAL_WIN_SIZE 14 |
| /// Normal Rx window size for coded phy (in us) |
| // In Long Range, the symbol for the Access Address is 8 times longer than the symbol for 1Mbps. |
| #define BLE_PHY_CODED_NORMAL_WIN_SIZE (BLE_NORMAL_WIN_SIZE * 8) |
| |
| |
| /// Number of devices in the white list |
| #define BLE_WHITELIST_MAX (BLE_ACTIVITY_MAX + 2) |
| |
| /// Number of devices in the Resolution Address List |
| /// This have to be tuned according to the core frequency. Worst case is having in scan mode |
| /// all IRK and valid in resolving list and device receive a Direct Adv Report that contains |
| /// RPAs for InitA and AdvA |
| #define BLE_RESOL_ADDR_LIST_MAX (BLE_RAL_MAX) |
| |
| /// Number of RX data buffers (common for all activities) |
| #define BLE_DATA_BUF_NB_RX (BLE_RX_DESC_NB + 3) |
| |
| /// Number of TX ACL data buffers |
| #define BLE_ACL_BUF_NB_TX (BLE_ACTIVITY_MAX + 2) |
| |
| /// Number of advertising data buffers |
| #define BLE_ADV_BUF_NB_TX (BLE_ACTIVITY_MAX) |
| /// Number of advertising or scan response data fragments in extended advertising PDU chain |
| #define BLE_ADV_FRAG_NB_TX (5) |
| /// Size of advertising or scan response data fragments in extended advertising PDU chain |
| #define BLE_ADV_FRAG_SIZE_TX (254) |
| |
| |
| /// Data packet transmission size and duration |
| /// These values represent what the device supports |
| #define BLE_MIN_OCTETS (27) // number of octets |
| #define BLE_MIN_TIME (328) // in us |
| #define BLE_MAX_OCTETS (251) // number of octets |
| #define BLE_MAX_TIME (17040) // in us |
| |
| /// Number of devices capacity for the scan duplicate filtering |
| #if (BLE_OBSERVER) |
| #define BLE_DUPLICATE_FILTER_MAX (10) |
| #endif //(BLE_OBSERVER) |
| |
| /// Number of TX descriptors per BLE connection [2|3|4] |
| #define BLE_NB_TX_DESC_PER_CON 2 |
| |
| /// Number of TX descriptors per advertising set |
| #define BLE_NB_TX_DESC_PER_ADV (2+BLE_ADV_FRAG_NB_TX) |
| |
| /// Number of TX descriptors per BLE activity (maximum needed for connection or advertising) |
| #if (BLE_NB_TX_DESC_PER_CON > BLE_NB_TX_DESC_PER_ADV) |
| #define BLE_NB_TX_DESC_PER_ACT (BLE_NB_TX_DESC_PER_CON) |
| #else //(BLE_NB_TX_DESC_PER_CON > BLE_NB_TX_DESC_PER_ADV) |
| #define BLE_NB_TX_DESC_PER_ACT (BLE_NB_TX_DESC_PER_ADV) |
| #endif //(BLE_NB_TX_DESC_PER_CON > BLE_NB_TX_DESC_PER_ADV) |
| |
| /// Number of RX descriptors |
| #define BLE_RX_DESC_NB (6) |
| /// Number of TX descriptors |
| #define BLE_TX_DESC_NB (BLE_NB_TX_DESC_PER_ACT * BLE_ACTIVITY_MAX) |
| |
| /// Legacy advertising HCI interface |
| #define BLE_ADV_LEGACY_ITF (HCI_TL_SUPPORT) |
| |
| |
| /******************************************************************************************/ |
| /* -------------------------- DEBUG SETUP ----------------------------------------*/ |
| /******************************************************************************************/ |
| |
| #define BLE_TEST_MODE_SUPPORT (1) |
| |
| /******************************************************************************************/ |
| /* -------------------- CHANNEL ASSESSMENT SETUP --------------------------*/ |
| /******************************************************************************************/ |
| |
| /// RSSI threshold for interference detection (in dBm) |
| #define BLE_CH_ASSESS_RSSI_INTERF_THR (-70) |
| |
| /// Channel map update period (in sec) |
| #define BLE_CH_MAP_UPDATE_PERIOD 4 |
| |
| /// Maximum duration without receiving a packet before considering a channel quality unknown (in slots) (2 secs) |
| #define BLE_CH_ASSESS_VALID_TO 0x1900 |
| |
| /// Maximum duration without receiving a packet before reintroducing a channel to the map (in slots) (20 secs) |
| #define BLE_CH_REASSESS_TO 0x7D00 |
| |
| /// Maximum counter value for channel assessment |
| #define BLE_CH_ASSESS_COUNT_MAX 4 |
| /// Counter threshold to consider a channel good |
| #define BLE_CH_ASSESS_COUNT_THR_GOOD 2 |
| /// Counter threshold to consider a channel bad |
| #define BLE_CH_ASSESS_COUNT_THR_BAD -2 |
| /// Minimum counter value for channel assessment |
| #define BLE_CH_ASSESS_COUNT_MIN -4 |
| |
| |
| /******************************************************************************************/ |
| /* ----------------------- SUPPORTED HCI COMMANDS --------------------------------*/ |
| /******************************************************************************************/ |
| |
| //byte0 |
| #define BLE_CMDS_BYTE0 BLE_DISC_CMD |
| //byte2 |
| #define BLE_CMDS_BYTE2 BLE_RD_REM_VERS_CMD |
| //byte5 |
| #define BLE_CMDS_BYTE5 (BLE_SET_EVT_MSK_CMD | BLE_RESET_CMD) |
| //byte10 |
| #define BLE_CMDS_BYTE10 (BLE_HL_NB_CMP_PKT_CMD | BLE_RD_TX_PWR_CMD\ |
| |BLE_HL_BUF_SIZE_CMD | BLE_SET_CTRL_TO_HL_FCTRL_CMD) |
| //byte14 |
| #define BLE_CMDS_BYTE14 (BLE_RD_LOC_VERS_CMD | BLE_RD_LOC_SUP_FEAT_CMD) |
| //byte15 |
| #define BLE_CMDS_BYTE15 (BLE_RD_BD_ADDR_CMD | BLE_RD_RSSI_CMD) |
| //byte22 |
| #define BLE_CMDS_BYTE22 (BLE_SET_EVT_MSK_PG2_CMD) |
| //byte25 |
| #define BLE_CMDS_BYTE25 (BLE_LE_SET_EVT_MSK_CMD | BLE_LE_RD_BUF_SIZE_CMD\ |
| |BLE_LE_RD_LOC_SUP_FEAT_CMD | BLE_LE_SET_RAND_ADDR_CMD\ |
| |BLE_LE_SET_ADV_PARAM_CMD | BLE_LE_RD_ADV_TX_PWR_CMD\ |
| |BLE_LE_SET_ADV_DATA_CMD) |
| //byte26 |
| #define BLE_CMDS_BYTE26 (BLE_LE_SET_SC_RSP_DATA_CMD | BLE_LE_SET_ADV_EN_CMD\ |
| |BLE_LE_SET_SC_PARAM_CMD | BLE_LE_SET_SC_EN_CMD\ |
| |BLE_LE_CREAT_CNX_CMD | BLE_LE_CREAT_CNX_CNL_CMD\ |
| |BLE_LE_RD_WL_SIZE_CMD | BLE_LE_CLEAR_WL_CMD) |
| //byte27 |
| #define BLE_CMDS_BYTE27 (BLE_LE_ADD_DEV_WL_CMD | BLE_LE_REM_DEV_WL_CMD\ |
| |BLE_LE_CNX_UPDATE_CMD | BLE_LE_SET_HL_CH_CLASS_CMD\ |
| |BLE_LE_RD_CH_MAP_CMD | BLE_LE_RD_REM_FEAT_CMD\ |
| |BLE_LE_ENCRYPT_CMD | BLE_LE_RAND_CMD) |
| //byte28 |
| #define BLE_CMDS_BYTE28 (BLE_LE_START_ENC_CMD | BLE_LE_LTK_REQ_RPLY_CMD\ |
| |BLE_LE_LTK_REQ_NEG_RPLY_CMD | BLE_LE_RD_SUPP_STATES_CMD\ |
| |BLE_LE_RX_TEST_CMD | BLE_LE_TX_TEST_CMD\ |
| |BLE_LE_STOP_TEST_CMD) |
| //byte32 |
| #define BLE_CMDS_BYTE32 (BLE_RD_AUTH_PAYL_TO_CMD | BLE_WR_AUTH_PAYL_TO_CMD) |
| //byte33 |
| #define BLE_CMDS_BYTE33 (BLE_LE_REM_CON_PARA_REQ_RPLY_CMD | BLE_LE_REM_CON_PARA_REQ_NEG_RPLY_CMD\ |
| | BLE_LE_SET_DATA_LEN_CMD | BLE_LE_RD_SUGGTED_DFT_DATA_LEN_CMD) |
| //byte34 |
| #define BLE_CMDS_BYTE34 ( BLE_LE_WR_SUGGTED_DFT_DATA_LEN_CMD \ |
| | BLE_LE_RD_LOC_P256_PUB_KEY_CMD \ |
| | BLE_LE_GEN_DH_KEY_CMD \ |
| | BLE_LE_ADD_DEV_TO_RESOLV_LIST_CMD \ |
| | BLE_LE_REM_DEV_FROM_RESOLV_LIST_CMD \ |
| | BLE_LE_CLEAR_RESOLV_LIST_CMD \ |
| | BLE_LE_RD_RESOLV_LIST_SIZE_CMD \ |
| | BLE_LE_RD_PEER_RESOLV_ADDR_CMD ) |
| //byte35 |
| #define BLE_CMDS_BYTE35 ( BLE_LE_RD_LOCAL_RESOLV_ADDR_CMD \ |
| | BLE_LE_SET_ADDR_RESOL_CMD \ |
| | BLE_LE_SET_RESOLV_PRIV_ADDR_TO_CMD \ |
| | BLE_LE_RD_MAX_DATA_LEN_CMD \ |
| | BLE_LE_RD_PHY_CMD \ |
| | BLE_LE_SET_DFT_PHY_CMD \ |
| | BLE_LE_SET_PHY_CMD \ |
| | BLE_LE_ENH_RX_TEST_CMD ) |
| //byte36 |
| #define BLE_CMDS_BYTE36 ( BLE_LE_ENH_TX_TEST_CMD \ |
| | BLE_LE_SET_ADV_SET_RAND_ADDR_CMD \ |
| | BLE_LE_SET_EXT_ADV_PARAM_CMD \ |
| | BLE_LE_SET_EXT_ADV_DATA_CMD \ |
| | BLE_LE_SET_EXT_SCAN_RSP_DATA_CMD \ |
| | BLE_LE_SET_EXT_ADV_EN_CMD \ |
| | BLE_LE_RD_MAX_ADV_DATA_LEN_CMD \ |
| | BLE_LE_RD_NB_SUPP_ADV_SETS_CMD ) |
| //byte37 |
| #define BLE_CMDS_BYTE37 ( BLE_LE_RMV_ADV_SET_CMD \ |
| | BLE_LE_CLEAR_ADV_SETS_CMD \ |
| | BLE_LE_SET_PER_ADV_PARAM_CMD \ |
| | BLE_LE_SET_PER_ADV_DATA_CMD \ |
| | BLE_LE_SET_PER_ADV_EN_CMD \ |
| | BLE_LE_SET_EXT_SCAN_PARAM_CMD \ |
| | BLE_LE_SET_EXT_SCAN_EN_CMD \ |
| | BLE_LE_EXT_CREATE_CON_CMD ) |
| //byte38 |
| #define BLE_CMDS_BYTE38 ( BLE_LE_PER_ADV_CREATE_SYNC_CMD \ |
| | BLE_LE_PER_ADV_CREATE_SYNC_CANCEL_CMD \ |
| | BLE_LE_PER_ADV_TERM_SYNC_CMD \ |
| | BLE_LE_ADD_DEV_TO_PER_ADV_LIST_CMD \ |
| | BLE_LE_RMV_DEV_FROM_PER_ADV_LIST_CMD \ |
| | BLE_LE_CLEAR_PER_ADV_LIST_CMD \ |
| | BLE_LE_RD_PER_ADV_LIST_SIZE_CMD \ |
| | BLE_LE_RD_TX_PWR_CMD ) |
| //byte39 |
| #define BLE_CMDS_BYTE39 ( BLE_LE_RD_RF_PATH_COMP_CMD \ |
| | BLE_LE_WR_RF_PATH_COMP_CMD \ |
| | BLE_LE_SET_PRIV_MODE_CMD ) |
| |
| |
| /******************************************************************************************/ |
| /* ------------------------ CONNECTION HANDLE ----------------------------------------*/ |
| /******************************************************************************************/ |
| |
| /// Bit set for BLE connection handles |
| #define BLE_CONHDL_MIN (0) |
| #define BLE_CONHDL_MAX (BLE_CONHDL_MIN + BLE_ACTIVITY_MAX - 1) |
| #define BLE_LINKID_TO_CONHDL(link_id) ((uint16_t) (BLE_CONHDL_MIN + (link_id))) |
| #define BLE_CONHDL_TO_LINKID(conhdl) ((uint8_t) ((conhdl) - BLE_CONHDL_MIN)) |
| |
| /// Bit set for BLE sync handles (used in periodic advertising receiver mode) |
| #define BLE_SYNCHDL_MIN (0) |
| #define BLE_SYNCHDL_MAX (BLE_SYNCHDL_MIN + BLE_ACTIVITY_MAX - 1) |
| #define BLE_ACTID_TO_SYNCHDL(act_id) ((uint16_t) (BLE_SYNCHDL_MIN + (act_id))) |
| #define BLE_SYNCHDL_TO_ACTID(synchdl) ((uint8_t) ((synchdl) - BLE_SYNCHDL_MIN)) |
| |
| /// CIS Channel handle mapping |
| #define BLE_CISHDL_MIN (0x100) |
| #define BLE_CHANHDL_TO_CISHDL(chanhdl) ((uint16_t) (BLE_CISHDL_MIN + (chanhdl))) |
| #define BLE_CISHDL_TO_CHANHDL(cishdl) ((uint8_t) ((cishdl) - BLE_CISHDL_MIN)) |
| |
| /// BIS Channel handle mapping |
| #define BLE_BISHDL_MIN (0x200) |
| #define BLE_CHANHDL_TO_BISHDL(chanhdl) ((uint16_t) (BLE_BISHDL_MIN + (chanhdl))) |
| #define BLE_BISHDL_TO_CHANHDL(bishdl) ((uint8_t) ((bishdl) - BLE_BISHDL_MIN)) |
| |
| |
| /// AM0 Channel handle mapping |
| #define BLE_AM0HDL_MIN (0x300) |
| #define BLE_CHANHDL_TO_AM0HDL(chanhdl) ((uint16_t) (BLE_AM0HDL_MIN + (chanhdl))) |
| #define BLE_AM0HDL_TO_CHANHDL(am0) ((uint8_t) ((am0) - BLE_AM0HDL_MIN)) |
| |
| /// ISO Channel handle mapping |
| #define BLE_CHANHDL_TO_ISOHDL(chanhdl) lli_chanhdl_to_isohdl(chanhdl) |
| #define BLE_ISOHDL_TO_CHANHDL(isohdl) ((isohdl > BLE_AM0HDL_MIN) \ |
| ? BLE_AM0HDL_TO_CHANHDL(isohdl) \ |
| : ((isohdl > BLE_BISHDL_MIN) \ |
| ? BLE_BISHDL_TO_CHANHDL(isohdl) \ |
| : BLE_CISHDL_TO_CHANHDL(isohdl))) |
| |
| |
| /// @} BLE stack configuration |
| /// @} ROOT |
| |
| #endif // RWBLE_CONFIG_H_ |