From 854cfaf6a447c2af7fae2264284ce5d5b2d972c9 Mon Sep 17 00:00:00 2001 From: hobbycao Date: Mon, 25 Jul 2022 10:45:41 +0800 Subject: [PATCH 1/2] fix: fuzz test repair Signed-off-by: hobbycao --- .../distributedcamera/distributed_camera_source_service.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp index 563e4bfb..39bebfe4 100644 --- a/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp +++ b/services/cameraservice/sourceservice/src/distributedcamera/distributed_camera_source_service.cpp @@ -136,9 +136,9 @@ int32_t DistributedCameraSourceService::RegisterDistributedHardware(const std::s } camerasMap_.emplace(camIndex, camDev); } else { - DHLOGI("DistributedCameraSourceService RegisterDistributedHardware exist devId: %s, dhId: %s, version: %s", + DHLOGE("DistributedCameraSourceService RegisterDistributedHardware exist devId: %s, dhId: %s, version: %s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str(), param.version.c_str()); - camDev = iter->second; + return DCAMERA_ALREADY_EXISTS; } ret = camDev->RegisterDistributedHardware(devId, dhId, reqId, param.version, param.attrs); -- Gitee From 46ac916fffd2162e1ca699ecce1f636477d53bd2 Mon Sep 17 00:00:00 2001 From: chen0088 Date: Tue, 26 Jul 2022 16:15:13 +0800 Subject: [PATCH 2/2] fix: modify hdf wait func Signed-off-by: chen0088 --- .../dcamerahdf/dcamera_hdf_operate.h | 5 +-- .../dcamerahdf/dcamera_hdf_operate.cpp | 35 ++++++++++++++----- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h b/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h index f8e1ba47..198aca17 100644 --- a/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h +++ b/services/cameraservice/sourceservice/include/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.h @@ -32,7 +32,7 @@ using OHOS::HDI::ServiceManager::V1_0::ServStatListenerStub; const std::string CAMERA_SERVICE_NAME = "distributed_camera_service"; const std::string PROVIDER_SERVICE_NAME = "distributed_camera_provider_service"; constexpr uint16_t INVALID_VALUE = 0xffff; -constexpr int32_t WAIT_TIME = 500; +constexpr int32_t WAIT_TIME = 2000; namespace OHOS { namespace DistributedHardware { @@ -44,7 +44,8 @@ public: int32_t UnLoadDcameraHDFImpl(); private: - int32_t WaitLoadService(const uint16_t& servStatus, const std::string& servName); + int32_t WaitLoadCameraService(); + int32_t WaitLoadProviderService(); private: OHOS::sptr devmgr_; diff --git a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp index 97f84abb..a9acca8f 100644 --- a/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp +++ b/services/cameraservice/sourceservice/src/distributedcameramgr/dcamerahdf/dcamera_hdf_operate.cpp @@ -65,21 +65,21 @@ int32_t DCameraHdfOperate::LoadDcameraHDFImpl() return DCAMERA_BAD_VALUE; } + DHLOGI("Load camera service."); if (devmgr_->LoadDevice(CAMERA_SERVICE_NAME) != 0) { DHLOGE("Load camera service failed!"); return DCAMERA_BAD_OPERATE; } - if (WaitLoadService(cameraServStatus_, CAMERA_SERVICE_NAME) != DCAMERA_OK) { - DHLOGE("Wait load camera service failed!"); + if (WaitLoadCameraService() != DCAMERA_OK) { return DCAMERA_BAD_OPERATE; } + DHLOGI("Load provider service."); if (devmgr_->LoadDevice(PROVIDER_SERVICE_NAME) != 0) { DHLOGE("Load provider service failed!"); return DCAMERA_BAD_OPERATE; } - if (WaitLoadService(providerServStatus_, PROVIDER_SERVICE_NAME) != DCAMERA_OK) { - DHLOGE("Wait load provider service failed!"); + if (WaitLoadProviderService() != DCAMERA_OK) { return DCAMERA_BAD_OPERATE; } @@ -89,15 +89,32 @@ int32_t DCameraHdfOperate::LoadDcameraHDFImpl() return DCAMERA_OK; } -int32_t DCameraHdfOperate::WaitLoadService(const uint16_t& servStatus, const std::string& servName) +int32_t DCameraHdfOperate::WaitLoadCameraService() { + DHLOGI("wait Load camera service."); std::unique_lock lock(hdfOperateMutex_); - hdfOperateCon_.wait_for(lock, std::chrono::milliseconds(WAIT_TIME), [servStatus] { - return (servStatus == OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START); + hdfOperateCon_.wait_for(lock, std::chrono::milliseconds(WAIT_TIME), [this] { + return (this->cameraServStatus_ == OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START); }); - if (servStatus != OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START) { - DHLOGE("wait load service %s failed, status %d", servName.c_str(), servStatus); + if (cameraServStatus_ != OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START) { + DHLOGE("wait load cameraService failed, status %d", cameraServStatus_); + return DCAMERA_BAD_OPERATE; + } + + return DCAMERA_OK; +} + +int32_t DCameraHdfOperate::WaitLoadProviderService() +{ + DHLOGI("wait Load provider service."); + std::unique_lock lock(hdfOperateMutex_); + hdfOperateCon_.wait_for(lock, std::chrono::milliseconds(WAIT_TIME), [this] { + return (this->providerServStatus_ == OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START); + }); + + if (providerServStatus_ != OHOS::HDI::ServiceManager::V1_0::SERVIE_STATUS_START) { + DHLOGE("wait load providerService failed, status %d", providerServStatus_); return DCAMERA_BAD_OPERATE; } -- Gitee