From 6867f921cbbf16d88e632370da9fef8903fa3a01 Mon Sep 17 00:00:00 2001 From: yupanwen Date: Thu, 4 Sep 2025 16:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96USB=E4=B8=8A=E7=BA=BF?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 136******92 Change-Id: I1fb5cc3375de5c926e00015eff4639939e96c7d2 --- .../device/include/audio_connected_device.h | 4 - .../device/include/audio_device_status.h | 1 - .../device/src/audio_connected_device.cpp | 39 ----- .../domain/device/src/audio_device_status.cpp | 32 +--- .../device/src/pnp/audio_usb_manager.cpp | 139 +++++++++++++----- .../domain/device/src/pnp/audio_usb_manager.h | 16 +- .../service_main/src/audio_policy_server.cpp | 4 +- .../src/audio_connected_device_unit_test.cpp | 69 --------- .../src/audio_device_status_unit_test.cpp | 15 -- .../src/audio_usb_manager_unit_test.cpp | 10 +- .../audio_connected_device_fuzzer.cpp | 4 - .../audio_device_status_fuzzer.cpp | 1 - .../audio_usb_manager_fuzzer.cpp | 7 +- 13 files changed, 125 insertions(+), 216 deletions(-) diff --git a/services/audio_policy/server/domain/device/include/audio_connected_device.h b/services/audio_policy/server/domain/device/include/audio_connected_device.h index 16aead07c3..15aed6dc72 100644 --- a/services/audio_policy/server/domain/device/include/audio_connected_device.h +++ b/services/audio_policy/server/domain/device/include/audio_connected_device.h @@ -71,10 +71,6 @@ public: std::shared_ptr CheckExistOutputDevice(DeviceType activeDevice, std::string macAddress); std::vector> GetCopy(); std::vector> GetDevicesForGroup(GroupType type, int32_t groupId); - bool HasArm(const DeviceRole role); - bool HasHifi(const DeviceRole role); - bool IsArmDevice(const std::string &address, const DeviceRole role); - std::shared_ptr GetUsbDeviceDescriptor(const std::string &address, const DeviceRole role); void UpdateSpatializationSupported(const std::string macAddress, const bool support); void RegisterNameMonitorHelper(); private: diff --git a/services/audio_policy/server/domain/device/include/audio_device_status.h b/services/audio_policy/server/domain/device/include/audio_device_status.h index a59362c2b5..33f7b6934d 100644 --- a/services/audio_policy/server/domain/device/include/audio_device_status.h +++ b/services/audio_policy/server/domain/device/include/audio_device_status.h @@ -155,7 +155,6 @@ private: void HandleOfflineDistributedDevice(); DeviceType GetDeviceTypeFromPin(AudioPin pin); string GetModuleNameByType(ClassType type); - bool NoNeedChangeUsbDevice(const string &address); void WriteAllDeviceSysEvents( const std::vector> &desc, bool isConnected); void WriteHeadsetSysEvents(const std::shared_ptr &desc, bool isConnected); diff --git a/services/audio_policy/server/domain/device/src/audio_connected_device.cpp b/services/audio_policy/server/domain/device/src/audio_connected_device.cpp index 81f8c3bc0a..f26a687f32 100644 --- a/services/audio_policy/server/domain/device/src/audio_connected_device.cpp +++ b/services/audio_policy/server/domain/device/src/audio_connected_device.cpp @@ -404,45 +404,6 @@ std::vector> AudioConnectedDevice::GetDev return devices; } -bool AudioConnectedDevice::IsArmDevice(const std::string& address, const DeviceRole role) -{ - std::shared_lock lock(mutex_); - return std::any_of(connectedDevices_.begin(), connectedDevices_.end(), - [&address, &role](const auto& item) { - return (item->deviceType_ == DEVICE_TYPE_USB_ARM_HEADSET && - item->macAddress_ == address && item->deviceRole_ == role); - }); -} - -bool AudioConnectedDevice::HasArm(const DeviceRole role) -{ - std::shared_lock lock(mutex_); - return std::find_if(connectedDevices_.cbegin(), connectedDevices_.cend(), [role](const auto& item) { - return item->deviceType_ == DEVICE_TYPE_USB_ARM_HEADSET && item->deviceRole_ == role; - }) != connectedDevices_.cend(); -} - -bool AudioConnectedDevice::HasHifi(const DeviceRole role) -{ - std::shared_lock lock(mutex_); - return std::find_if(connectedDevices_.cbegin(), connectedDevices_.cend(), [role](const auto& item) { - return item->deviceType_ == DEVICE_TYPE_USB_HEADSET && item->deviceRole_ == role; - }) != connectedDevices_.cend(); -} - -std::shared_ptr AudioConnectedDevice::GetUsbDeviceDescriptor(const std::string &address, - const DeviceRole role) -{ - std::shared_lock lock(mutex_); - auto it = std::find_if(connectedDevices_.cbegin(), connectedDevices_.cend(), [&address, role](const auto &item) { - return IsUsb(item->deviceType_) && item->macAddress_ == address && item->deviceRole_ == role; - }); - if (it != connectedDevices_.cend()) { - return *it; - } - return nullptr; -} - static std::string GetSha256EncryptAddress(const std::string& address) { const int32_t HexWidth = 2; diff --git a/services/audio_policy/server/domain/device/src/audio_device_status.cpp b/services/audio_policy/server/domain/device/src/audio_device_status.cpp index 88d977a35b..af4ab1d031 100644 --- a/services/audio_policy/server/domain/device/src/audio_device_status.cpp +++ b/services/audio_policy/server/domain/device/src/audio_device_status.cpp @@ -574,40 +574,10 @@ int32_t AudioDeviceStatus::LoadAccessoryModule(std::string deviceInfo) return SUCCESS; } -bool AudioDeviceStatus::NoNeedChangeUsbDevice(const string &address) -{ - auto key = string("need_change_usb_device#C") + GetField(address, "card", ';') + "D0"; - auto ret = AudioServerProxy::GetInstance().GetAudioParameterProxy(key); - AUDIO_INFO_LOG("key=%{public}s, ret=%{public}s", key.c_str(), ret.c_str()); - return ret == "false"; -} - int32_t AudioDeviceStatus::HandleSpecialDeviceType(DeviceType &devType, bool &isConnected, const std::string &address, DeviceRole role) { - if (devType == DEVICE_TYPE_USB_HEADSET || devType == DEVICE_TYPE_USB_ARM_HEADSET) { - CHECK_AND_RETURN_RET(!address.empty() && role != DEVICE_ROLE_NONE, ERROR); - AUDIO_INFO_LOG("Entry. Addr:%{public}s, Role:%{public}d, HasHifi:%{public}d, HasArm:%{public}d", - GetEncryptAddr(address).c_str(), role, - audioConnectedDevice_.HasHifi(role), audioConnectedDevice_.HasArm(role)); - if (isConnected) { - // Usb-c maybe reported repeatedly, the devType remains unchanged - auto exists = audioConnectedDevice_.GetUsbDeviceDescriptor(address, role); - if (exists) { - devType = exists->deviceType_; - return SUCCESS; - } - if (audioConnectedDevice_.HasHifi(role) || NoNeedChangeUsbDevice(address)) { - devType = DEVICE_TYPE_USB_ARM_HEADSET; - } - } else if (audioConnectedDevice_.IsArmDevice(address, role)) { - devType = DEVICE_TYPE_USB_ARM_HEADSET; - // Temporary resolution to avoid pcm driver problem - string condition = string("address=") + address + " role=" + to_string(DEVICE_ROLE_NONE); - string deviceInfo = AudioServerProxy::GetInstance().GetAudioParameterProxy(LOCAL_NETWORK_ID, USB_DEVICE, - condition); - } - } else if (devType == DEVICE_TYPE_EXTERN_CABLE) { + if (devType == DEVICE_TYPE_EXTERN_CABLE) { CheckAndWriteDeviceChangeExceptionEvent(isConnected, AudioStreamDeviceChangeReason::OLD_DEVICE_UNAVALIABLE, devType, role, ERROR, "Extern cable disconnected, do nothing"); diff --git a/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.cpp b/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.cpp index a5cf9061f0..76d95ab1b3 100644 --- a/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.cpp +++ b/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.cpp @@ -26,13 +26,23 @@ #include "common_event_support.h" #include "usb_srv_client.h" -#include "audio_core_service.h" +#include "audio_server_proxy.h" namespace OHOS { namespace AudioStandard { using namespace USB; +constexpr int16_t MAX_TRY = 10; +constexpr int16_t DELAY_MS = 100; + +template +static void RunAsync(Func__&& func, Args__&&... args) { + thread th(func, args...); + pthread_setname_np(th.native_handle(), "OS_RUNASYNC"); + th.detach(); +} + static string ReadTextFile(const string &file) { string ret; @@ -51,7 +61,7 @@ static string ReadTextFile(const string &file) static void FillSoundCard(const string &path, SoundCard &card) { DIR *dir = opendir(path.c_str()); - CHECK_AND_RETURN_RET(dir != nullptr,); + CHECK_AND_RETURN(dir != nullptr); struct dirent *tmp; while ((tmp = readdir(dir)) != nullptr) { string file(tmp->d_name); @@ -101,7 +111,7 @@ static vector GetUsbSoundCards() if (file.length() <= card.length() || !(file.find(card, 0) == 0)) {continue;} string cardNumStr = file.substr(card.length()); if (!StrToInt(cardNumStr, cardNum)) {continue;} - SoundCard soundCard = {.cardNum_ = static_cast(cardNum)}; + SoundCard soundCard{.cardNum_ = static_cast(cardNum)}; FillSoundCard(baseDir + "/" + file, soundCard); if (soundCard.usbBus_.empty()) {continue;} soundCards.push_back(soundCard); @@ -159,6 +169,12 @@ static bool NotSameSoundCard(const UsbAudioDevice &dev1, const UsbAudioDevice &d return dev1.cardNum_ != dev2.cardNum_ || dev1.isCapturer_ != dev2.isCapturer_ || dev1.isPlayer_ != dev2.isPlayer_; } +static void RemoveArmModuleInfoCache(const string &address) +{ + string condition = string("address=") + address + " role=" + to_string(DEVICE_ROLE_NONE); + AudioServerProxy::GetInstance().GetAudioParameterProxy(LOCAL_NETWORK_ID, USB_DEVICE, condition); +} + string EncUsbAddr(const string &src) { const string head("card="); @@ -170,13 +186,15 @@ string EncUsbAddr(const string &src) AudioUsbManager &AudioUsbManager::GetInstance() { - static AudioUsbManager sManager; - return sManager; + static AudioUsbManager sInstance; + return sInstance; } -void AudioUsbManager::Init(std::shared_ptr observer) +void AudioUsbManager::Init(InitCtrl initCtrl, shared_ptr observer) { lock_guard lock(mutex_); + initCtrl_ |= initCtrl; + CHECK_AND_RETURN_LOG(initCtrl_ == INIT_CTRL_ALL, "Denied. initCtrl_=%{public}d", initCtrl_); if (!initialized_) { #ifdef DETECT_SOUNDBOX AUDIO_INFO_LOG("Entry. DETECT_SOUNDBOX=true"); @@ -184,6 +202,8 @@ void AudioUsbManager::Init(std::shared_ptr observer) AUDIO_INFO_LOG("Entry. DETECT_SOUNDBOX=false"); #endif observer_ = observer; + eventSubscriber_ = SubscribeCommonEvent(); + CHECK_AND_RETURN_LOG(eventSubscriber_, "SubscribeCommonEvent Failed"); RefreshUsbAudioDevices(); initialized_ = true; } @@ -217,46 +237,35 @@ void AudioUsbManager::RefreshUsbAudioDevices() toAdd.push_back(device); } } - CHECK_AND_RETURN_RET(!toAdd.empty(),); - soundCardMap_ = GetUsbSoundCardMap(); - for (auto &device : toAdd) { - if (!FillUsbAudioDevice(device)) { continue; } - audioDevices_.push_back(device); - NotifyDevice(device, true); - } -} - -void AudioUsbManager::SubscribeEvent() -{ - AUDIO_INFO_LOG("Entry"); - CHECK_AND_RETURN_LOG(eventSubscriber_ == nullptr, "feventSubscriber_ already exists"); - eventSubscriber_ = SubscribeCommonEvent(); - lock_guard lock(mutex_); - RefreshUsbAudioDevices(); + CHECK_AND_RETURN(!toAdd.empty()); + HandleDeviceAttachAsync(std::move(toAdd)); } void AudioUsbManager::NotifyDevice(const UsbAudioDevice &device, const bool isConnected) { - DeviceType devType = DeviceType::DEVICE_TYPE_USB_HEADSET; + DeviceType devType = device.devType_; string macAddress = GetDeviceAddr(device.cardNum_); AudioStreamInfo streamInfo{}; string deviceName = device.name_ + "-" + to_string(device.cardNum_); if (device.isPlayer_) { - AUDIO_INFO_LOG("Usb out, devType=%{public}d, isConnected=%{public}d, " + AUDIO_INFO_LOG("Usb output, devType=%{public}d, isConnected=%{public}d, " "macAddress=%{public}s, deviceName=%{public}s, role=%{public}d", devType, isConnected, EncUsbAddr(macAddress).c_str(), deviceName.c_str(), DeviceRole::OUTPUT_DEVICE); - CHECK_AND_RETURN_LOG(observer_ != nullptr, "observer is null"); + CHECK_AND_RETURN_LOG(observer_, "observer_ is nullptr"); observer_->OnDeviceStatusUpdated(devType, isConnected, macAddress, deviceName, streamInfo, OUTPUT_DEVICE, device.isCapturer_); } if (device.isCapturer_) { - AUDIO_INFO_LOG("Usb in, devType=%{public}d, isConnected=%{public}d, " + AUDIO_INFO_LOG("Usb input, devType=%{public}d, isConnected=%{public}d, " "macAddress=%{public}s, deviceName=%{public}s, role=%{public}d", devType, isConnected, EncUsbAddr(macAddress).c_str(), deviceName.c_str(), DeviceRole::INPUT_DEVICE); - CHECK_AND_RETURN_LOG(observer_ != nullptr, "observer is null"); + CHECK_AND_RETURN_LOG(observer_, "observer_ is nullptr"); observer_->OnDeviceStatusUpdated(devType, isConnected, macAddress, deviceName, streamInfo, INPUT_DEVICE, device.isPlayer_); } + if (device.devType_ == DEVICE_TYPE_USB_ARM_HEADSET && !isConnected) { + RemoveArmModuleInfoCache(macAddress); + } } map AudioUsbManager::GetUsbSoundCardMap() @@ -304,10 +313,8 @@ void AudioUsbManager::EventSubscriber::OnReceiveEvent(const EventFwk::CommonEven CHECK_AND_RETURN_LOG(devJson, "Create devJson error"); USB::UsbDevice usbDevice(devJson); cJSON_Delete(devJson); - if (!IsAudioDevice(usbDevice)) { - return; - } - UsbAudioDevice device = { + CHECK_AND_RETURN(IsAudioDevice(usbDevice)); + UsbAudioDevice device { {usbDevice.GetBusNum(), usbDevice.GetDevAddr()}, usbDevice.GetProductName() }; @@ -318,20 +325,48 @@ void AudioUsbManager::HandleAudioDeviceEvent(pair &&p) { AUDIO_INFO_LOG("Entry. deviceName=%{public}s, busNum=%{public}d, devAddr=%{public}d, isAttach=%{public}d", p.first.name_.c_str(), p.first.usbAddr_.busNum_, p.first.usbAddr_.devAddr_, p.second); - lock_guard lock(mutex_); - auto it = find(audioDevices_.begin(), audioDevices_.end(), p.first); if (p.second) { - soundCardMap_ = GetUsbSoundCardMap(); - CHECK_AND_RETURN_LOG(FillUsbAudioDevice(p.first), "Error: FillUsbAudioDevice Failed"); - UpdateDevice(p.first, it); - NotifyDevice(p.first, true); + HandleDeviceAttachAsync({p.first}); } else { + lock_guard lock(mutex_); + auto it = find(audioDevices_.begin(), audioDevices_.end(), p.first); CHECK_AND_RETURN_LOG(it != audioDevices_.end(), "Detached Device does not exist"); NotifyDevice(*it, false); audioDevices_.erase(it); } } +void AudioUsbManager::HandleDeviceAttachAsync(vector &&devices) +{ + CHECK_AND_RETURN(!devices.empty()); + RunAsync([this](vector &&devices) { + HandleDeviceAttach(std::move(devices)); + }, devices); +} + +void AudioUsbManager::HandleDeviceAttach(vector &&devices) +{ + for (int16_t cnt = 0; cnt < MAX_TRY; ++cnt) { + if (cnt > 0) { + this_thread::sleep_for(chrono::milliseconds(DELAY_MS)); + } + vector failList; + lock_guard lg(mutex_); + soundCardMap_ = GetUsbSoundCardMap(); + for (auto &item : devices) { + if (FillUsbAudioDevice(item)) { + UpdateDevice(item); + NotifyDevice(item, true); + } else { + failList.push_back(item); + } + } + CHECK_AND_RETURN(!failList.empty()); + devices.swap(failList); + } + AUDIO_ERR_LOG("Attach Device Failed %{public}zu", devices.size()); +} + bool AudioUsbManager::FillUsbAudioDevice(UsbAudioDevice &device) { auto it = soundCardMap_.find(device.usbAddr_); @@ -341,13 +376,41 @@ bool AudioUsbManager::FillUsbAudioDevice(UsbAudioDevice &device) CHECK_AND_RETURN_RET_LOG(card.isPlayer_ || card.isCapturer_, false, "Error: Sound card[%{public}d] is not player and not capturer", card.cardNum_); device.cardNum_ = card.cardNum_; + device.devType_ = DetectAudioDeviceType(card.cardNum_); device.isCapturer_ = card.isCapturer_; device.isPlayer_ = card.isPlayer_; return true; } -void AudioUsbManager::UpdateDevice(const UsbAudioDevice &dev, std::__wrap_iter &it) +DeviceType AudioUsbManager::DetectAudioDeviceType(uint32_t cardNum) +{ + // If has same sound card already, return value of it + auto it = find_if(audioDevices_.cbegin(), audioDevices_.cend(), [cardNum](auto &item) { + return item.cardNum_ == cardNum; + }); + if (it != audioDevices_.cend()) { + AUDIO_INFO_LOG("Same sound card[%{public}d] exists, type[%{public}d]", it->cardNum_, it->devType_); + return it->devType_; + } + // If has hifi, return arm + it = find_if(audioDevices_.cbegin(), audioDevices_.cend(), [](auto &item) { + return item.devType_ == DEVICE_TYPE_USB_HEADSET; + }); + if (it != audioDevices_.cend()) { + AUDIO_INFO_LOG("Hifi sound card[%{public}d] exists, return arm", it->cardNum_); + return DEVICE_TYPE_USB_ARM_HEADSET; + } + // Detect by invoke audio hal + auto key = string("need_change_usb_device#C") + to_string(cardNum) + "D0"; + auto ret = AudioServerProxy::GetInstance().GetAudioParameterProxy(key); + auto devType = ret == "false" ? DEVICE_TYPE_USB_ARM_HEADSET : DEVICE_TYPE_USB_HEADSET; + AUDIO_INFO_LOG("key=%{public}s, ret=%{public}s, devType=%{public}d", key.c_str(), ret.c_str(), devType); + return devType; +} + +void AudioUsbManager::UpdateDevice(const UsbAudioDevice &dev) { + auto it = find(audioDevices_.begin(), audioDevices_.end(), dev); if (it != audioDevices_.end()) { if (NotSameSoundCard(dev, *it)) { NotifyDevice(*it, false); diff --git a/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.h b/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.h index 30dc6dd50c..4b80ba1d87 100644 --- a/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.h +++ b/services/audio_policy/server/domain/device/src/pnp/audio_usb_manager.h @@ -52,6 +52,7 @@ struct UsbAudioDevice { UsbAddr usbAddr_; string name_; uint32_t cardNum_{0}; + DeviceType devType_{DEVICE_TYPE_INVALID}; bool isCapturer_{false}; bool isPlayer_{false}; inline bool operator==(const UsbAudioDevice &o) const @@ -60,6 +61,12 @@ struct UsbAudioDevice { } }; +typedef int8_t InitCtrl; +constexpr InitCtrl INIT_CTRL_INVALID{0}; +constexpr InitCtrl INIT_CTRL_USB{1}; +constexpr InitCtrl INIT_CTRL_CES{2}; +constexpr InitCtrl INIT_CTRL_ALL{INIT_CTRL_USB | INIT_CTRL_CES}; + class AudioUsbManager { public: class EventSubscriber : public EventFwk::CommonEventSubscriber { @@ -73,9 +80,8 @@ public: static map GetUsbSoundCardMap(); static int32_t GetUsbAudioDevices(vector &result); - void Init(std::shared_ptr observer); + void Init(InitCtrl initCtrl, shared_ptr observer); void Deinit(); - void SubscribeEvent(); private: AudioUsbManager() = default; @@ -84,7 +90,10 @@ private: void HandleAudioDeviceEvent(pair &&p); bool FillUsbAudioDevice(UsbAudioDevice &device); // must be called in mutex_ lock - void UpdateDevice(const UsbAudioDevice &dev, std::__wrap_iter &it); + void UpdateDevice(const UsbAudioDevice &dev); + void HandleDeviceAttach(vector &&devices); + void HandleDeviceAttachAsync(vector &&devices); + DeviceType DetectAudioDeviceType(uint32_t cardNum); std::shared_ptr observer_{nullptr}; std::shared_ptr eventSubscriber_{nullptr}; @@ -92,6 +101,7 @@ private: map soundCardMap_; bool initialized_{false}; + InitCtrl initCtrl_{INIT_CTRL_INVALID}; mutex mutex_; }; diff --git a/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp b/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp index 5fb3c7d80c..77d7bfb702 100644 --- a/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp +++ b/services/audio_policy/server/service/service_main/src/audio_policy_server.cpp @@ -356,7 +356,7 @@ void AudioPolicyServer::OnAddSystemAbility(int32_t systemAbilityId, const std::s break; #ifdef USB_ENABLE case USB_SYSTEM_ABILITY_ID: - usbManager_.Init(eventEntry_); + usbManager_.Init(INIT_CTRL_USB, eventEntry_); break; #endif default: @@ -999,7 +999,7 @@ void AudioPolicyServer::SubscribeCommonEventExecute() SubscribeCommonEvent("usual.event.SCREEN_UNLOCKED"); SubscribeCommonEvent("usual.event.LOCALE_CHANGED"); #ifdef USB_ENABLE - usbManager_.SubscribeEvent(); + usbManager_.Init(INIT_CTRL_CES, eventEntry_); #endif SubscribeSafeVolumeEvent(); isAlreadyRegisterCommonEventListener_ = true; diff --git a/services/audio_policy/test/unittest/audio_connected_device_unit_test/src/audio_connected_device_unit_test.cpp b/services/audio_policy/test/unittest/audio_connected_device_unit_test/src/audio_connected_device_unit_test.cpp index 3fa22f129d..c883b85d7a 100644 --- a/services/audio_policy/test/unittest/audio_connected_device_unit_test/src/audio_connected_device_unit_test.cpp +++ b/services/audio_policy/test/unittest/audio_connected_device_unit_test/src/audio_connected_device_unit_test.cpp @@ -266,19 +266,6 @@ HWTEST_F(AudioConnectedDeviceUnitTest, AudioConnectedDeviceUnitTest_013, TestSiz EXPECT_NE(audioConnectedDevice, nullptr); } -/** -* @tc.name : Test AudioConnectedDevice. -* @tc.number: AudioConnectedDeviceUnitTest_014. -* @tc.desc : Test GetUsbDeviceDescriptor. -*/ -HWTEST_F(AudioConnectedDeviceUnitTest, AudioConnectedDeviceUnitTest_014, TestSize.Level1) -{ - std::string address = "test"; - auto audioConnectedDevice = std::make_shared(); - auto result = audioConnectedDevice->GetUsbDeviceDescriptor(address, DeviceRole::INPUT_DEVICE); - EXPECT_NE(audioConnectedDevice, nullptr); -} - /** * @tc.name : Test AudioConnectedDevice. * @tc.number: AudioConnectedDeviceUnitTest_015. @@ -376,61 +363,5 @@ HWTEST_F(AudioConnectedDeviceUnitTest, AudioConnectedDeviceUnitTest_017, TestSiz result = audioConnectedDevice->CheckDeviceConnected("test1"); EXPECT_EQ(result, false); } - -/** -* @tc.name : Test AudioConnectedDevice. -* @tc.number: AudioConnectedDeviceUnitTest_018. -* @tc.desc : Test HasArm. -*/ -HWTEST_F(AudioConnectedDeviceUnitTest, AudioConnectedDeviceUnitTest_018, TestSize.Level1) -{ - auto audioConnectedDevice = std::make_shared(); - auto desc = std::make_shared(DeviceType::DEVICE_TYPE_USB_ARM_HEADSET, - DeviceRole::OUTPUT_DEVICE); - audioConnectedDevice->connectedDevices_.push_back(desc); - bool result = audioConnectedDevice->HasArm(DeviceRole::OUTPUT_DEVICE); - EXPECT_EQ(result, true); - - result = audioConnectedDevice->HasArm(DeviceRole::INPUT_DEVICE); - EXPECT_EQ(result, false); -} - -/** -* @tc.name : Test AudioConnectedDevice. -* @tc.number: AudioConnectedDeviceUnitTest_019. -* @tc.desc : Test HasHifi. -*/ -HWTEST_F(AudioConnectedDeviceUnitTest, AudioConnectedDeviceUnitTest_019, TestSize.Level1) -{ - auto audioConnectedDevice = std::make_shared(); - auto desc = std::make_shared(DeviceType::DEVICE_TYPE_USB_HEADSET, - DeviceRole::OUTPUT_DEVICE); - audioConnectedDevice->connectedDevices_.push_back(desc); - bool result = audioConnectedDevice->HasHifi(DeviceRole::OUTPUT_DEVICE); - EXPECT_EQ(result, true); - - result = audioConnectedDevice->HasHifi(DeviceRole::INPUT_DEVICE); - EXPECT_EQ(result, false); -} - -/** -* @tc.name : Test AudioConnectedDevice. -* @tc.number: AudioConnectedDeviceUnitTest_020. -* @tc.desc : Test IsArmDevice. -*/ -HWTEST_F(AudioConnectedDeviceUnitTest, AudioConnectedDeviceUnitTest_020, TestSize.Level1) -{ - std::string address = "test"; - auto audioConnectedDevice = std::make_shared(); - auto desc = std::make_shared(DeviceType::DEVICE_TYPE_USB_ARM_HEADSET, - DeviceRole::OUTPUT_DEVICE); - desc->macAddress_ = address; - audioConnectedDevice->connectedDevices_.push_back(desc); - bool result = audioConnectedDevice->IsArmDevice(address, DeviceRole::OUTPUT_DEVICE); - EXPECT_EQ(result, true); - - result = audioConnectedDevice->IsArmDevice(address, DeviceRole::INPUT_DEVICE); - EXPECT_EQ(result, false); -} } // namespace AudioStandard } // namespace OHOS diff --git a/services/audio_policy/test/unittest/audio_device_status_unit_test/src/audio_device_status_unit_test.cpp b/services/audio_policy/test/unittest/audio_device_status_unit_test/src/audio_device_status_unit_test.cpp index 40b6de9a1e..f3c44ad277 100644 --- a/services/audio_policy/test/unittest/audio_device_status_unit_test/src/audio_device_status_unit_test.cpp +++ b/services/audio_policy/test/unittest/audio_device_status_unit_test/src/audio_device_status_unit_test.cpp @@ -89,21 +89,6 @@ HWTEST_F(AudioDeviceStatusUnitTest, AudioDeviceStatus_002, TestSize.Level1) EXPECT_EQ(ret, 0); } -/** -* @tc.name : Test AudioDeviceStatus. -* @tc.number: AudioDeviceStatus_003 -* @tc.desc : Test NoNeedChangeUsbDevice interface. -*/ -HWTEST_F(AudioDeviceStatusUnitTest, AudioDeviceStatus_003, TestSize.Level1) -{ - std::string address = "00:11:22:33:44:55"; - bool bRet = true; - AudioDeviceStatus& audioDeviceStatus = AudioDeviceStatus::GetInstance(); - - bRet = audioDeviceStatus.NoNeedChangeUsbDevice(address); - EXPECT_EQ(bRet, true); -} - /** * @tc.name : Test AudioDeviceStatus. * @tc.number: AudioDeviceStatus_004 diff --git a/services/audio_policy/test/unittest/audio_usb_manager_unit_test/src/audio_usb_manager_unit_test.cpp b/services/audio_policy/test/unittest/audio_usb_manager_unit_test/src/audio_usb_manager_unit_test.cpp index 23625a545b..4025dbd8fd 100644 --- a/services/audio_policy/test/unittest/audio_usb_manager_unit_test/src/audio_usb_manager_unit_test.cpp +++ b/services/audio_policy/test/unittest/audio_usb_manager_unit_test/src/audio_usb_manager_unit_test.cpp @@ -63,11 +63,11 @@ HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_001, TestSize.Level1) auto observer = std::make_shared(); audioUsbManager->initialized_ = false; - audioUsbManager->Init(observer); + audioUsbManager->Init(INIT_CTRL_ALL, observer); EXPECT_EQ(audioUsbManager->initialized_, true); audioUsbManager->initialized_ = true; - audioUsbManager->Init(observer); + audioUsbManager->Init(INIT_CTRL_ALL, observer); EXPECT_EQ(audioUsbManager->initialized_, true); } @@ -131,7 +131,7 @@ HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_006, TestSize.Level1) ASSERT_TRUE(audioUsbManager != nullptr); auto observer = std::make_shared(); - audioUsbManager->Init(observer); + audioUsbManager->Init(INIT_CTRL_ALL, observer); ASSERT_TRUE(observer != nullptr); UsbAudioDevice device; @@ -155,7 +155,7 @@ HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_007, TestSize.Level1) ASSERT_TRUE(audioUsbManager != nullptr); auto observer = std::make_shared(); - audioUsbManager->Init(observer); + audioUsbManager->Init(INIT_CTRL_ALL, observer); ASSERT_TRUE(observer != nullptr); UsbAudioDevice device; @@ -179,7 +179,7 @@ HWTEST_F(AudioUsbManagerUnitTest, AudioUsbManagerUnitTest_008, TestSize.Level1) ASSERT_TRUE(audioUsbManager != nullptr); auto observer = std::make_shared(); - audioUsbManager->Init(observer); + audioUsbManager->Init(INIT_CTRL_ALL, observer); ASSERT_TRUE(observer != nullptr); UsbAudioDevice device; diff --git a/test/fuzztest/audioconnecteddevice_fuzzer/audio_connected_device_fuzzer.cpp b/test/fuzztest/audioconnecteddevice_fuzzer/audio_connected_device_fuzzer.cpp index 13786ed43f..76cc60e65b 100644 --- a/test/fuzztest/audioconnecteddevice_fuzzer/audio_connected_device_fuzzer.cpp +++ b/test/fuzztest/audioconnecteddevice_fuzzer/audio_connected_device_fuzzer.cpp @@ -193,7 +193,6 @@ void GetUsbDeviceDescriptorFuzzTest() std::string address = "test"; auto audioConnectedDevice = std::make_shared(); uint32_t deviceRoleCount = GetData() % DeviceRoleVec.size(); - audioConnectedDevice->GetUsbDeviceDescriptor(address, DeviceRoleVec[deviceRoleCount]); } void UpdateSpatializationSupportedFuzzTest() @@ -248,7 +247,6 @@ void HasArmFuzzTest() auto desc = make_shared(DeviceTypeVec[deviceTypeCount], DeviceRoleVec[deviceRoleCount]); audioConnectedDevice->connectedDevices_.push_back(desc); deviceRoleCount = GetData() % DeviceRoleVec.size(); - audioConnectedDevice->HasArm(DeviceRoleVec[deviceRoleCount]); } void HasHifiFuzzTest() @@ -259,7 +257,6 @@ void HasHifiFuzzTest() auto desc = make_shared(DeviceTypeVec[deviceTypeCount], DeviceRoleVec[deviceRoleCount]); audioConnectedDevice->connectedDevices_.push_back(desc); deviceRoleCount = GetData() % DeviceRoleVec.size(); - bool result = audioConnectedDevice->HasHifi(DeviceRoleVec[deviceRoleCount]); } void IsArmDeviceFuzzTest() @@ -272,7 +269,6 @@ void IsArmDeviceFuzzTest() desc->macAddress_ = address; audioConnectedDevice->connectedDevices_.push_back(desc); deviceRoleCount = GetData() % DeviceRoleVec.size(); - bool result = audioConnectedDevice->IsArmDevice(address, DeviceRoleVec[deviceRoleCount]); } void AudioConnectedDeviceGetAllConnectedDeviceByTypeFuzzTest() diff --git a/test/fuzztest/audiodevicestatus_fuzzer/audio_device_status_fuzzer.cpp b/test/fuzztest/audiodevicestatus_fuzzer/audio_device_status_fuzzer.cpp index 92195e5c03..28d9c34666 100644 --- a/test/fuzztest/audiodevicestatus_fuzzer/audio_device_status_fuzzer.cpp +++ b/test/fuzztest/audiodevicestatus_fuzzer/audio_device_status_fuzzer.cpp @@ -203,7 +203,6 @@ void NoNeedChangeUsbDeviceFuzzTest() audioDeviceStatus.Init(audioA2dpOffloadManager, audioPolicyServerHandler); std::string address = "00:11:22:33:44:55"; - audioDeviceStatus.NoNeedChangeUsbDevice(address); audioDeviceStatus.DeInit(); } diff --git a/test/fuzztest/audiousbmanager_fuzzer/audio_usb_manager_fuzzer.cpp b/test/fuzztest/audiousbmanager_fuzzer/audio_usb_manager_fuzzer.cpp index 79ed315a97..f841edd34f 100644 --- a/test/fuzztest/audiousbmanager_fuzzer/audio_usb_manager_fuzzer.cpp +++ b/test/fuzztest/audiousbmanager_fuzzer/audio_usb_manager_fuzzer.cpp @@ -83,7 +83,7 @@ void AudioUsbManagerInitFuzzTest() auto observer = std::make_shared(); audioUsbManager.initialized_ = GetData(); - audioUsbManager.Init(observer); + audioUsbManager.Init(INIT_CTRL_ALL, observer); } void AudioUsbManagerDeinitFuzzTest() @@ -101,7 +101,6 @@ void AudioUsbManagerSubscribeEventFuzzTest() AudioUsbManager &audioUsbManager = AudioUsbManager::GetInstance(); audioUsbManager.eventSubscriber_ = nullptr; - audioUsbManager.SubscribeEvent(); } void AudioUsbManagerGetUsbSoundCardMapFuzzTest() @@ -139,7 +138,7 @@ void AudioUsbManagerHandleAudioDeviceEventFuzzTest() AudioUsbManager &audioUsbManager = AudioUsbManager::GetInstance(); auto observer = std::make_shared(); - audioUsbManager.Init(observer); + audioUsbManager.Init(INIT_CTRL_ALL, observer); UsbAudioDevice device; SoundCard soundCard; @@ -156,7 +155,7 @@ void AudioUsbManagerNotifyDeviceFuzzTest() CHECK_AND_RETURN(audioUsbManager != nullptr); auto observer = std::make_shared(); - audioUsbManager->Init(observer); + audioUsbManager->Init(INIT_CTRL_ALL, observer); CHECK_AND_RETURN(observer != nullptr); UsbAudioDevice device; -- Gitee