diff --git a/services/native/src/usb_device_manager.cpp b/services/native/src/usb_device_manager.cpp index b72efe31590b0410985b424c6d573af2ce48242e..e6b1ee56e406e880737859e7175cc0e14b182044 100644 --- a/services/native/src/usb_device_manager.cpp +++ b/services/native/src/usb_device_manager.cpp @@ -300,7 +300,6 @@ void UsbDeviceManager::UpdateFunctions(int32_t func) } ReportFuncChangeSysEvent(currentFunctions_, func); currentFunctions_ = func; - BroadcastFuncChange(connected_, currentFunctions_); ProcessFunctionNotifier(connected_, func); } @@ -343,15 +342,17 @@ void UsbDeviceManager::HandleEvent(int32_t status) bool curConnect = false; ProcessStatus(status, curConnect); UsbTimerWrapper::GetInstance()->Unregister(delayDisconnTimerId_); - if (curConnect && (connected_ != curConnect)) { - auto task = [&]() { + USB_HILOGI(MODULE_USB_SERVICE, "HandleEvent status %{public}d, bconnected %{public}d", status, connected_); + bool isDisableDialog = (connected_ == curConnect); + if (curConnect) { + auto task = [&, isDisableDialog]() { connected_ = true; GetCurrentFunctions(currentFunctions_); - ProcessFuncChange(connected_, currentFunctions_, isDisableDialog_); + ProcessFuncChange(connected_, currentFunctions_, isDisableDialog_ || isDisableDialog); }; delayDisconnTimerId_ = UsbTimerWrapper::GetInstance()->Register(task, DELAY_CONNECT_INTERVAL, true); - } else if (!curConnect && (connected_ != curConnect)) { - auto task = [&]() { + } else { + auto task = [&, isDisableDialog]() { USB_HILOGI(MODULE_USB_SERVICE, "execute disconnect task:%{public}d", currentFunctions_); connected_ = false; isDisableDialog_ = false; @@ -366,12 +367,10 @@ void UsbDeviceManager::HandleEvent(int32_t status) currentFunctions_ = USB_FUNCTION_STORAGE; usbDeviceInterface_->SetCurrentFunctions(currentFunctions_); } - ProcessFuncChange(connected_, currentFunctions_); + ProcessFuncChange(connected_, currentFunctions_, isDisableDialog); return; }; delayDisconnTimerId_ = UsbTimerWrapper::GetInstance()->Register(task, DELAY_DISCONN_INTERVAL, true); - } else { - USB_HILOGI(MODULE_USB_SERVICE, "else info cur status %{public}d, bconnected: %{public}d", status, connected_); } } #else @@ -383,15 +382,17 @@ void UsbDeviceManager::HandleEvent(int32_t status) bool curConnect = false; ProcessStatus(status, curConnect); UsbTimerWrapper::GetInstance()->Unregister(delayDisconnTimerId_); - if (curConnect && (connected_ != curConnect)) { - auto task = [&]() { + USB_HILOGI(MODULE_USB_SERVICE, "HandleEvent status %{public}d, bconnected %{public}d", status, connected_); + bool isDisableDialog = (connected_ == curConnect); + if (curConnect) { + auto task = [&, isDisableDialog]() { connected_ = true; GetCurrentFunctions(currentFunctions_); - ProcessFuncChange(connected_, currentFunctions_, isDisableDialog_); + ProcessFuncChange(connected_, currentFunctions_, isDisableDialog_ || isDisableDialog); }; delayDisconnTimerId_ = UsbTimerWrapper::GetInstance()->Register(task, DELAY_CONNECT_INTERVAL, true); - } else if (!curConnect && (connected_ != curConnect)) { - auto task = [&]() { + } else { + auto task = [&, isDisableDialog]() { USB_HILOGI(MODULE_USB_SERVICE, "execute disconnect task:%{public}d", currentFunctions_); connected_ = false; isDisableDialog_ = false; @@ -406,12 +407,10 @@ void UsbDeviceManager::HandleEvent(int32_t status) currentFunctions_ = USB_FUNCTION_STORAGE; usbd_->SetCurrentFunctions(currentFunctions_); } - ProcessFuncChange(connected_, currentFunctions_); + ProcessFuncChange(connected_, currentFunctions_, isDisableDialog); return; }; delayDisconnTimerId_ = UsbTimerWrapper::GetInstance()->Register(task, DELAY_DISCONN_INTERVAL, true); - } else { - USB_HILOGI(MODULE_USB_SERVICE, "else info cur status %{public}d, bconnected: %{public}d", status, connected_); } } #endif // USB_MANAGER_V2_0