From 81b60f226064724a764afecda4cd7f948b687936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=98=8A=E8=8B=8F?= Date: Thu, 19 Sep 2024 14:39:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9sane=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=20Signed-off-by:liuhaosu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘昊苏 --- bundle.json | 2 +- sanei/usb_manager.cpp | 29 +++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/bundle.json b/bundle.json index 75df836a5..dd10fea32 100644 --- a/bundle.json +++ b/bundle.json @@ -1,7 +1,7 @@ { "name": "@ohos/backends", "description": "backends(Scanner Access Now Easy) is a framework for standardized access to any raster scanner", - "version": "1.1.1", + "version": "1.2.1", "license": "GPL v2", "publishAs": "code-segment", "segment": { diff --git a/sanei/usb_manager.cpp b/sanei/usb_manager.cpp index 4129483f8..b35b0808b 100644 --- a/sanei/usb_manager.cpp +++ b/sanei/usb_manager.cpp @@ -61,6 +61,7 @@ static std::vector g_deviceList; static ssize_t g_deviceCount = 0; static uint8_t g_interfaceNumber = 0; static usb_manager_config_descriptor* g_deviceConfig = nullptr; +static std::vector g_refDevices; constexpr int maxUsbInterfaceNum = 1000; constexpr int maxUsbEndpointNum = 1000; @@ -241,6 +242,12 @@ int usb_manager_exit(usb_manager_context *ctx) } delete ctx; ctx = nullptr; + for (const auto& refDevice : g_refDevices) { + if (refDevice != nullptr) { + delete refDevice; + } + } + g_refDevices.clear(); SANE_HILOG_INFO("%s: end successful", __func__); return USB_MANAGER_SUCCESS; } @@ -620,21 +627,31 @@ int usb_manager_set_interface_alt_setting(usb_manager_device_handle *dev_handle, return USB_MANAGER_SUCCESS; } -// stub -int usb_manager_interrupt_transfer(usb_manager_device_handle *dev_handle, unsigned char endpoint, - unsigned char *data, int length, int *actual_length, unsigned int timeout) +usb_manager_device* usb_manager_ref_device(usb_manager_device *dev) { SANE_HILOG_INFO("%s: start", __func__); + if (dev == nullptr) { + SANE_HILOG_ERROR("%s: dev is a nullptr!", __func__); + return nullptr; + } + usb_manager_device* refDevice = new (std::nothrow) usb_manager_device(); + if (refDevice == nullptr) { + SANE_HILOG_ERROR("%s: create refDevice error!", __func__); + return nullptr; + } + refDevice->device = dev->device; + g_refDevices.push_back(refDevice); SANE_HILOG_INFO("%s: end successful", __func__); - return USB_MANAGER_SUCCESS; + return refDevice; } // stub -usb_manager_device* usb_manager_ref_device(usb_manager_device *dev) +int usb_manager_interrupt_transfer(usb_manager_device_handle *dev_handle, unsigned char endpoint, + unsigned char *data, int length, int *actual_length, unsigned int timeout) { SANE_HILOG_INFO("%s: start", __func__); SANE_HILOG_INFO("%s: end successful", __func__); - return nullptr; + return USB_MANAGER_SUCCESS; } // stub -- Gitee