From 692fe541b7d8a25bcfb3beef83eb6414955c29df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=98=8A=E8=8B=8F?= Date: Fri, 23 May 2025 17:10:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E4=B8=AA=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E6=9C=BA=E9=94=99=E8=AF=AF=E6=98=BE=E7=A4=BAreport?= =?UTF-8?q?=E6=97=B6=E5=8F=AA=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=AA;=20Signe?= =?UTF-8?q?d-off-by:liuhaosu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘昊苏 --- move_files/usb_ipp_manager.cpp | 81 ++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/move_files/usb_ipp_manager.cpp b/move_files/usb_ipp_manager.cpp index dc92694f..2186c2af 100644 --- a/move_files/usb_ipp_manager.cpp +++ b/move_files/usb_ipp_manager.cpp @@ -19,11 +19,34 @@ #include #include #include +#include #include "usb_manager.h" #include "usb_errors.h" #include "usb_ipp_manager.h" namespace OHOS::CUPS { +constexpr int32_t errorReasonCount = 19; +static constexpr std::array ippPrinterErrorReason = { + "other", + "cover-open", + "input-tray-missing", + "marker-supply-empty", + "marker-supply-low", + "marker-waste-almost-full", + "marker-waste-full", + "media-empty", + "media-jam", + "media-low", + "media-needed", + "moving-to-paused", + "paused", + "spool-area-full", + "toner-empty", + "toner-low", + "offline", + "marker-ink-almost-empty", + "door-open" +}; static auto &usbSrvClient = UsbSrvClient::GetInstance(); IppUsbManager::IppUsbManager() { @@ -179,39 +202,33 @@ bool IppUsbManager::DisConnectUsbPinter(const std::string& uri) void IppUsbManager::SetPrinterStateReasons(PrinterStatus& printerStatus) { - static const char* const ippPrinterErrorReason[] = { - "other", - "cover-open", - "input-tray-missing", - "marker-supply-empty", - "marker-supply-low", - "marker-waste-almost-full", - "marker-waste-full", - "media-empty", - "media-jam", - "media-low", - "media-needed", - "moving-to-paused", - "paused", - "spool-area-full", - "toner-empty", - "toner-low", - "offline", - "marker-ink-almost-empty", - "door-open" - }; + std::vector errorReasonIndex; + for (size_t i = 0; i < ippPrinterErrorReason.size(); i++) { + if (strstr(printerStatus.printerStateReasons, ippPrinterErrorReason[i]) != nullptr) { + errorReasonIndex.push_back(i); + } + } - for (const char* reason : ippPrinterErrorReason) { - if (strstr(printerStatus.printerStateReasons, reason) != nullptr) { - int ret = snprintf_s( - printerStatus.printerStateReasons, - sizeof(printerStatus.printerStateReasons), - sizeof(printerStatus.printerStateReasons) - 1, - "%s-error", reason); - if (ret < 0) { - fprintf(stderr, "DEBUG: USB_MONITOR snprintf_s printerStateReasons error\n"); - } - break; + std::ostringstream errorReasonStream; + bool first = true; + for (const auto index : errorReasonIndex) { + if (!first) { + errorReasonStream << ","; + } + errorReasonStream << ippPrinterErrorReason[index] << "-error"; + first = false; + } + + const std::string errorReason = errorReasonStream.str(); + if (!errorReason.empty()) { + int ret = snprintf_s( + printerStatus.printerStateReasons, + sizeof(printerStatus.printerStateReasons), + sizeof(printerStatus.printerStateReasons) - 1, + "%s", + errorReason.c_str()); + if (ret < 0) { + fprintf(stderr, "DEBUG: USB_MONITOR snprintf_s printerStateReasons error\n"); } } } -- Gitee