Files
stair56e_uart/component/ble/ip/ble/ll/api/rwble_config.h
T
2026-08-05 19:07:52 +08:00

563 lines
29 KiB
C

/**
****************************************************************************************
*
* @file rwble_config.h
*
* @brief Configuration of the BLE lower layer stack
*
* Copyright (C) RivieraWaves 2009-2019
*
****************************************************************************************
*/
#ifndef RWBLE_CONFIG_H_
#define RWBLE_CONFIG_H_
#include "rwip_config.h"
/**
****************************************************************************************
* @addtogroup ROOT
* @{
* @name BLE LL stack configuration
* @{
****************************************************************************************
*/
/******************************************************************************************/
/* -------------------------- FEATURE SETUP --------------------------------------*/
/******************************************************************************************/
#define BLE_FEATURES_BYTE0 ( (1 << BLE_FEAT_ENC ) \
| (1 << BLE_FEAT_CON_PARAM_REQ_PROC ) \
| (0 << BLE_FEAT_EXT_REJ_IND ) \
| (0 << BLE_FEAT_SLAVE_INIT_FEAT_EXCHG ) \
| (0 << BLE_FEAT_PING ) \
| (BLE_DL_UPD_PRESENT << BLE_FEAT_DATA_PKT_LEN_EXT ) \
| (0 << BLE_FEAT_LL_PRIVACY ) \
| (0 << BLE_FEAT_EXT_SCAN_FILT_POLICY ) )
/// Features byte 1
#define BLE_FEATURES_BYTE1 ( (0 << (BLE_FEAT_2M_PHY - 8) ) \
| (0 << (BLE_FEAT_STABLE_MOD_IDX_TX - 8) ) \
| (0 << (BLE_FEAT_STABLE_MOD_IDX_RX - 8) ) \
| (0 << (BLE_FEAT_CODED_PHY - 8) ) \
| (0 << (BLE_FEAT_EXT_ADV - 8) ) \
| (0 << (BLE_FEAT_PER_ADV - 8) ) \
| (1 << (BLE_FEAT_CHAN_SEL_ALGO_2 - 8) ) \
| (0 << (BLE_FEAT_PWR_CLASS_1 - 8) ) )
/// Features byte 2
#define BLE_FEATURES_BYTE2 ( (0 << (BLE_FEAT_MIN_NUM_USED_CHAN_PROC - 16) ) \
| (0 << (BLE_FEAT_CON_CTE_REQ - 16) ) \
| (0 << (BLE_FEAT_CON_CTE_RSP - 16) ) \
| (0 << (BLE_FEAT_CONLESS_CTE_TX - 16) ) \
| (0 << (BLE_FEAT_CONLESS_CTE_RX - 16) ) \
| (0 << (BLE_FEAT_AOD - 16) ) \
| (0 << (BLE_FEAT_AOA - 16) ) \
| (0 << (BLE_FEAT_CTE_RX - 16) ) )
/// Features byte 3
#define BLE_FEATURES_BYTE3 ( (0 << (BLE_FEAT_PER_ADV_SYNC_TRANSF_TX - 24) ) \
| (0 << (BLE_FEAT_PER_ADV_SYNC_TRANSF_RX - 24) ) \
| (0 << (BLE_FEAT_SLEEP_CLK_ACC_UPD - 24) ) \
| (0 << (BLE_FEAT_PUB_KEY_VALID - 24) ) \
| (0 << (BLE_FEAT_CON_ISO_STREAM_MASTER - 24) ) \
| (0 << (BLE_FEAT_CON_ISO_STREAM_SLAVE - 24) ) \
| (0 << (BLE_FEAT_ISO_BROADCASTER - 24) ) \
| (0 << (BLE_FEAT_SYNCED_RECEIVER - 24) ) )
/// Features byte 4
#define BLE_FEATURES_BYTE4 ( (0 << (BLE_FEAT_POWER_CONTROL_REQ - 32) ) ) \
| (0 << (BLE_FEAT_POWER_CHANGE_IND - 32) ) \
| (0 << (BLE_FEAT_PATH_LOSS_MONITORING - 32) )
/// 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 ( 1650*BLE_OBSERVER \
// + 2 * ( (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) \
// ) )
#define BLE_HEAP_MSG_SIZE ( 1650*BLE_OBSERVER \
+ 2 * ( (16 + ((CFG_CON+1)-1) * 56) \
+ (58 + ((CFG_CON+1)-1) * 26) \
+ ((CFG_CON+1) * 66) \
+ (HCI_NB_CMD_PKTS * 255) \
+ (BLE_OBSERVER * BLE_MAX_NB_ADV_REP_FRAG * 255 + (CFG_CON+1) * 100) \
+ ((CFG_CON+1) * 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)
#define BLE_HEAP_ENV_SIZE (330*BLE_CENTRAL + 270*BLE_OBSERVER + (CFG_CON+1) * 230)
/// Normal Rx window size (in us)
// #define BLE_NORMAL_WIN_SIZE 14
#define BLE_NORMAL_WIN_SIZE 30
/// 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)
#define BLE_WHITELIST_MAX (5)
/// 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)// This value cannot be changed.
/// RPAs for InitA and AdvA
/// Number of RX data buffers (common for all activities)
#define BLE_DATA_BUF_NB_RX (BLE_RX_DESC_NB + 2)
/// Size of RX data buffers (common for all activities) (the first 5 bytes are reserved for HCI header)
#define BLE_DATA_BUF_SIZE_RX (260)
/// Guard space reserved for HCI ACL header in BLE RX buffers
#define BLE_ACL_RX_BUF_HEADER_SPACE (HCI_ACL_HDR_LEN + 1)
/// Number of TX ACL data buffers
// #define BLE_ACL_BUF_NB_TX (BLE_ACTIVITY_MAX + 2)
#define BLE_ACL_BUF_NB_TX ((CFG_CON)+ 4 ) //This value can be dynamically configured.
/// Number of advertising data buffers
#define BLE_ADV_BUF_NB_TX ((BLE_ACTIVITY_MAX+1) / 2)
/// 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)
/// Maximum advertising data length
#define BLE_CFG_MAX_ADV_DATA_LEN (BLE_ADV_FRAG_NB_TX * BLE_ADV_FRAG_SIZE_TX)
/// Maximum number of Rx Descriptors that can be used during the reception of Auxiliary chained
/// advertising packet on Secondary advertising channels (0: no limit)
#define BLE_ADV_FRAG_NB_RX_MAX (7)
/// Define the AUX Frame Space duration
#if defined(CFG_AFS_EXT)
// Aux Frame Space extended for scanner Aux offload testing
#define BLE_AFS_DUR (3000) // 3.0ms
#else // !(CFG_DBG_AUX_OFFLOAD)
// Packed advertising - Minimum AUX Frame Space
#define BLE_AFS_DUR (BLE_MAFS_DUR)
#endif // (CFG_DBG_AUX_OFFLOAD)
/// 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)
/// Low energy event mask (should be the standard value if device is in controller-only)
#if ((BLE_EMB_PRESENT) && (!BLE_HOST_PRESENT))
#define BLE_EVT_MASK {0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#else // (!(BLE_EMB_PRESENT) || (BLE_HOST_PRESENT))
/// Low energy event mask (should be the custom mask if device is in full-stack)
#define BLE_EVT_MASK {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00}
#endif // ((BLE_EMB_PRESENT) && (!BLE_HOST_PRESENT))
/******************************************************************************************/
/* -------------------------- DEBUG SETUP ----------------------------------------*/
/******************************************************************************************/
#ifdef CFG_BLE_TEST_MODE
#define BLE_TEST_MODE_SUPPORT (1)// sean
#else
#define BLE_TEST_MODE_SUPPORT (0)// sean
#endif
/******************************************************************************************/
/* -------------------- CHANNEL ASSESSMENT SETUP --------------------------*/
/******************************************************************************************/
/// 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
/******************************************************************************************/
/* -------------------------- Direction finding (AoA/AoD) -------------------------*/
/******************************************************************************************/
/// Number of antennae used for constant tone extension transmission or reception
#define BLE_ANTENNA_NB 4
/// Maximum length of switching pattern
#define BLE_MAX_SW_PAT_LEN 12
/// Number of RX descriptors used for constant tone extension reception
#define BLE_RX_CTE_DESC_NB 3
/******************************************************************************************/
/* -------------------------- ISOoHCI -------------------------*/
/******************************************************************************************/
#if (BLE_ISOOHCI)
/// Number of HCI ISO Input buffers
#define BLE_HCI_ISO_IN_BUF_NB (5)
/// Size of HCI ISO Input buffers (in bytes)
#define BLE_HCI_ISO_IN_BUF_SIZE (400)
#endif // (BLE_ISOOHCI)
/******************************************************************************************/
/* ----------------------- 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_EN_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_V1_CMD | BLE_LE_TX_TEST_V1_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_DHKEY_V1_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_RX_TEST_V2_CMD )
//byte36
#define BLE_CMDS_BYTE36 ( BLE_LE_TX_TEST_V2_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 \
| BLE_LE_RX_TEST_V3_CMD \
| BLE_LE_TX_TEST_V3_CMD \
| BLE_LE_SET_CONLESS_CTE_TX_PARAM_CMD \
| BLE_LE_SET_CONLESS_CTE_TX_EN_CMD \
| BLE_LE_SET_CONLESS_IQ_SAMPL_EN_CMD )
//byte40
#define BLE_CMDS_BYTE40 ( BLE_LE_SET_CON_CTE_RX_PARAM_CMD \
| BLE_LE_SET_CON_CTE_TX_PARAM_CMD \
| BLE_LE_CON_CTE_REQ_EN_CMD \
| BLE_LE_CON_CTE_RSP_EN_CMD \
| BLE_LE_RD_ANTENNA_INF_CMD \
| BLE_LE_SET_PER_ADV_RX_EN_CMD \
| BLE_LE_PER_ADV_SYNC_TRANSF_CMD \
| BLE_LE_PER_ADV_SET_INFO_TRANSF_CMD )
//byte41
#define BLE_CMDS_BYTE41 ( BLE_LE_SET_PER_ADV_SYNC_TRANSF_PARAM_CMD \
| BLE_LE_SET_DFT_PER_ADV_SYNC_TRANSF_PARAM_CMD \
| BLE_LE_GEN_DHKEY_V2_CMD \
| BLE_LE_MOD_SLP_CLK_ACC_CMD \
| BLE_LE_RD_BUF_SIZE_V2_CMD \
| BLE_LE_RD_ISO_TX_SYNC_CMD \
| BLE_LE_SET_CIG_PARAMS_CMD )
//byte42
#define BLE_CMDS_BYTE42 ( BLE_LE_SET_CIG_PARAMS_TEST_CMD \
| BLE_LE_CREATE_CIS_CMD \
| BLE_LE_REMOVE_CIG_CMD \
| BLE_LE_ACCEPT_CIS_REQ_CMD \
| BLE_LE_REJECT_CIS_REQ_CMD \
| BLE_LE_CREATE_BIG_CMD \
| BLE_LE_CREATE_BIG_TEST_CMD \
| BLE_LE_TERMINATE_BIG_CMD )
//byte43
#define BLE_CMDS_BYTE43 ( BLE_LE_CREATE_BIG_SYNC_CMD \
| BLE_LE_BIG_TERMINATE_SYNC_CMD \
| BLE_LE_REQ_PEER_SCA_CMD \
| BLE_LE_SETUP_ISO_DATA_PATH_CMD \
| BLE_LE_REMOVE_ISO_DATA_PATH_CMD \
| BLE_LE_ISO_TX_TEST_CMD \
| BLE_LE_ISO_RX_TEST_CMD \
| BLE_LE_ISO_RD_TEST_COUNTERS_CMD )
//byte44
#define BLE_CMDS_BYTE44 ( BLE_LE_ISO_TEST_END_CMD \
| BLE_LE_SET_HOST_FEAT_CMD \
| BLE_LE_RD_ISO_LINK_QUALITY_CMD \
| BLE_LE_ENH_RD_TX_POWER_LEVEL_CMD \
| BLE_LE_RD_REMOTE_TX_POWER_CMD \
| BLE_LE_SET_PATH_LOSS_REPORTING_PARAMS_CMD \
| BLE_LE_SET_PATH_LOSS_REPORTING_ENABLE_CMD \
| BLE_LE_SET_TX_POWER_REPORTING_ENABLE_CMD )
//byte 45
#define BLE_CMDS_BYTE45 ( BLE_LE_TX_TEST_V4_CMD \
| BLE_LE_SET_ECO_BASE_INTERVAL_CMD \
| BLE_LE_RD_LOC_SUPP_CODECS_V2_CMD \
| BLE_LE_RD_LOC_SUPP_CODEC_CAP_CMD \
| BLE_LE_RD_LOC_SUPP_CTRL_DELAY_CMD \
| BLE_LE_CONFIG_DATA_PATH_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))
#define BLE_IS_CISHDL(conhdl) ((((conhdl) >= BLE_CISHDL_MIN) && ((conhdl) < BLE_BISHDL_MIN)) ? true : false)
/// 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))
#define BLE_IS_BISHDL(conhdl) ((((conhdl) >= BLE_BISHDL_MIN) && ((conhdl) < BLE_AM0HDL_MIN)) ? true : false)
/// 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))
#define BLE_IS_AM0HDL(conhdl) (((conhdl) >= BLE_AM0HDL_MIN) ? true : false)
/// 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_