/** ******************************************************************************* * @FileName : ll_api.h * @Author : GaoQiu * @CreateDate: 2020-02-18 * @Copyright : Copyright(C) GaoQiu * All Rights Reserved. ******************************************************************************* * * The information contained herein is confidential and proprietary property of * GaoQiu and is available under the terms of Commercial License Agreement * between GaoQiu and the licensee in separate contract or the terms described * here-in. * * This heading MUST NOT be removed from this file. * * Licensees are granted free, non-transferable use of the information in this * file under Mutual Non-Disclosure Agreement. NO WARRENTY of ANY KIND is provided. * ******************************************************************************* */ #ifndef LL_API_H_ #define LL_API_H_ #include "stack/ble_types.h" #include "stack/hci_defs.h" #include "stack/ble_config.h" #include "ll_defs.h" #include "utils/bd_addr.h" #include "utils/mdc.h" /*! Link Layer sub version number. */ #define LL_SUB_VERSION_NUM 1020 enum{ UNIT_0_625_MS = 625, /*!< Number of microseconds in 0.625 milliseconds. */ UNIT_1_25_MS = 1250, /*!< Number of microseconds in 1.25 milliseconds. */ UNIT_10_MS = 10000 /*!< Number of microseconds in 10 milliseconds. */ }; #define MSEC_TO_UNITS(TIME, RESOLUTION) (((TIME) * 1000) / (RESOLUTION)) /*! Link configuration type */ typedef struct{ /* Device Info */ uint8_t versNr; /*!< Bluetooth controller specification version. */ uint16_t compId; /*!< Company identifier. */ uint16_t subVersNr; /*!< Sub-Version number. */ /* Adv */ uint8_t wlNum; /*!< White-list size. */ uint8_t rlNum; /*!< Resolving-list size. */ uint8_t connCreateTo; /*!< Create connection timeout. 0: disable timeout timer, other: timeout time, unit:s */ /* extended Adv */ uint8_t numAdvSet; /*!< The max number of ADV set. */ uint16_t extAdvDataLen; /*!< ADV data length for adv set. */ uint16_t extScanRspDataLen; /*!< Scan response data length for adv set. */ uint8_t advMargin; /*!< unit:ms */ /* Connection */ uint8_t maxMst; /*!< Number of max master connection. */ uint8_t maxSlv; /*!< Number of max slave connection. */ uint8_t maxAclLen; /*!< Max ACL length. */ uint8_t numRxBufs; /*!< Number of Rx Buffer. */ uint8_t numTxBufs; /*!< Number of Tx Buffer. */ uint16_t localSCA; /*!< local sleep clock accuracy. Unit:ppm */ /* Schedule */ uint16_t mstMargin; /*!< Master connection margin. min:4ms. Unit: ms*/ uint8_t numMoreDat; /*!< Number of max more data. Range: 1-16. */ /* BB */ uint8_t sleepClockSrc; /*!< [Panchip] select sleep clock source. 0:32k RC, 1:32k XTL. */ uint16_t bbSetupTime; /*!< [Panchip] BB PHY setup time. Unit:us */ uint16_t llEncTime; /*!< [Panchip] BB CCM time. Unit:us */ /* Other */ uint8_t authPyldTimeoutEn; /* ANT */ uint8_t numMaxAnt; }LlCfg_t; extern const LlCfg_t *pLlConfig; /*! The following status values are used in the LL API. */ enum { LL_SUCCESS = 0x00, LL_ERR_CODE_UNKNOWN_HCI_CMD = 0x01, LL_ERR_CODE_UNKNOWN_CONN_ID = 0x02, LL_ERR_CODE_HW_FAILURE = 0x03, LL_ERR_CODE_PAGE_TIMEOUT = 0x04, LL_ERR_CODE_AUTH_FAILURE = 0x05, LL_ERR_CODE_PIN_KEY_MISSING = 0x06, LL_ERR_CODE_MEM_CAP_EXCEEDED = 0x07, LL_ERR_CODE_CONN_TIMEOUT = 0x08, LL_ERR_CODE_CONN_LIMIT_EXCEEDED = 0x09, LL_ERR_CODE_SYNCH_CONN_LIMIT_EXCEEDED = 0x0A, LL_ERR_CODE_ACL_CONN_ALREADY_EXISTS = 0x0B, LL_ERR_CODE_CMD_DISALLOWED = 0x0C, LL_ERR_CODE_CONN_REJ_LIMITED_RESOURCES = 0x0D, LL_ERR_CODE_CONN_REJECTED_SECURITY_REASONS = 0x0E, LL_ERR_CODE_CONN_REJECTED_UNACCEPTABLE_BDADDR = 0x0F, LL_ERR_CODE_CONN_ACCEPT_TIMEOUT_EXCEEDED = 0x10, LL_ERR_CODE_UNSUPPORTED_FEATURE_PARAM_VALUE = 0x11, LL_ERR_CODE_INVALID_HCI_CMD_PARAMS = 0x12, LL_ERR_CODE_REMOTE_USER_TERM_CONN = 0x13, LL_ERR_CODE_REMOTE_DEVICE_TERM_CONN_LOW_RESOURCES = 0x14, LL_ERR_CODE_REMOTE_DEVICE_TERM_CONN_POWER_OFF = 0x15, LL_ERR_CODE_CONN_TERM_BY_LOCAL_HOST = 0x16, LL_ERR_CODE_REPEATED_ATTEMPTS = 0x17, LL_ERR_CODE_PAIRING_NOT_ALLOWED = 0x18, LL_ERR_CODE_UNKNOWN_LMP_PDU = 0x19, LL_ERR_CODE_UNSUPPORTED_REMOTE_FEATURE = 0x1A, LL_ERR_CODE_SCO_OFFSET_REJ = 0x1B, LL_ERR_CODE_SCO_INTERVAL_REJ = 0x1C, LL_ERR_CODE_SCO_AIR_MODE_REJ = 0x1D, LL_ERR_CODE_INVALID_LMP_PARAMS = 0x1E, LL_ERR_CODE_UNSPECIFIED_ERROR = 0x1F, LL_ERR_CODE_UNSUPPORTED_LMP_PARAM_VAL = 0x20, LL_ERR_CODE_ROLE_CHANGE_NOT_ALLOWED = 0x21, LL_ERR_CODE_LMP_LL_RESP_TIMEOUT = 0x22, LL_ERR_CODE_LMP_ERR_TRANSACTION_COLLISION = 0x23, LL_ERR_CODE_LMP_PDU_NOT_ALLOWED = 0x24, LL_ERR_CODE_ENCRYPT_MODE_NOT_ACCEPTABLE = 0x25, LL_ERR_CODE_LINK_KEY_CAN_NOT_BE_CHANGED = 0x26, LL_ERR_CODE_REQ_QOS_NOT_SUPPORTED = 0x27, LL_ERR_CODE_INSTANT_PASSED = 0x28, LL_ERR_CODE_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = 0x29, LL_ERR_CODE_DIFFERENT_TRANSACTION_COLLISION = 0x2A, LL_ERR_CODE_RESERVED1 = 0x2B, LL_ERR_CODE_QOS_UNACCEPTABLE_PARAM = 0x2C, LL_ERR_CODE_QOS_REJ = 0x2D, LL_ERR_CODE_CHAN_ASSESSMENT_NOT_SUPPORTED = 0x2E, LL_ERR_CODE_INSUFFICIENT_SECURITY = 0x2F, LL_ERR_CODE_PARAM_OUT_OF_MANDATORY_RANGE = 0x30, LL_ERR_CODE_RESERVED2 = 0x31, LL_ERR_CODE_ROLE_SWITCH_PENDING = 0x32, LL_ERR_CODE_RESERVED3 = 0x33, LL_ERR_CODE_RESERVED_SLOT_VIOLATION = 0x34, LL_ERR_CODE_ROLE_SWITCH_FAILED = 0x35, LL_ERR_CODE_EXTENDED_INQUIRY_RESP_TOO_LARGE = 0x36, LL_ERR_CODE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST = 0x37, LL_ERR_CODE_HOST_BUSY_PAIRING = 0x38, LL_ERR_CODE_CONN_REJ_NO_SUITABLE_CHAN_FOUND = 0x39, LL_ERR_CODE_CONTROLLER_BUSY = 0x3A, LL_ERR_CODE_UNACCEPTABLE_CONN_INTERVAL = 0x3B, LL_ERR_CODE_ADV_TIMEOUT = 0x3C, LL_ERR_CODE_CONN_TERM_MIC_FAILURE = 0x3D, LL_ERR_CODE_CONN_FAILED_TO_ESTABLISH = 0x3E, LL_ERR_CODE_MAC_CONN_FAILED = 0x3F, LL_ERR_CODE_COARSE_CLK_ADJ_REJ = 0x40, LL_ERR_CODE_TYPE0_SUBMAP_NOT_DEF = 0x41, LL_ERR_CODE_UNKNOWN_ADV_ID = 0x42, LL_ERR_CODE_LIMIT_REACHED = 0x43, LL_ERR_CODE_OP_CANCELLED_BY_HOST = 0x44, LL_ERR_CODE_PKT_TOO_LONG = 0x45, LL_ERR_CODE_MAX }; /*! The supported state bitmask indicates the LE states supported by the LL. */ #define LL_SUP_STATE_NON_CONN_ADV (UINT64(1) << 0) /*!< Non-connectable Advertising State supported. */ #define LL_SUP_STATE_SCAN_ADV (UINT64(1) << 1) /*!< Scannable Advertising State supported. */ #define LL_SUP_STATE_CONN_ADV (UINT64(1) << 2) /*!< Connectable Advertising State supported. */ #define LL_SUP_STATE_HI_DUTY_DIR_ADV (UINT64(1) << 3) /*!< High Duty Cycle Directed Advertising State supported. */ #define LL_SUP_STATE_PASS_SCAN (UINT64(1) << 4) /*!< Passive Scanning State supported. */ #define LL_SUP_STATE_ACT_SCAN (UINT64(1) << 5) /*!< Active Scanning State supported. */ #define LL_SUP_STATE_INIT (UINT64(1) << 6) /*!< Initiating State supported. Connection State in the Master Role supported is also supported. */ #define LL_SUP_STATE_CONN_SLV (UINT64(1) << 7) /*!< Connection State in the Slave Role supported. */ #define LL_SUP_STATE_NON_CONN_ADV_AND_PASS_SCAN (UINT64(1) << 8) /*!< Non-connectable Advertising State and Passive Scanning State combination supported. */ #define LL_SUP_STATE_SCAN_ADV_AND_PASS_SCAN (UINT64(1) << 9) /*!< Scannable Advertising State and Passive Scanning State combination supported. */ #define LL_SUP_STATE_CONN_ADV_AND_PASS_SCAN (UINT64(1) << 10) /*!< Connectable Advertising State and Passive Scanning State combination supported. */ #define LL_SUP_STATE_HI_DUTY_DIR_ADV_AND_PASS_SCAN (UINT64(1) << 11) /*!< Directed Advertising State and Passive Scanning State combination supported. */ #define LL_SUP_STATE_NON_CONN_ADV_AND_ACT_SCAN (UINT64(1) << 12) /*!< Non-connectable Advertising State and Active Scanning State combination supported. */ #define LL_SUP_STATE_SCAN_ADV_AND_ACT_SCAN (UINT64(1) << 13) /*!< Scannable Advertising State and Active Scanning State combination supported. */ #define LL_SUP_STATE_CONN_ADV_AND_ACT_SCAN (UINT64(1) << 14) /*!< Connectable Advertising State and Active Scanning State combination supported. */ #define LL_SUP_STATE_HI_DUTY_DIR_ADV_ACT_SCAN (UINT64(1) << 15) /*!< Directed Advertising State and Active Scanning State combination supported. */ #define LL_SUP_STATE_NON_CONN_ADV_AND_INIT (UINT64(1) << 16) /*!< Non-connectable Advertising State and Initiating State combination supported. */ #define LL_SUP_STATE_SCAN_ADV_AND_INIT (UINT64(1) << 17) /*!< Scannable Advertising State and Initiating State combination supported */ #define LL_SUP_STATE_NON_CONN_ADV_MST (UINT64(1) << 18) /*!< Non-connectable Advertising State and Master Role combination supported. */ #define LL_SUP_STATE_SCAN_ADV_MST (UINT64(1) << 19) /*!< Scannable Advertising State and Master Role combination supported. */ #define LL_SUP_STATE_NON_CONN_ADV_SLV (UINT64(1) << 20) /*!< Non-connectable Advertising State and Slave Role combination supported. */ #define LL_SUP_STATE_SCAN_ADV_SLV (UINT64(1) << 21) /*!< Scannable Advertising State and Slave Role combination supported. */ #define LL_SUP_STATE_PASS_SCAN_AND_INIT (UINT64(1) << 22) /*!< Passive Scanning State and Initiating State combination supported. */ #define LL_SUP_STATE_ACT_SCAN_AND_INIT (UINT64(1) << 23) /*!< Active Scanning State and Initiating State combination supported. */ #define LL_SUP_STATE_PASS_SCAN_MST (UINT64(1) << 24) /*!< Passive Scanning State and Master Role combination supported. */ #define LL_SUP_STATE_ACT_SCAN_MST (UINT64(1) << 25) /*!< Active Scanning State and Master Role combination supported. */ #define LL_SUP_STATE_PASS_SCAN_SLV (UINT64(1) << 26) /*!< Passive Scanning state and Slave Role combination supported. */ #define LL_SUP_STATE_ACT_SCAN_SLV (UINT64(1) << 27) /*!< Active Scanning state and Slave Role combination supported. */ #define LL_SUP_STATE_INIT_MST (UINT64(1) << 28) /*!< Initiating State and Master Role combination supported. Master Role and Master Role combination is also supported. */ #define LL_SUP_STATE_LO_DUTY_DIR_ADV (UINT64(1) << 29) /*!< Low Duty Cycle Directed Advertising State. */ #define LL_SUP_STATE_LO_DUTY_DIR_ADV_AND_PASS_SCAN (UINT64(1) << 30) /*!< Low Duty Cycle Directed Advertising and Passive Scanning State combination supported. */ #define LL_SUP_STATE_LO_DUTY_DIR_ADV_AND_ACT_SCAN (UINT64(1) << 31) /*!< Low Duty Cycle Directed Advertising and Active Scanning State combination supported. */ #define LL_SUP_STATE_CONN_ADV_AND_INIT (UINT64(1) << 32) /*!< Connectable Advertising State and Initiating State combination supported. */ #define LL_SUP_STATE_HI_DUTY_DIR_ADV_AND_INIT (UINT64(1) << 33) /*!< High Duty Cycle Directed Advertising and Initiating combination supported. */ #define LL_SUP_STATE_LO_DUTY_DIR_ADV_AND_INIT (UINT64(1) << 34) /*!< Low Duty Cycle Directed Advertising and Initiating combination supported. */ #define LL_SUP_STATE_CONN_ADV_MST (UINT64(1) << 35) /*!< Connectable Advertising State and Master Role combination supported. */ #define LL_SUP_STATE_HI_DUTY_DIR_ADV_MST (UINT64(1) << 36) /*!< High Duty Cycle Directed Advertising and Master Role combination supported. */ #define LL_SUP_STATE_LO_DUTY_DIR_ADV_MST (UINT64(1) << 37) /*!< Low Duty Cycle Directed Advertising and Master Role combination supported. */ #define LL_SUP_STATE_CONN_ADV_SLV (UINT64(1) << 38) /*!< Connectable Advertising State and Slave Role combination supported. */ #define LL_SUP_STATE_HI_DUTY_DIR_ADV_SLV (UINT64(1) << 39) /*!< High Duty Cycle Directed Advertising and Slave Role combination supported. */ #define LL_SUP_STATE_LO_DUTY_DIR_ADV_SLV (UINT64(1) << 40) /*!< Low Duty Cycle Directed Advertising and Slave Role combination supported. */ #define LL_SUP_STATE_INIT_SLV (UINT64(1) << 41) /*!< Initiating State and Slave Role combination. */ /*! Link layer feature define */ /* --- Core Spec 4.0 --- */ #define LL_FEAT_ENCRYPTION (UINT64(1) << 0) /*!< Encryption supported. */ /* --- Core Spec 4.2 --- */ #define LL_FEAT_CONN_PARAM_REQ_PROC (UINT64(1) << 1) /*!< Connection Parameters Request Procedure supported. */ #define LL_FEAT_EXT_REJECT_IND (UINT64(1) << 2) /*!< Extended Reject Indication supported. */ #define LL_FEAT_SLV_INIT_FEAT_EXCH (UINT64(1) << 3) /*!< Slave-Initiated Features Exchange supported. */ #define LL_FEAT_LE_PING (UINT64(1) << 4) /*!< LE Ping supported. */ #define LL_FEAT_DATA_LEN_EXT (UINT64(1) << 5) /*!< Data Length Extension supported. */ #define LL_FEAT_PRIVACY (UINT64(1) << 6) /*!< LL Privacy supported. */ #define LL_FEAT_EXT_SCAN_FILT_POLICY (UINT64(1) << 7) /*!< Extended Scan Filter Policy supported. */ /* --- Core Spec 5.0 --- */ #define LL_FEAT_LE_2M_PHY (UINT64(1) << 8) /*!< LE 2M PHY supported. */ #define LL_FEAT_STABLE_MOD_IDX_TRANSMITTER (UINT64(1) << 9) /*!< Stable Modulation Index - Transmitter supported. */ #define LL_FEAT_STABLE_MOD_IDX_RECEIVER (UINT64(1) << 10) /*!< Stable Modulation Index - Receiver supported. */ #define LL_FEAT_LE_CODED_PHY (UINT64(1) << 11) /*!< LE Coded PHY supported. */ #define LL_FEAT_LE_EXT_ADV (UINT64(1) << 12) /*!< LE Extended Advertising supported. */ #define LL_FEAT_LE_PER_ADV (UINT64(1) << 13) /*!< LE Periodic Advertising supported. */ #define LL_FEAT_CH_SEL_2 (UINT64(1) << 14) /*!< Channel Selection Algorithm #2 supported. */ #define LL_FEAT_LE_POWER_CLASS_1 (UINT64(1) << 15) /*!< LE Power Class 1 supported. */ #define LL_FEAT_MIN_NUM_USED_CHAN (UINT64(1) << 16) /*!< Minimum Number of Used Channels supported. */ #define LL_FEAT_ALL_MASK UINT64(0x00000000FF01FFFF) /*!< All feature mask, need to be updated when new features are added. */ /*! Link Role */ #define LL_ROLE_MASTER 0 /*!< Role is master. */ #define LL_ROLE_SLAVE 1 /*!< Role is slave. */ /*! The advertising type indicates the connectable and discoverable nature of the advertising packets transmitted by a device. */ #define LL_ADV_CONN_UNDIRECT 0 /*!< Connectable undirected advertising. Peer devices can scan and connect to this device. */ #define LL_ADV_CONN_DIRECT_HIGH_DUTY 1 /*!< Connectable directed advertising, high duty cycle. Only a specified peer device can connect to this device. */ #define LL_ADV_SCAN_UNDIRECT 2 /*!< Scannable undirected advertising. Peer devices can scan this device but cannot connect. */ #define LL_ADV_NONCONN_UNDIRECT 3 /*!< Non-connectable undirected advertising. Peer devices cannot scan or connect to this device. */ #define LL_ADV_CONN_DIRECT_LOW_DUTY 4 /*!< Connectable directed advertising, low duty cycle. Only a specified peer device can connect to this device. */ #define IS_STATIC_RANDOM_ADDR(addr) ( ((addr)[5] & 0xC0) == 0xC0 ) #define IS_RESOLVABLE_PRIVATE_ADDR(addr) ( ((addr)[5] & 0xC0) == 0x40 ) #define IS_NON_RESOLVABLE_PRIVATE_ADDR(addr) ( ((addr)[5] & 0xC0) == 0x00 ) /*! The advertising event property */ #define LL_ADV_PROP_CONN_ADV_BIT ((uint16_t)(1 << 0)) #define LL_ADV_PROP_SCAN_ADV_BIT ((uint16_t)(1 << 1)) #define LL_ADV_PROP_DIRECT_ADV_BIT ((uint16_t)(1 << 2)) #define LL_ADV_PROP_HIGH_DUTY_ADV_BIT ((uint16_t)(1 << 3)) #define LL_ADV_PROP_LEGACY_ADV_BIT ((uint16_t)(1 << 4)) #define LL_ADV_PROP_OMIT_AA_BIT ((uint16_t)(1 << 5)) #define LL_ADV_PROP_TX_PWR_EN_BIT ((uint16_t)(1 << 6)) #define LL_ADV_PROP_CONN_SCAN_ADV (LL_ADV_PROP_CONN_ADV_BIT | LL_ADV_PROP_SCAN_ADV_BIT) /*!< only legacy mode. */ #define LL_ADV_PROP_CONN_NON_SCAN_ADV LL_ADV_PROP_CONN_ADV_BIT /*!< Only extend mode. */ #define LL_ADV_PROP_CONN_NON_SCAN_DIRECT_ADV (LL_ADV_PROP_CONN_ADV_BIT | LL_ADV_PROP_DIRECT_ADV_BIT) /*!< Low duty. */ #define LL_ADV_PROP_CONN_NON_SCAN_DIRECT_HIGH_DUTY_ADV (LL_ADV_PROP_HIGH_DUTY_ADV_BIT | LL_ADV_PROP_CONN_ADV_BIT | LL_ADV_PROP_DIRECT_ADV_BIT) /*!< high duty. */ #define LL_ADV_PROP_SCAN_NON_CONN_ADV LL_ADV_PROP_SCAN_ADV_BIT #define LL_ADV_PROP_NON_CONN_NON_SCAN_ADV 0 /*!< Non-connectable and non-scannable advertising. */ /*! ADV Mode */ #define LL_ADV_MODE_NON_CONN_NON_SCAN 0x00 #define LL_ADV_MODE_CONN_NON_SCAN 0x01 #define LL_ADV_MODE_SCAN_NON_CONN 0x02 /*! Advertising data operation. */ enum { LL_ADV_DATA_OP_FRAG_INTER = 0, /*!< Intermediate fragment. */ LL_ADV_DATA_OP_FRAG_FIRST = 1, /*!< First fragment. */ LL_ADV_DATA_OP_FRAG_LAST = 2, /*!< Last fragment. */ LL_ADV_DATA_OP_COMP = 3, /*!< Complete extended advertising data. */ LL_ADV_DATA_OP_UNCHANGED = 4 /*!< Unchanged data (just update the Advertising DID). */ }; /*! Advertising data fragment preference. */ enum { LL_ADV_DATA_FRAG_ALLOW = 0, /*!< Controller may fragment all Host advertising data. */ LL_ADV_DATA_FRAG_DISALLOW = 1 /*!< Controller should not fragment nor minimize fragmentation of Host advertising data. */ }; /*! The address type indicates whether an address is public or random. */ #define LL_ADDR_PUBLIC 0 /*!< Public address. */ #define LL_ADDR_RANDOM 1 /*!< Random address. */ #define LL_ADDR_PUBLIC_IDENTITY 2 /*!< Public identity address. */ #define LL_ADDR_RANDOM_IDENTITY 3 /*!< Random (static) identity address. */ #define LL_ADDR_RANDOM_UNRESOLVABLE 0xFE /*!< Un-resolvable random address. */ #define LL_ADDR_ANONYMOUS 0xFF /*!< Anonymous advertiser. */ /*! Advertising channel bit. */ #define LL_ADV_CHAN_37_BIT (1 << 0) /*!< Advertising channel 37. */ #define LL_ADV_CHAN_38_BIT (1 << 1) /*!< Advertising channel 38. */ #define LL_ADV_CHAN_39_BIT (1 << 2) /*!< Advertising channel 39. */ #define LL_ADV_CHAN_ALL 0x7 /*!< All advertising channels. */ /*! ADV Filter Policy type */ #define LL_ADV_FILTER_NONE 0x00 #define LL_ADV_FILTER_ONLY_SCAN_REQ 0x01 #define LL_ADV_FILTER_ONLY_CONN_REQ 0x02 #define LL_ADV_FILTER_SCAN_AND_CONN_REQ 0x03 /*! Initiator filter policy. */ #define LL_INIT_FILTER_PEER 0 /*!< Filter to only Peer addr and addr type. */ #define LL_INIT_FILTER_WL 1 /*!< Filter to only whitelist. */ /*! Scan type. */ #define LL_PASSIVE_SCAN 0 #define LL_ACTIVE_SCAN 1 /*! Scan filter policy. */ #define LL_SCAN_FILTER_NONE 0 /*!< Accept all advertising packets. */ #define LL_SCAN_FILTER_WL_BIT 1 /*!< Accept from While List only. */ #define LL_SCAN_FILTER_RES_INIT_BIT 2 /*!< Accept directed advertisements with RPAs. */ #define LL_SCAN_FILTER_WL_OR_RES_INIT 3 /*!< Accept from White List or directed advertisements with RPAs. */ /*! Master SCA(Sleep Clock Accuracy). */ #define LL_MST_SCA_251_TO_500_PPM 0 /*