Loading system/bta/le_audio/devices.cc +22 −4 Original line number Diff line number Diff line Loading @@ -973,10 +973,19 @@ bool LeAudioDeviceGroup::CigAssignCisIds(LeAudioDevice* leAudioDevice) { cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_UNIDIRECTIONAL_SINK); } if (cis_id == kInvalidCisId) { LOG_WARN( " Unable to get free Uni-Directional Sink CIS ID - maybe there is " "bi-directional available"); /* This could happen when scenarios for given context type allows for * Sink and Source configuration but also only Sink configuration. */ cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_BIDIRECTIONAL); if (cis_id == kInvalidCisId) { LOG_ERROR("Unable to get free Uni-Directional Sink CIS ID"); return false; } } ase->cis_id = cis_id; cises_[cis_id].addr = leAudioDevice->address_; Loading @@ -993,10 +1002,19 @@ bool LeAudioDeviceGroup::CigAssignCisIds(LeAudioDevice* leAudioDevice) { cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_UNIDIRECTIONAL_SOURCE); } if (cis_id == kInvalidCisId) { /* This could happen when scenarios for given context type allows for * Sink and Source configuration but also only Sink configuration. */ LOG_WARN( "Unable to get free Uni-Directional Source CIS ID - maybe there " "is bi-directional available"); cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_BIDIRECTIONAL); if (cis_id == kInvalidCisId) { LOG_ERROR("Unable to get free Uni-Directional Source CIS ID"); return false; } } ase->cis_id = cis_id; cises_[cis_id].addr = leAudioDevice->address_; Loading system/bta/le_audio/le_audio_types.cc +28 −0 Original line number Diff line number Diff line Loading @@ -109,10 +109,38 @@ void get_cis_count(const AudioSetConfigurations* audio_set_confs, : 0; *cis_count_bidir = std::max(bidir_count, *cis_count_bidir); /* Check if we can reduce a number of unicast CISes in case bidirectional * are use in other or this scenario */ if (bidir_count < *cis_count_bidir) { /* Since we already have bidirectional cises available from other * scenarios, let's decrease number of unicast sinks in this scenario. */ uint8_t available_bidir = *cis_count_bidir - bidir_count; unidir_sink_count = unidir_sink_count - std::min(unidir_sink_count, available_bidir); unidir_source_count = unidir_source_count - std::min(unidir_source_count, available_bidir); } else if (bidir_count > *cis_count_bidir) { /* Lets decrease number of the unicast cises from previouse scenarios */ uint8_t available_bidir = bidir_count - *cis_count_bidir; *cis_count_unidir_sink = *cis_count_unidir_sink - std::min(*cis_count_unidir_sink, available_bidir); *cis_count_unidir_source = *cis_count_unidir_source - std::min(*cis_count_unidir_source, available_bidir); } *cis_count_unidir_sink = std::max(unidir_sink_count, *cis_count_unidir_sink); *cis_count_unidir_source = std::max(unidir_source_count, *cis_count_unidir_source); LOG_INFO( "Intermediate step: Bi-Directional: %d," " Uni-Directional Sink: %d, Uni-Directional Source: %d ", *cis_count_bidir, *cis_count_unidir_sink, *cis_count_unidir_source); } LOG_INFO( Loading Loading
system/bta/le_audio/devices.cc +22 −4 Original line number Diff line number Diff line Loading @@ -973,10 +973,19 @@ bool LeAudioDeviceGroup::CigAssignCisIds(LeAudioDevice* leAudioDevice) { cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_UNIDIRECTIONAL_SINK); } if (cis_id == kInvalidCisId) { LOG_WARN( " Unable to get free Uni-Directional Sink CIS ID - maybe there is " "bi-directional available"); /* This could happen when scenarios for given context type allows for * Sink and Source configuration but also only Sink configuration. */ cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_BIDIRECTIONAL); if (cis_id == kInvalidCisId) { LOG_ERROR("Unable to get free Uni-Directional Sink CIS ID"); return false; } } ase->cis_id = cis_id; cises_[cis_id].addr = leAudioDevice->address_; Loading @@ -993,10 +1002,19 @@ bool LeAudioDeviceGroup::CigAssignCisIds(LeAudioDevice* leAudioDevice) { cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_UNIDIRECTIONAL_SOURCE); } if (cis_id == kInvalidCisId) { /* This could happen when scenarios for given context type allows for * Sink and Source configuration but also only Sink configuration. */ LOG_WARN( "Unable to get free Uni-Directional Source CIS ID - maybe there " "is bi-directional available"); cis_id = GetFirstFreeCisId(CisType::CIS_TYPE_BIDIRECTIONAL); if (cis_id == kInvalidCisId) { LOG_ERROR("Unable to get free Uni-Directional Source CIS ID"); return false; } } ase->cis_id = cis_id; cises_[cis_id].addr = leAudioDevice->address_; Loading
system/bta/le_audio/le_audio_types.cc +28 −0 Original line number Diff line number Diff line Loading @@ -109,10 +109,38 @@ void get_cis_count(const AudioSetConfigurations* audio_set_confs, : 0; *cis_count_bidir = std::max(bidir_count, *cis_count_bidir); /* Check if we can reduce a number of unicast CISes in case bidirectional * are use in other or this scenario */ if (bidir_count < *cis_count_bidir) { /* Since we already have bidirectional cises available from other * scenarios, let's decrease number of unicast sinks in this scenario. */ uint8_t available_bidir = *cis_count_bidir - bidir_count; unidir_sink_count = unidir_sink_count - std::min(unidir_sink_count, available_bidir); unidir_source_count = unidir_source_count - std::min(unidir_source_count, available_bidir); } else if (bidir_count > *cis_count_bidir) { /* Lets decrease number of the unicast cises from previouse scenarios */ uint8_t available_bidir = bidir_count - *cis_count_bidir; *cis_count_unidir_sink = *cis_count_unidir_sink - std::min(*cis_count_unidir_sink, available_bidir); *cis_count_unidir_source = *cis_count_unidir_source - std::min(*cis_count_unidir_source, available_bidir); } *cis_count_unidir_sink = std::max(unidir_sink_count, *cis_count_unidir_sink); *cis_count_unidir_source = std::max(unidir_source_count, *cis_count_unidir_source); LOG_INFO( "Intermediate step: Bi-Directional: %d," " Uni-Directional Sink: %d, Uni-Directional Source: %d ", *cis_count_bidir, *cis_count_unidir_sink, *cis_count_unidir_source); } LOG_INFO( Loading