aboutsummaryrefslogtreecommitdiff
path: root/device/src/esco_parameters.cc
diff options
context:
space:
mode:
Diffstat (limited to 'device/src/esco_parameters.cc')
-rw-r--r--device/src/esco_parameters.cc286
1 files changed, 178 insertions, 108 deletions
diff --git a/device/src/esco_parameters.cc b/device/src/esco_parameters.cc
index 7f550a142..e2a6eecce 100644
--- a/device/src/esco_parameters.cc
+++ b/device/src/esco_parameters.cc
@@ -21,123 +21,193 @@
#include "device/include/esco_parameters.h"
static const enh_esco_params_t default_esco_parameters[ESCO_NUM_CODECS] = {
- // CVSD
- {.transmit_bandwidth = TXRX_64KBITS_RATE,
- .receive_bandwidth = TXRX_64KBITS_RATE,
- .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
+ // CVSD D1
+ {
+ .transmit_bandwidth = TXRX_64KBITS_RATE,
+ .receive_bandwidth = TXRX_64KBITS_RATE,
+ .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .transmit_codec_frame_size = 60,
+ .receive_codec_frame_size = 60,
+ .input_bandwidth = INPUT_OUTPUT_64K_RATE,
+ .output_bandwidth = INPUT_OUTPUT_64K_RATE,
+ .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
.company_id = 0x0000,
.vendor_specific_codec_id = 0x0000},
- .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .transmit_codec_frame_size = 60,
- .receive_codec_frame_size = 60,
- .input_bandwidth = INPUT_OUTPUT_64K_RATE,
- .output_bandwidth = INPUT_OUTPUT_64K_RATE,
- .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .input_coded_data_size = 16,
- .output_coded_data_size = 16,
- .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
- .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
- .input_pcm_payload_msb_position = 0,
- .output_pcm_payload_msb_position = 0,
- .input_data_path = ESCO_DATA_PATH_PCM,
- .output_data_path = ESCO_DATA_PATH_PCM,
- .input_transport_unit_size = 0x00,
- .output_transport_unit_size = 0x00,
-#if (BTA_HFP_VERSION >= HFP_VERSION_1_7)
- .max_latency_ms = 12,
-#else
- .max_latency_ms = 10,
-#endif
-
- .packet_types =
- (ESCO_PKT_TYPES_MASK_HV1 | ESCO_PKT_TYPES_MASK_HV2 |
- ESCO_PKT_TYPES_MASK_HV3 | ESCO_PKT_TYPES_MASK_EV3 |
- ESCO_PKT_TYPES_MASK_EV4 | ESCO_PKT_TYPES_MASK_EV5 |
- ESCO_PKT_TYPES_MASK_NO_3_EV3 | ESCO_PKT_TYPES_MASK_NO_2_EV5 |
- ESCO_PKT_TYPES_MASK_NO_3_EV5),
-#if (BTA_HFP_VERSION >= HFP_VERSION_1_7)
- .retransmission_effort = ESCO_RETRANSMISSION_QUALITY
-#else
- .retransmission_effort = ESCO_RETRANSMISSION_POWER
-#endif
-
+ .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .input_coded_data_size = 16,
+ .output_coded_data_size = 16,
+ .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .input_pcm_payload_msb_position = 0,
+ .output_pcm_payload_msb_position = 0,
+ .input_data_path = ESCO_DATA_PATH_PCM,
+ .output_data_path = ESCO_DATA_PATH_PCM,
+ .input_transport_unit_size = 0x00,
+ .output_transport_unit_size = 0x00,
+ .max_latency_ms = 0xFFFF, // Don't care
+ .packet_types = (ESCO_PKT_TYPES_MASK_HV1 | ESCO_PKT_TYPES_MASK_HV2 |
+ ESCO_PKT_TYPES_MASK_HV3),
+ .retransmission_effort = ESCO_RETRANSMISSION_OFF,
+ },
+ // CVSD S3
+ {
+ .transmit_bandwidth = TXRX_64KBITS_RATE,
+ .receive_bandwidth = TXRX_64KBITS_RATE,
+ .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .transmit_codec_frame_size = 60,
+ .receive_codec_frame_size = 60,
+ .input_bandwidth = INPUT_OUTPUT_64K_RATE,
+ .output_bandwidth = INPUT_OUTPUT_64K_RATE,
+ .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .input_coded_data_size = 16,
+ .output_coded_data_size = 16,
+ .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .input_pcm_payload_msb_position = 0,
+ .output_pcm_payload_msb_position = 0,
+ .input_data_path = ESCO_DATA_PATH_PCM,
+ .output_data_path = ESCO_DATA_PATH_PCM,
+ .input_transport_unit_size = 0x00,
+ .output_transport_unit_size = 0x00,
+ .max_latency_ms = 10,
+ .packet_types =
+ (ESCO_PKT_TYPES_MASK_HV1 | ESCO_PKT_TYPES_MASK_HV2 |
+ ESCO_PKT_TYPES_MASK_HV3 | ESCO_PKT_TYPES_MASK_EV3 |
+ ESCO_PKT_TYPES_MASK_EV4 | ESCO_PKT_TYPES_MASK_EV5 |
+ ESCO_PKT_TYPES_MASK_NO_3_EV3 | ESCO_PKT_TYPES_MASK_NO_2_EV5 |
+ ESCO_PKT_TYPES_MASK_NO_3_EV5),
+ .retransmission_effort = ESCO_RETRANSMISSION_POWER,
+ },
+ // CVSD S4
+ {
+ .transmit_bandwidth = TXRX_64KBITS_RATE,
+ .receive_bandwidth = TXRX_64KBITS_RATE,
+ .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_CVSD,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .transmit_codec_frame_size = 60,
+ .receive_codec_frame_size = 60,
+ .input_bandwidth = INPUT_OUTPUT_64K_RATE,
+ .output_bandwidth = INPUT_OUTPUT_64K_RATE,
+ .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .input_coded_data_size = 16,
+ .output_coded_data_size = 16,
+ .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .input_pcm_payload_msb_position = 0,
+ .output_pcm_payload_msb_position = 0,
+ .input_data_path = ESCO_DATA_PATH_PCM,
+ .output_data_path = ESCO_DATA_PATH_PCM,
+ .input_transport_unit_size = 0x00,
+ .output_transport_unit_size = 0x00,
+ .max_latency_ms = 12,
+ .packet_types =
+ (ESCO_PKT_TYPES_MASK_HV1 | ESCO_PKT_TYPES_MASK_HV2 |
+ ESCO_PKT_TYPES_MASK_HV3 | ESCO_PKT_TYPES_MASK_EV3 |
+ ESCO_PKT_TYPES_MASK_EV4 | ESCO_PKT_TYPES_MASK_EV5 |
+ ESCO_PKT_TYPES_MASK_NO_3_EV3 | ESCO_PKT_TYPES_MASK_NO_2_EV5 |
+ ESCO_PKT_TYPES_MASK_NO_3_EV5),
+ .retransmission_effort = ESCO_RETRANSMISSION_QUALITY,
},
// mSBC T1
- {.transmit_bandwidth = TXRX_64KBITS_RATE,
- .receive_bandwidth = TXRX_64KBITS_RATE,
- .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
+ {
+ .transmit_bandwidth = TXRX_64KBITS_RATE,
+ .receive_bandwidth = TXRX_64KBITS_RATE,
+ .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .transmit_codec_frame_size = 60,
+ .receive_codec_frame_size = 60,
+ .input_bandwidth = INPUT_OUTPUT_128K_RATE,
+ .output_bandwidth = INPUT_OUTPUT_128K_RATE,
+ .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
.company_id = 0x0000,
.vendor_specific_codec_id = 0x0000},
- .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .transmit_codec_frame_size = 60,
- .receive_codec_frame_size = 60,
- .input_bandwidth = INPUT_OUTPUT_128K_RATE,
- .output_bandwidth = INPUT_OUTPUT_128K_RATE,
- .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .input_coded_data_size = 16,
- .output_coded_data_size = 16,
- .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
- .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
- .input_pcm_payload_msb_position = 0,
- .output_pcm_payload_msb_position = 0,
- .input_data_path = ESCO_DATA_PATH_PCM,
- .output_data_path = ESCO_DATA_PATH_PCM,
- .input_transport_unit_size = 0x00,
- .output_transport_unit_size = 0x00,
- .max_latency_ms = 8,
- .packet_types =
- (ESCO_PKT_TYPES_MASK_EV3 | ESCO_PKT_TYPES_MASK_NO_3_EV3 |
- ESCO_PKT_TYPES_MASK_NO_2_EV5 | ESCO_PKT_TYPES_MASK_NO_3_EV5 |
- ESCO_PKT_TYPES_MASK_NO_2_EV3),
- .retransmission_effort = ESCO_RETRANSMISSION_QUALITY},
+ .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .input_coded_data_size = 16,
+ .output_coded_data_size = 16,
+ .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .input_pcm_payload_msb_position = 0,
+ .output_pcm_payload_msb_position = 0,
+ .input_data_path = ESCO_DATA_PATH_PCM,
+ .output_data_path = ESCO_DATA_PATH_PCM,
+ .input_transport_unit_size = 0x00,
+ .output_transport_unit_size = 0x00,
+ .max_latency_ms = 8,
+ .packet_types =
+ (ESCO_PKT_TYPES_MASK_EV3 | ESCO_PKT_TYPES_MASK_NO_3_EV3 |
+ ESCO_PKT_TYPES_MASK_NO_2_EV5 | ESCO_PKT_TYPES_MASK_NO_3_EV5 |
+ ESCO_PKT_TYPES_MASK_NO_2_EV3),
+ .retransmission_effort = ESCO_RETRANSMISSION_QUALITY,
+ },
// mSBC T2
- {.transmit_bandwidth = TXRX_64KBITS_RATE,
- .receive_bandwidth = TXRX_64KBITS_RATE,
- .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
+ {
+ .transmit_bandwidth = TXRX_64KBITS_RATE,
+ .receive_bandwidth = TXRX_64KBITS_RATE,
+ .transmit_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .transmit_codec_frame_size = 60,
+ .receive_codec_frame_size = 60,
+ .input_bandwidth = INPUT_OUTPUT_128K_RATE,
+ .output_bandwidth = INPUT_OUTPUT_128K_RATE,
+ .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
.company_id = 0x0000,
.vendor_specific_codec_id = 0x0000},
- .receive_coding_format = {.coding_format = ESCO_CODING_FORMAT_MSBC,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .transmit_codec_frame_size = 60,
- .receive_codec_frame_size = 60,
- .input_bandwidth = INPUT_OUTPUT_128K_RATE,
- .output_bandwidth = INPUT_OUTPUT_128K_RATE,
- .input_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
- .company_id = 0x0000,
- .vendor_specific_codec_id = 0x0000},
- .input_coded_data_size = 16,
- .output_coded_data_size = 16,
- .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
- .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
- .input_pcm_payload_msb_position = 0,
- .output_pcm_payload_msb_position = 0,
- .input_data_path = ESCO_DATA_PATH_PCM,
- .output_data_path = ESCO_DATA_PATH_PCM,
- .input_transport_unit_size = 0x00,
- .output_transport_unit_size = 0x00,
- .max_latency_ms = 13,
- .packet_types =
- (ESCO_PKT_TYPES_MASK_EV3 | ESCO_PKT_TYPES_MASK_NO_3_EV3 |
- ESCO_PKT_TYPES_MASK_NO_2_EV5 | ESCO_PKT_TYPES_MASK_NO_3_EV5),
- .retransmission_effort = ESCO_RETRANSMISSION_QUALITY}};
+ .output_coding_format = {.coding_format = ESCO_CODING_FORMAT_LINEAR,
+ .company_id = 0x0000,
+ .vendor_specific_codec_id = 0x0000},
+ .input_coded_data_size = 16,
+ .output_coded_data_size = 16,
+ .input_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .output_pcm_data_format = ESCO_PCM_DATA_FORMAT_2_COMP,
+ .input_pcm_payload_msb_position = 0,
+ .output_pcm_payload_msb_position = 0,
+ .input_data_path = ESCO_DATA_PATH_PCM,
+ .output_data_path = ESCO_DATA_PATH_PCM,
+ .input_transport_unit_size = 0x00,
+ .output_transport_unit_size = 0x00,
+ .max_latency_ms = 13,
+ .packet_types =
+ (ESCO_PKT_TYPES_MASK_EV3 | ESCO_PKT_TYPES_MASK_NO_3_EV3 |
+ ESCO_PKT_TYPES_MASK_NO_2_EV5 | ESCO_PKT_TYPES_MASK_NO_3_EV5),
+ .retransmission_effort = ESCO_RETRANSMISSION_QUALITY,
+ },
+};
enh_esco_params_t esco_parameters_for_codec(esco_codec_t codec) {
CHECK(codec >= 0) << "codec index " << (int)codec << "< 0";