diff --git a/services/native/driver_extension_manager/include/driver_controller/driver_extension_controller.h b/services/native/driver_extension_manager/include/driver_controller/driver_extension_controller.h index 9a6cb00944750e26a2fbbb5a21e3ff15ce45e2de..e76b825ea5fbe5ec48bc1b1948f9f6e8c39b56d4 100644 --- a/services/native/driver_extension_manager/include/driver_controller/driver_extension_controller.h +++ b/services/native/driver_extension_manager/include/driver_controller/driver_extension_controller.h @@ -32,12 +32,14 @@ public: int32_t ConnectDriverExtension( std::string bundleName, std::string abilityName, - std::shared_ptr callback + std::shared_ptr callback, + uint32_t deviceId = 0 ); int32_t DisconnectDriverExtension( std::string bundleName, std::string abilityName, - std::shared_ptr callback + std::shared_ptr callback, + uint32_t deviceId = 0 ); class DriverExtensionAbilityConnection; }; @@ -45,6 +47,7 @@ public: struct DrvExtConnectionInfo { std::string bundleName_; std::string abilityName_; + uint32_t deviceId_; sptr connectInner_; }; diff --git a/services/native/driver_extension_manager/src/driver_controller/driver_extension_controller.cpp b/services/native/driver_extension_manager/src/driver_controller/driver_extension_controller.cpp index 98ea80993a29397afd16693da6b0f3fb0a994759..1a1f2cbaa8ead9b3912abfcb02735a9446f75f85 100644 --- a/services/native/driver_extension_manager/src/driver_controller/driver_extension_controller.cpp +++ b/services/native/driver_extension_manager/src/driver_controller/driver_extension_controller.cpp @@ -112,7 +112,8 @@ int32_t DriverExtensionController::StopDriverExtension( int32_t DriverExtensionController::ConnectDriverExtension( std::string bundleName, std::string abilityName, - std::shared_ptr callback + std::shared_ptr callback, + uint32_t deviceId ) { EDM_LOGI(MODULE_EA_MGR, "Begin to Connect DriverExtension, bundle:%{public}s, ability:%{public}s", \ @@ -130,6 +131,7 @@ int32_t DriverExtensionController::ConnectDriverExtension( callback->info_ = make_shared(); callback->info_->bundleName_ = bundleName; callback->info_->abilityName_ = abilityName; + callback->info_->deviceId_ = deviceId; callback->info_->connectInner_ = new DriverExtensionAbilityConnection(); callback->info_->connectInner_->callback_ = callback; auto abmc = AAFwk::AbilityManagerClient::GetInstance(); @@ -139,6 +141,7 @@ int32_t DriverExtensionController::ConnectDriverExtension( } AAFwk::Want want; want.SetElementName(bundleName, abilityName); + want.SetParam("deviceId", static_cast(deviceId)); auto ret = abmc->ConnectAbility(want, callback->info_->connectInner_, -1); if (ret != 0) { EDM_LOGE(MODULE_EA_MGR, "ConnectExtensionAbility failed %{public}d", ret); @@ -151,7 +154,8 @@ int32_t DriverExtensionController::ConnectDriverExtension( int32_t DriverExtensionController::DisconnectDriverExtension( std::string bundleName, std::string abilityName, - std::shared_ptr callback + std::shared_ptr callback, + uint32_t deviceId ) { EDM_LOGI(MODULE_EA_MGR, "Begin to Disconnect DriverExtension, bundle:%{public}s, ability:%{public}s", \ @@ -165,8 +169,9 @@ int32_t DriverExtensionController::DisconnectDriverExtension( return EDM_ERR_INVALID_PARAM; } if (callback->info_->bundleName_ != bundleName || - callback->info_->abilityName_ != abilityName) { - EDM_LOGE(MODULE_EA_MGR, "bundleName or abilityName not match info in callback"); + callback->info_->abilityName_ != abilityName || + callback->info_->deviceId_ != deviceId) { + EDM_LOGE(MODULE_EA_MGR, "bundleName, abilityName, or deviceId not match info in callback"); return EDM_ERR_INVALID_OBJECT; } auto abmc = AAFwk::AbilityManagerClient::GetInstance();