pinebuds/services/bt_profiles_enhanced/inc/bt_sys_cfg.h
2022-08-15 17:20:27 +08:00

413 lines
17 KiB
C

/***************************************************************************
*
* Copyright 2015-2019 BES.
* All rights reserved. All unpublished rights reserved.
*
* No part of this work may be used or reproduced in any form or by any
* means, or stored in a database or retrieval system, without prior written
* permission of BES.
*
* Use of this work is governed by a license granted by BES.
* This work contains confidential and proprietary information of
* BES. which is protected by copyright, trade secret,
* trademark and other intellectual property rights.
*
****************************************************************************/
#ifndef __BT_SYS_CFG_H__
#define __BT_SYS_CFG_H__
#include "cobt.h"
/* for debug usage */
#if !defined(DEBUG)
#define DEBUG 0
#endif
#define ESCO_ENABLE 1
#define ADS_IDE 0
#define BA_GCC 1
#if DEBUG == 1
#define DBG_DEBUG_PRINT_ENABLE 1
#define DBG_COBUF_NEED_STATISTIC 1
#else /*must NOT change the following macro*/
#define DBG_DEBUG_PRINT_ENABLE 0
#define DBG_COBUF_NEED_STATISTIC 0
#endif
#define DBG_PPBUFF_NEED_STATISTIC 1
/* config memory block size and count */
#define COBUF_SIZE_N1 8
#define COBUF_SIZE_N2 16
#define COBUF_SIZE_N3 32
#define COBUF_SIZE_N4 64
#define COBUF_SIZE_N5 128
#define COBUF_SIZE_N6 ((L2CAP_DEFAULT_MTU+3)/4*4)
#if defined(CHIP_BEST1402) || defined(CHIP_BEST1400)
#define COBUF_NUMS_N1 32
#define COBUF_NUMS_N2 45
#define COBUF_NUMS_N3 39
#define COBUF_NUMS_N4 20
#define COBUF_NUMS_N5 10
#define COBUF_NUMS_N6 6
#else
#define COBUF_NUMS_N1 64
#define COBUF_NUMS_N2 90
#define COBUF_NUMS_N3 78
#define COBUF_NUMS_N4 40
#define COBUF_NUMS_N5 20
#define COBUF_NUMS_N6 18
#endif
/* SCO */
#ifdef CVSD_BYPASS
#define BTM_SYNC_CONN_AUDIO_SETTING_DEFAULT 0x0040
#else
#define BTM_SYNC_CONN_AUDIO_SETTING_DEFAULT 0x0060
#endif
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_CODING_LINEAR 0x0000 /* Linear */
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_CODING_ULAW 0x0100 /* u-law */
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_CODING_ALAW 0x0200 /* a-law */
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_DATA_ONES 0x0000 /* 1's complement */
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_DATA_TWOS 0x0040 /* 2's complement */
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_DATA_SM 0x0080 /* Sign-Magnitude */
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_SAMPLE_8BIT 0x0000 /* 8 bit */
#define BTM_SYNC_CONN_AUDIO_SETTING_IN_SAMPLE_16BIT 0x0020 /* 16 bit */
#define BTM_SYNC_CONN_AUDIO_SETTING_CVSD 0x0000 /* CVSD */
#define BTM_SYNC_CONN_AUDIO_SETTING_ULAW 0x0001 /* u-LAW */
#define BTM_SYNC_CONN_AUDIO_SETTING_ALAW 0x0002 /* A-LAW */
#define BTM_SYNC_CONN_AUDIO_SETTING_TRANSPNT 0x0003 /* msbc */
#define BTM_SYNC_CONN_AUDIO_SETTING_MSBC 0x0060
#define BTM_SYNC_CONN_AUDIO_PARAM_SCO 1
#define BTM_SYNC_CONN_AUDIO_PARAM_S1 2
#define BTM_SYNC_CONN_AUDIO_PARAM_S2 3
#define BTM_SYNC_CONN_AUDIO_PARAM_S3 4
#define BTM_SYNC_CONN_AUDIO_PARAM_S4 5
#define BTM_SYNC_CONN_AUDIO_PARAM_CUSTOM 6
#define BTM_SYNC_CONN_AUDIO_PARAM_T1 7
#define BTM_SYNC_CONN_AUDIO_PARAM_T2 8
#define BTM_SYNC_CONN_AUDIO_DEFAULT_PARMS BTM_SYNC_CONN_AUDIO_PARAM_S4
/* HFP */
#define HFP_CMD_FLOW_CONTROL_ENABLE 1
#define HFP_CMD_SYST_TX_TIMEOUT_VAL_MS 3000
#define HFP_HF_CHANNEL 7
#define HFP_HF_FEAT_ECNR 0x00000001
#define HFP_HF_FEAT_3WAY 0x00000002
#define HFP_HF_FEAT_CLI 0x00000004
#define HFP_HF_FEAT_VR 0x00000008
#define HFP_HF_FEAT_RVC 0x00000010
#define HFP_HF_FEAT_ECS 0x00000020
#define HFP_HF_FEAT_ECC 0x00000040
#define HFP_HF_FEAT_CODEC 0x00000080
#define HFP_HF_FEAT_HF_IND 0x00000100
#define HFP_HF_FEAT_ESCO_S4_T2 0x00000200
#define HFP_HF_SDP_FEAT_MASK 0x001f
#define HFP_HF_SDP_FEAT_WBS 0x0020
#define HFP_AG_FEAT_3WAY 0x00000001
#define HFP_AG_FEAT_ECNR 0x00000002
#define HFP_AG_FEAT_VR 0x00000004
#define HFP_AG_FEAT_INBAND 0x00000008
#define HFP_AG_FEAT_VTAG 0x00000010
#define HFP_AG_FEAT_REJ_CALL 0x00000020
#define HFP_AG_FEAT_ECS 0x00000040
#define HFP_AG_FEAT_ECC 0x00000080
#define HFP_AG_FEAT_EXT_ERR 0x00000100
#define HFP_AG_FEAT_CODEC 0x00000200
#define HFP_AG_FEAT_HF_IND 0x00000400
#define HFP_AG_FEAT_ESCO_S4_T2 0x00000800
#define HFP_AG_SDP_FEAT_MASK 0x001f
#define HFP_AG_SDP_FEAT_WBS 0x0020
#if defined(HFP_1_6_ENABLE)
#define HFP_HF_FEATURES ( \
HFP_HF_FEAT_CLI | \
HFP_HF_FEAT_RVC | \
HFP_HF_FEAT_ECS | \
HFP_HF_FEAT_ECC | \
HFP_HF_FEAT_CODEC | \
HFP_HF_FEAT_ECNR | \
HFP_HF_FEAT_3WAY | \
HFP_HF_FEAT_VR | \
HFP_HF_FEAT_ESCO_S4_T2 \
)
#define HFP_HF_SDP_FEATURES ((HFP_HF_FEATURES & HFP_HF_SDP_FEAT_MASK) | HFP_HF_SDP_FEAT_WBS)
#define HFP_AG_FEATURES ( \
HFP_AG_FEAT_3WAY | \
HFP_AG_FEAT_ECNR | \
HFP_AG_FEAT_REJ_CALL | \
HFP_AG_FEAT_ECS | \
HFP_AG_FEAT_ECC | \
HFP_AG_FEAT_CODEC | \
HFP_AG_FEAT_ESCO_S4_T2 \
)
#define HFP_AG_SDP_FEATURES ((HFP_AG_FEATURES & HFP_AG_SDP_FEAT_MASK) | HFP_AG_SDP_FEAT_WBS)
#else
#define HFP_HF_FEATURES ( \
HFP_HF_FEAT_CLI | \
HFP_HF_FEAT_RVC | \
HFP_HF_FEAT_ECS | \
HFP_HF_FEAT_ECC \
)
#define HFP_HF_SDP_FEATURES (HFP_HF_FEATURES & HFP_HF_SDP_FEAT_MASK)
#define HFP_AG_FEATURES ( \
HFP_AG_FEAT_REJ_CALL | \
HFP_AG_FEAT_ECS | \
HFP_AG_FEAT_ECC | \
)
#define HFP_AG_SDP_FEATURES ((HFP_AG_FEATURES & HFP_AG_SDP_FEAT_MASK) | HFP_AG_SDP_FEAT_WBS)
#endif
/* btm */
/*
btm upper layers (l2cap,profiles) use ppb to pass incoming data.
we cannot change all usage now.
it is a bad idea for alloc ppb (only one time used in callback) for incoming data.
so to setup a fix buffer to alloc ppb inplace to avoid alloc ppb dynamicly failure.
*/
#define HCIBUFF_STATISTIC_ENABLE 1
#define CFG_BTM_USE_INPLACE_BUFFER_FOR_ACL 1
#define CFG_BTM_DISC_ACL_IN_BTM_TIMER 0
#define CFG_BTM_DROP_TX_ACL_WHEN_DISCONNECT_PENDING 1 // meaningless when CFG_BTM_DISC_ACL_IN_BTM_TIMER=1
#define MAX_SDP_SOCK_NUMBER 2
#define NUM_BT_DEVICES 2
#define NUM_SCO_CONNS 2
#define NUM_BLE_DEVICES 2
#define CFG_VOICE_SETTING_DEFAULT 0x0043
#if defined(__3M_PACK__)
#define CFG_HCI_ACL_DATA_SIZE 1040
#else
#define CFG_HCI_ACL_DATA_SIZE 800
#endif
#define CFG_HCI_EVT_DATA_SIZE 300
#define CFG_HCI_SCO_DATA_SIZE 180
#define CFG_HCI_NUM_ACL_BUFFERS 6
#define CFG_HCI_NUM_SCO_BUFFERS 6
#define BTM_DEVICEDB_SIZE 6
#define BTM_PINCODE_MAX_LEN 8 /*include '\0'*/
#define BTM_NAME_MAX_LEN 248 /*include '\0'*/
#define BTM_CFG_TIMEOUT_BEFORE_LOWPOWER 5
#define BTM_INQUIRY_RESULT_UNUSED_TIMEOUT 30 /*seconds, decide the time out to destory an inquiry result structure*/
#define BTM_DISCONN_WAITING_TIME 1 /* changed by marvin.zhu. seconds, decide the timeout be disconnect an acl link after it is not used by l2cap*/
#define BTM_HCI_HOST_FLOW_CONTROL_ENABLE (1)
#define BTM_BLE_USE_INTERNAL_QUEUE_CACHE_ENABLE (1) /* if 1, for ble acl data, stack will use a internal queue to cache ble data, hci buff will be release imm */
#define BTM_FC_BLE_TX_USE_BT_BUFFER_FORCE (0)
#define BTM_FC_HOST_TO_CONTROLLER_RESV_ACL_BUF_NUM (1)
#define BTM_FC_HOST_TO_CONTROLLER_CMD_BUF_NUM (24)
#define BTM_FC_HOST_TO_CONTROLLER_ACL_BUF_NUM (10) /* this value will be overide by read buffer size command reaponse, tx queue will be this value */
#define BTM_FC_CONTROLLER_TO_HOST_ACL_BUF_NUM (CFG_HCI_NUM_ACL_BUFFERS)
#if BTM_BLE_USE_INTERNAL_QUEUE_CACHE_ENABLE==1
#define BTM_BLE_INTERNAL_QUEUE_BUF_NUM (BTM_FC_CONTROLLER_TO_HOST_ACL_BUF_NUM)
#endif
#if BTM_BLE_USE_INTERNAL_QUEUE_CACHE_ENABLE==1
#if (BTM_BLE_INTERNAL_QUEUE_BUF_NUM<BTM_FC_CONTROLLER_TO_HOST_ACL_BUF_NUM)
#error "BTM_BLE_INTERNAL_QUEUE_BUF_NUM should >= BTM_FC_CONTROLLER_TO_HOST_ACL_BUF_NUM"
#endif
#endif
#define BTM_FC_CONTROLLER_TO_HOST_EVT_BUF_NUM (25)
#define BTM_FC_HOST_TO_CONTROLLER_SCO_BUF_NUM (6)
#define BTM_FC_CONTROLLER_TO_HOST_SCO_BUF_NUM (6)
#define BTM_CFG_CON_ACL_MAX (7)
/* audio connection config */
#define HCI_CFG_SYNC_TX_BANDWIDTH 0x00001F40
#define HCI_CFG_SYNC_RX_BANDWIDTH 0x00001F40
#define HCI_CFG_SYNC_MAX_LATENCY 0xffff
#define HCI_CFG_SYNC_RETX_EFFORT 0x2
//#define HCI_CFG_SYNC_PKT_TYPE HCI_PKT_TYPE_HV3
#if ESCO_ENABLE
#define HCI_CFG_SYNC_SCO_PKTS (PACKET_TYPE_HV1 | PACKET_TYPE_HV2 | PACKET_TYPE_HV3)
#define HCI_CFG_SYNC_PKT_TYPE (PACKET_TYPE_HV1 | PACKET_TYPE_HV2 | PACKET_TYPE_HV3 | PACKET_TYPE_EV3)
#else
#define HCI_CFG_SYNC_PKT_TYPE (PACKET_TYPE_HV1_FLAG | PACKET_TYPE_HV2_FLAG | PACKET_TYPE_HV3_FLAG)
#endif
#define HCI_CFG_INPUT_CODING INPUT_CODING_LINEAR
#define HCI_CFG_INPUT_DATA_FORMAT INPUT_DATA_FORMAT_1S
#define HCI_CFG_INPUT_SAMPLE_SIZE INPUT_SAMPLE_SIZE_8BITS
#if defined(HFP_1_6_ENABLE)
#define HCI_CFG_AIR_CODING_FORMAT AIR_CODING_FORMAT_MSBC
#else
#define HCI_CFG_AIR_CODING_FORMAT AIR_CODING_FORMAT_CVSD
#endif
#define HCI_CFG_LINEAR_PCM_BITPOS 0x00
#define HCI_CFG_VOICE_SETTING (HCI_CFG_INPUT_CODING& \
HCI_CFG_INPUT_DATA_FORMAT& \
HCI_CFG_INPUT_SAMPLE_SIZE& \
HCI_CFG_AIR_CODING_FORMAT& \
(HCI_CFG_LINEAR_PCM_BITPOS<<2))
#define HCI_CFG_SNIFF_MAX_INTERVAL 0x0320
#define HCI_CFG_SNIFF_MIN_INTERVAL 0x0300
#define HCI_CFG_SNIFF_ATTEMPT 0x08
#define HCI_CFG_SNIFF_TIMEOUT 0x00
#define HCI_CFG_LINK_POLICY_LOWPOWER HCI_LP_ENABLE_ROLE_SWITCH_MASK \
|HCI_LP_ENABLE_SNIFF_MODE_MASK
/* 10*1.28 seconds */
#define HCI_CFG_INQUIRY_TIMEOUT 10
/* unlimited */
#define HCI_CFG_INQUIRY_RESPONSE_NUM 0
#define CFG_DEFAULT_PAGE_TIMEOUT 0x2000
#define CFG_COD_LIMITED_DISCOVERABLE_MODE 0x00002000
#define CFG_COD_POSITIONING 0x00010000
#define CFG_COD_NETWORKING 0x00020000
#define CFG_COD_RENDERING 0x00040000
#define CFG_COD_CAPTURING 0x00080000
#define CFG_COD_OBJECT_TRANSFER 0x00100000
#define CFG_COD_AUDIO 0x00200000
#define CFG_COD_TELEPHONY 0x00400000
#define CFG_COD_INFORMATION 0x00800000
#define CFG_COD_MAJOR_MISCELLANEOUS 0x00000000
#define CFG_COD_MAJOR_COMPUTER 0x00000100
#define CFG_COD_MAJOR_PHONE 0x00000200
#define CFG_COD_MAJOR_LAN_ACCESS_POINT 0x00000300
#define CFG_COD_MAJOR_AUDIO 0x00000400
#define CFG_COD_MAJOR_PERIPHERAL 0x00000500
#define CFG_COD_MAJOR_IMAGING 0x00000600
#define CFG_COD_MAJOR_UNCLASSIFIED 0x00001F00
#define CFG_COD_MINOR_AUDIO_UNCLASSIFIED 0x00000000
#define CFG_COD_MINOR_AUDIO_HEADSET 0x00000004
#define CFG_COD_MINOR_AUDIO_HANDSFREE 0x00000008
#define CFG_COD_MINOR_AUDIO_MICROPHONE 0x00000010
#define CFG_COD_MINOR_AUDIO_LOUDSPEAKER 0x00000014
#define CFG_COD_MINOR_AUDIO_HEADPHONES 0x00000018
#define CFG_COD_MINOR_AUDIO_PORTABLEAUDIO 0x0000001C
#define CFG_COD_MINOR_AUDIO_CARAUDIO 0x00000020
#define CFG_COD_MINOR_AUDIO_SETTOPBOX 0x00000024
#define CFG_COD_MINOR_AUDIO_HIFIAUDIO 0x00000028
#define CFG_COD_MINOR_AUDIO_VCR 0x0000002C
#define CFG_COD_MINOR_AUDIO_VIDEOCAMERA 0x00000030
#define CFG_COD_MINOR_AUDIO_CAMCORDER 0x00000034
#define CFG_COD_MINOR_AUDIO_VIDEOMONITOR 0x00000038
#define CFG_COD_MINOR_AUDIO_VIDEOSPEAKER 0x0000003C
#define CFG_COD_MINOR_AUDIO_CONFERENCING 0x00000040
#define CFG_COD_MINOR_AUDIO_GAMING 0x00000048
#define CFG_CLASS_OF_DEVICE (CFG_COD_MAJOR_AUDIO|CFG_COD_MINOR_AUDIO_HEADSET|CFG_COD_AUDIO|CFG_COD_RENDERING)
// Minor device class for CFG_COD_MAJOR_PERIPHERAL
#define CFG_COD_MINOR_PERIPH_KEYBOARD 0x00000040
#define CFG_COD_MINOR_PERIPH_POINTING 0x00000080
#define CFG_COD_MINOR_PERIPH_COMBOKEY 0x000000C0
#ifdef _SCO_BTPCM_CHANNEL_
#define CFG_SYNC_CONFIG_PATH (0<<8|1<<4|1<<0) /* all links use hci */
#else
#define CFG_SYNC_CONFIG_PATH (0<<8|0<<4|0<<0) /* all links use hci */
#endif
#define CFG_SYNC_CONFIG_MAX_BUFFER (0) /* (e)sco use Packet size */
#ifdef _CVSD_BYPASS_
#define CFG_SYNC_CONFIG_CVSD_BYPASS (1) /* use pcm over hci */
#else
#define CFG_SYNC_CONFIG_CVSD_BYPASS (0) /* use pcm over hci */
#endif
#define CFG_LP_SNIFF_MODE 0x0000
#define EDR_ENABLED 0
#define CFG_BT_DEFAULT_PAGE_SCAN_WINDOW 0x12
#define CFG_BT_DEFAULT_PAGE_SCAN_INTERVAL 0x800
#define CFG_BT_DEFAULT_INQ_SCAN_WINDOW 0x12
#define CFG_BT_DEFAULT_INQ_SCAN_INTERVAL 0x800
#define CFG_INQ_TYPE 1
#define CFG_PAGE_TYPE 1
/* l2cap */
#define SSP_RECONNECT 1
#define L2CAP_AUTH_NEED_ENCRYPTION 1/* default value in spec */
#if defined(__3M_PACK__)
#define L2CAP_CFG_MTU 1021
#else
#define L2CAP_CFG_MTU 679
#endif
#define L2CAP_DEFAULT_MTU L2CAP_CFG_MTU
#define L2CAP_MIN_MTU 48
#define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
#define L2CAP_DEFAULT_QOS_SERVICE_TYPE L2CAP_QOS_BEST_EFFORT
#define L2CAP_DEFAULT_QOS_TOKEN_RATE 0x00000000
#define L2CAP_DEFAULT_QOS_TOKEN_BUCKET_SIZE 0x00000000
#define L2CAP_DEFAULT_QOS_PEEK_BANDWIDTH 0x00000000
#define L2CAP_DEFAULT_QOS_LATENCY 0xffffffff
#define L2CAP_DEFAULT_QOS_DELAY_VARIATION 0xffffffff
#define L2CAP_DEFAULT_RFC_MODE L2CAP_MODE_BASE
#define L2CAP_DEFAULT_RFC_TXWINDOW 32 /*1 to 32*/
#define L2CAP_DEFAULT_RFC_MAXTRANSMIT 32
#define L2CAP_DEFAULT_RFC_RETRANSMISSION_TIMEOUT 1000
#define L2CAP_DEFAULT_RFC_MONITOR_TIMEOUT 1000
#define L2CAP_DEFAULT_RFC_MPS 0xFFFF
#define L2CAP_DEFAULT_FCS_TYPE L2CAP_FCS_TYPE_16_BIT
/* used for pp_buff */
#define L2CAP_PPB_HEAD_RESERVE 4 /*len+cid+control+sdulen 2+2+2+2*/
#define L2CAP_PPB_TAIL_RESERVE 0 /* fcs 2 */
#define L2CAP_PPB_RESERVE (L2CAP_PPB_HEAD_RESERVE + L2CAP_PPB_TAIL_RESERVE)
#define L2CAP_CFG_FLUSH_TO L2CAP_DEFAULT_FLUSH_TO
#define L2CAP_CFG_QOS_SERVICE_TYPE L2CAP_DEFAULT_QOS_SERVICE_TYPE
#define L2CAP_CFG_QOS_TOKEN_RATE 0x00000000
#define L2CAP_CFG_QOS_TOKEN_BUCKET_SIZE 0x00000000
#define L2CAP_CFG_QOS_PEEK_BANDWIDTH 0x00000000
#define L2CAP_CFG_QOS_LATENCY 0xffffffff
#define L2CAP_CFG_QOS_DELAY_VARIATION 0xffffffff
#define L2CAP_CFG_RFC_MODE L2CAP_DEFAULT_RFC_MODE /*L2CAP_MODE_BASE*/
/* below is only available when rfc mode is not base mode*/
#define L2CAP_CFG_RFC_TXWINDOW 32 /*1 to 32*/
#define L2CAP_CFG_RFC_MAXTRANSMIT 32
#define L2CAP_CFG_RFC_RETRANSMISSION_TIMEOUT 1000
#define L2CAP_CFG_RFC_MONITOR_TIMEOUT 1000
#define L2CAP_CFG_RFC_MPS 0xFFFF
/* L2CAP_RTX: The Responsive Timeout eXpired timer is used to terminate
the channel when the remote endpoint is unresponsive to signalling
requests (min 1s, max 60s) */
#define L2CAP_CFG_RTX 60
/* L2CAP_RTX_MAXN: Maximum number of Request retransmissions before
terminating the channel identified by the request. The decision
should be based on the flush timeout of the signalling link. If the
flush timeout is infinite, no retransmissions should be performed */
#define L2CAP_CFG_RTX_MAXN 0
/* L2CAP_ERTX: The Extended Response Timeout eXpired timer is used in
place of the RTC timer when a L2CAP_ConnectRspPnd event is received
(min 60s, max 300s) */
#define L2CAP_CFG_ERTX 300
#endif /* __BT_SYS_CFG_H__ */