From d159430cbf328916aa35b4e8156bc937548d02e7 Mon Sep 17 00:00:00 2001 From: maan4 Date: Thu, 11 Sep 2025 11:13:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E8=A7=86=E6=84=8F=E8=A7=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: maan4 --- .../include/miscdevice_service.h | 2 ++ .../src/miscdevice_service.cpp | 29 ++++++++++++------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/services/miscdevice_service/include/miscdevice_service.h b/services/miscdevice_service/include/miscdevice_service.h index a245802..ee13923 100644 --- a/services/miscdevice_service/include/miscdevice_service.h +++ b/services/miscdevice_service/include/miscdevice_service.h @@ -162,6 +162,7 @@ private: const VibratorCapacity &vibratorCapacity, const std::vector &waveInfomation, const HdfVibratorPlugInfo &info, VibratorAllInfos &vibratorAllInfos); int32_t PerformVibrationControl(const VibratorIdentifierIPC& identifier, int32_t duration, VibrateInfo& info); + bool IsVibratorIdValid(const std::vector baseInfo, int32_t target); std::mutex isVibrationPriorityReadyMutex_; static bool isVibrationPriorityReady_; VibratorHdiConnection &vibratorHdiConnection_ = VibratorHdiConnection::GetInstance(); @@ -180,6 +181,7 @@ private: std::mutex lightInfosMutex_; std::mutex devicesManageMutex_; static std::map devicesManageMap_; + int32_t invalidVibratorIdCount_ = 0; }; } // namespace Sensors } // namespace OHOS diff --git a/services/miscdevice_service/src/miscdevice_service.cpp b/services/miscdevice_service/src/miscdevice_service.cpp index bfa2f35..ffb16c8 100644 --- a/services/miscdevice_service/src/miscdevice_service.cpp +++ b/services/miscdevice_service/src/miscdevice_service.cpp @@ -74,6 +74,7 @@ const std::string PHONE_TYPE = "phone"; #ifdef OHOS_BUILD_ENABLE_VIBRATOR_PRESET_INFO constexpr int32_t SHORT_VIBRATOR_DURATION = 50; #endif // OHOS_BUILD_ENABLE_VIBRATOR_PRESET_INFO +constexpr int32_t LOG_COUNT_FIVE = 5; } // namespace bool MiscdeviceService::isVibrationPriorityReady_ = false; @@ -1699,13 +1700,19 @@ int32_t MiscdeviceService::StartVibrateThreadControl(const VibratorIdentifierIPC return (ignoreVibrateNum == result.size()) ? ERROR : ERR_OK; } -bool IsVibratorIdValid(const std::vector baseInfo, int32_t target) +bool MiscdeviceService::IsVibratorIdValid(const std::vector baseInfo, int32_t target) { for (const auto& item : baseInfo) { - if (item.vibratorId == target) { + if (item.vibratorId == target || target == -1) { return true; } } + std::string packageName = GetPackageName(GetCallingTokenID()); + invalidVibratorIdCount_++; + if (invalidVibratorIdCount_ == LOG_COUNT_FIVE) { + invalidVibratorIdCount_ = 0; + MISC_HILOGE("VibratorId is not valid. package:%{public}s vibratorid:%{public}d", packageName.c_str(), target); + } return false; } @@ -1748,17 +1755,19 @@ std::vector MiscdeviceService::CheckDeviceIdIsValid(const if (deviceIt != devicesManageMap_.end()) { processDevice(*deviceIt); } - } else { - for (const auto& pair : devicesManageMap_) { - if (!IsVibratorIdValid(pair.second.baseInfo, identifier.vibratorId)) { - for (const auto& info : pair.second.baseInfo) { - addToResult(info); - } - } else { - processDevice(pair); + return result; + } + + for (const auto& pair : devicesManageMap_) { + if (!IsVibratorIdValid(pair.second.baseInfo, identifier.vibratorId)) { + for (const auto& info : pair.second.baseInfo) { + addToResult(info); } + } else { + processDevice(pair); } } + return result; } } // namespace Sensors -- Gitee