diff --git a/services/miscdevice_service/include/miscdevice_service.h b/services/miscdevice_service/include/miscdevice_service.h index a24580241780414141069cd10b727d30d5546a18..ee13923049f36f50edda0a281501f1daa9d70a9d 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 bfa2f35ed4c912fd25ce352739a2ee04b41794ce..ffb16c87cb2b2b46343d9229075f726920fd8ecf 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