Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4d3aef8 authored by Alice Kuo's avatar Alice Kuo
Browse files

Use PTS flag to set 48_1/2/3/4 audio configuration for broadcast PTS test

Bug: 238588093
Test: Pass PTS BAP broadcast source test cases
Change-Id: I83b97e47df6af9444f6a7ff8de6979e8a1ee882c
parent 45661c40
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -720,6 +720,7 @@ cc_test {
        "le_audio/le_audio_types.cc",
        "le_audio/mock_iso_manager.cc",
        "le_audio/mock_codec_manager.cc",
        ":TestCommonStackConfig",
    ],
    shared_libs: [
        "libprotobuf-cpp-lite",
@@ -774,6 +775,7 @@ cc_test {
        "le_audio/mock_iso_manager.cc",
        "test/common/mock_controller.cc",
        "le_audio/mock_codec_manager.cc",
        ":TestCommonStackConfig",
    ],
    shared_libs: [
        "libprotobuf-cpp-lite",
+73 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include "bta_le_audio_broadcaster_api.h"
#include "btm_ble_api_types.h"
#include "embdrv/lc3/include/lc3.h"
#include "internal_include/stack_config.h"
#include "osi/include/properties.h"

using bluetooth::le_audio::BasicAudioAnnouncementBisConfig;
@@ -223,6 +224,54 @@ static const BroadcastCodecWrapper lc3_stereo_24_2 = BroadcastCodecWrapper(
    // Frame len.
    60);

static const BroadcastCodecWrapper lc3_stereo_48_1 = BroadcastCodecWrapper(
    kLeAudioCodecIdLc3,
    // LeAudioCodecConfiguration
    {.num_channels = LeAudioCodecConfiguration::kChannelNumberStereo,
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval7500Us},
    // Bitrate
    80000,
    // Frame len.
    75);

static const BroadcastCodecWrapper lc3_stereo_48_2 = BroadcastCodecWrapper(
    kLeAudioCodecIdLc3,
    // LeAudioCodecConfiguration
    {.num_channels = LeAudioCodecConfiguration::kChannelNumberStereo,
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
    // Bitrate
    80000,
    // Frame len.
    100);

static const BroadcastCodecWrapper lc3_stereo_48_3 = BroadcastCodecWrapper(
    kLeAudioCodecIdLc3,
    // LeAudioCodecConfiguration
    {.num_channels = LeAudioCodecConfiguration::kChannelNumberStereo,
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval7500Us},
    // Bitrate
    96000,
    // Frame len.
    90);

static const BroadcastCodecWrapper lc3_stereo_48_4 = BroadcastCodecWrapper(
    kLeAudioCodecIdLc3,
    // LeAudioCodecConfiguration
    {.num_channels = LeAudioCodecConfiguration::kChannelNumberStereo,
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
    // Bitrate
    96000,
    // Frame len.
    120);

const std::map<uint32_t, uint8_t> sample_rate_to_sampling_freq_map = {
    {LeAudioCodecConfiguration::kSampleRate8000,
     codec_spec_conf::kLeAudioSamplingFreq8000Hz},
@@ -318,8 +367,12 @@ std::ostream& operator<<(

static const BroadcastQosConfig qos_config_2_10 = BroadcastQosConfig(2, 10);

static const BroadcastQosConfig qos_config_4_50 = BroadcastQosConfig(4, 50);

static const BroadcastQosConfig qos_config_4_60 = BroadcastQosConfig(4, 60);

static const BroadcastQosConfig qos_config_4_65 = BroadcastQosConfig(4, 65);

std::ostream& operator<<(
    std::ostream& os, const le_audio::broadcaster::BroadcastQosConfig& config) {
  os << " BroadcastQosConfig=[";
@@ -344,8 +397,28 @@ static const std::pair<const BroadcastCodecWrapper&, const BroadcastQosConfig&>
static const std::pair<const BroadcastCodecWrapper&, const BroadcastQosConfig&>
    lc3_stereo_24_2_2 = {lc3_stereo_24_2, qos_config_4_60};

static const std::pair<const BroadcastCodecWrapper&, const BroadcastQosConfig&>
    lc3_stereo_48_1_2 = {lc3_stereo_48_1, qos_config_4_50};

static const std::pair<const BroadcastCodecWrapper&, const BroadcastQosConfig&>
    lc3_stereo_48_2_2 = {lc3_stereo_48_2, qos_config_4_65};

static const std::pair<const BroadcastCodecWrapper&, const BroadcastQosConfig&>
    lc3_stereo_48_3_2 = {lc3_stereo_48_3, qos_config_4_50};

static const std::pair<const BroadcastCodecWrapper&, const BroadcastQosConfig&>
    lc3_stereo_48_4_2 = {lc3_stereo_48_4, qos_config_4_65};

std::pair<const BroadcastCodecWrapper&, const BroadcastQosConfig&>
getStreamConfigForContext(uint16_t context) {
  const std::string* options =
      stack_config_get_interface()->get_pts_broadcast_audio_config_options();
  if (options) {
    if (!options->compare("lc3_stereo_48_1_2")) return lc3_stereo_48_1_2;
    if (!options->compare("lc3_stereo_48_2_2")) return lc3_stereo_48_2_2;
    if (!options->compare("lc3_stereo_48_3_2")) return lc3_stereo_48_3_2;
    if (!options->compare("lc3_stereo_48_4_2")) return lc3_stereo_48_4_2;
  }
  // High quality, Low Latency
  auto contexts_stereo_24_2_1 =
      static_cast<std::underlying_type<LeAudioContextType>::type>(
+8 −0
Original line number Diff line number Diff line
@@ -113,3 +113,11 @@ TRC_HID_DEV=2
#  SMP_NUMERIC_COMPAR_FAIL = 12
#PTS_SmpFailureCase=0


# PTS Broadcast audio configuration option
# Option:
# lc3_stereo_48_1_2
# lc3_stereo_48_2_2
# lc3_stereo_48_3_2
# lc3_stereo_48_4_2
#PTS_BroadcastAudioConfigOption=lc3_stereo_48_1_2
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ typedef struct {
  bool (*get_pts_l2cap_ecoc_connect_remaining)(void);
  int (*get_pts_l2cap_ecoc_send_num_of_sdu)(void);
  bool (*get_pts_l2cap_ecoc_reconfigure)(void);
  const std::string* (*get_pts_broadcast_audio_config_options)(void);
  config_t* (*get_all)(void);
} stack_config_t;

+12 −0
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ const char* PTS_L2CAP_ECOC_INITIAL_CHAN_CNT = "PTS_L2capEcocInitialChanCnt";
const char* PTS_L2CAP_ECOC_CONNECT_REMAINING = "PTS_L2capEcocConnectRemaining";
const char* PTS_L2CAP_ECOC_SEND_NUM_OF_SDU = "PTS_L2capEcocSendNumOfSdu";
const char* PTS_L2CAP_ECOC_RECONFIGURE = "PTS_L2capEcocReconfigure";
const char* PTS_BROADCAST_AUDIO_CONFIG_OPTION =
    "PTS_BroadcastAudioConfigOption";

static std::unique_ptr<config_t> config;
}  // namespace
@@ -184,6 +186,15 @@ static bool get_pts_l2cap_ecoc_reconfigure(void) {
                         PTS_L2CAP_ECOC_RECONFIGURE, false);
}

static const std::string* get_pts_broadcast_audio_config_options(void) {
  if (!config) {
    LOG_INFO("Config isn't ready, use default option");
    return NULL;
  }
  return config_get_string(*config, CONFIG_DEFAULT_SECTION,
                           PTS_BROADCAST_AUDIO_CONFIG_OPTION, NULL);
}

static config_t* get_all(void) { return config.get(); }

const stack_config_t interface = {get_trace_config_enabled,
@@ -205,6 +216,7 @@ const stack_config_t interface = {get_trace_config_enabled,
                                  get_pts_l2cap_ecoc_connect_remaining,
                                  get_pts_l2cap_ecoc_send_num_of_sdu,
                                  get_pts_l2cap_ecoc_reconfigure,
                                  get_pts_broadcast_audio_config_options,
                                  get_all};

const stack_config_t* stack_config_get_interface(void) { return &interface; }
Loading