diff --git a/interfaces/inner_api/native/audiocommon/include/audio_device_descriptor.h b/interfaces/inner_api/native/audiocommon/include/audio_device_descriptor.h index 64545347a97cb99551d8b58ff303109b08de72a7..ea9856ebd1e560a2854495cfa002cd000c7b9ef8 100644 --- a/interfaces/inner_api/native/audiocommon/include/audio_device_descriptor.h +++ b/interfaces/inner_api/native/audiocommon/include/audio_device_descriptor.h @@ -31,6 +31,11 @@ inline bool IsUsb(DeviceType type) return type == DEVICE_TYPE_USB_HEADSET || type == DEVICE_TYPE_USB_ARM_HEADSET; } +inline bool IsNearlinkDevice(DeviceType deviceType) +{ + return deviceType == DEVICE_TYPE_NEARLINK || deviceType == DEVICE_TYPE_NEARLINK_IN; +} + /** * @brief The AudioDeviceDescriptor provides * different sets of audio devices and their roles diff --git a/services/audio_policy/server/domain/device/src/audio_device_descriptor.cpp b/services/audio_policy/server/domain/device/src/audio_device_descriptor.cpp index 60dba2cb01645dc3afc3f9e8fca01cf94a8b11af..eb70f338c0a2199640c7c2725b3f5429e354ce2e 100644 --- a/services/audio_policy/server/domain/device/src/audio_device_descriptor.cpp +++ b/services/audio_policy/server/domain/device/src/audio_device_descriptor.cpp @@ -508,7 +508,8 @@ bool AudioDeviceDescriptor::IsPairedDeviceDesc(const AudioDeviceDescriptor &devi { return ((deviceDescriptor.deviceRole_ == INPUT_DEVICE && deviceRole_ == OUTPUT_DEVICE) || (deviceDescriptor.deviceRole_ == OUTPUT_DEVICE && deviceRole_ == INPUT_DEVICE)) && - deviceDescriptor.deviceType_ == deviceType_ && + (deviceDescriptor.deviceType_ == deviceType_ || + (IsNearlinkDevice(deviceDescriptor.deviceType_) && IsNearlinkDevice(deviceType_))) && deviceDescriptor.macAddress_ == macAddress_ && deviceDescriptor.networkId_ == networkId_; } diff --git a/services/audio_policy/server/domain/device/src/sle/sle_audio_device_manager.cpp b/services/audio_policy/server/domain/device/src/sle/sle_audio_device_manager.cpp index 86370c5a88c9e8882cef55c1105d4c642ec024b1..0693521cdfc1253d221770f3579ad84eafaba5a6 100644 --- a/services/audio_policy/server/domain/device/src/sle/sle_audio_device_manager.cpp +++ b/services/audio_policy/server/domain/device/src/sle/sle_audio_device_manager.cpp @@ -306,7 +306,8 @@ void SleAudioDeviceManager::UpdateStreamTypeMap(const std::string &deviceAddr, u { std::lock_guard lock(startedSleStreamTypeMutex_); auto &sessionSet = startedSleStreamType_[deviceAddr][streamType]; - AUDIO_INFO_LOG("sle streamType %{public}u sessionId %{public}d", streamType, sessionId); + AUDIO_INFO_LOG("sle device %{public}s, add [%{public}d] streamType %{public}u sessionId %{public}d", + AudioPolicyUtils::GetInstance().GetEncryptAddr(deviceAddr).c_str(), isAdd, streamType, sessionId); if (isAdd) { sessionSet.insert(sessionId); } else { diff --git a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp index e69c95d30cb2590b8417f67897cb8dc725bae4bb..f8a4143a102807b69856f8699de8a1e383fdacf3 100644 --- a/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_core_service_private.cpp @@ -2915,7 +2915,9 @@ int32_t AudioCoreService::ActivateNearlinkDevice(const std::shared_ptrmacAddress_, ""); } + +/** +* @tc.name : Test AudioDeviceManager. +* @tc.number: MakePairedDeviceDescriptor_001. +* @tc.desc : Test MakePairedDeviceDescriptor. +*/ +HWTEST_F(AudioDeviceManagerUnitTest, MakePairedDeviceDescriptor_001, TestSize.Level4) +{ + std::shared_ptr outDesc = std::make_shared( + DeviceType::DEVICE_TYPE_NEARLINK, DeviceRole::OUTPUT_DEVICE); + outDesc->macAddress_ = "00:11:22:33:44:55"; + AudioDeviceManager::GetAudioDeviceManager().AddConnectedDevices(outDesc); + auto inDesc = std::make_shared(outDesc); + inDesc->deviceRole_ = DeviceRole::INPUT_DEVICE; + inDesc->deviceType_ = DeviceType::DEVICE_TYPE_NEARLINK_IN; + AudioDeviceManager::GetAudioDeviceManager().MakePairedDeviceDescriptor(inDesc); + EXPECT_EQ(outDesc->pairDeviceDescriptor_ != nullptr, true); + AudioDeviceManager::GetAudioDeviceManager().RemoveConnectedDevices(outDesc); +} + +/** +* @tc.name : Test AudioDeviceManager. +* @tc.number: MakePairedDeviceDescriptor_002. +* @tc.desc : Test MakePairedDeviceDescriptor. +*/ +HWTEST_F(AudioDeviceManagerUnitTest, MakePairedDeviceDescriptor_002, TestSize.Level4) +{ + std::shared_ptr outDesc = std::make_shared( + DeviceType::DEVICE_TYPE_BLUETOOTH_A2DP, DeviceRole::OUTPUT_DEVICE); + outDesc->macAddress_ = "00:11:22:33:44:55"; + AudioDeviceManager::GetAudioDeviceManager().AddConnectedDevices(outDesc); + auto inDesc = std::make_shared(outDesc); + inDesc->deviceRole_ = DeviceRole::INPUT_DEVICE; + inDesc->deviceType_ = DeviceType::DEVICE_TYPE_NEARLINK_IN; + AudioDeviceManager::GetAudioDeviceManager().MakePairedDeviceDescriptor(inDesc); + EXPECT_EQ(outDesc->pairDeviceDescriptor_ != nullptr, false); + AudioDeviceManager::GetAudioDeviceManager().RemoveConnectedDevices(outDesc); +} } // namespace AudioStandard } // namespace OHOS \ No newline at end of file