1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef NAPI_INNER_SCAN_H 17 #define NAPI_INNER_SCAN_H 18 #define TDD_ENABLE 1 19 20 #include <string> 21 #include <vector> 22 23 #include "napi/native_api.h" 24 #include "scan_async_call.h" 25 #include "iscan_callback.h" 26 #include "scan_callback.h" 27 #include "scan_constant.h" 28 #include "scan_option_descriptor.h" 29 #include "scan_option_descriptor_helper.h" 30 #include "scan_option_value.h" 31 #include "scan_option_value_helper.h" 32 #include "scan_parameters.h" 33 #include "scan_parameters_helper.h" 34 #include "scanner_info.h" 35 #include "scanner_info_helper.h" 36 #include "scan_progress.h" 37 #include "scan_progress_helper.h" 38 39 40 namespace OHOS::Scan { 41 42 class NapiInnerScan { 43 public: 44 static napi_value InitScan(napi_env env, napi_callback_info info); 45 static napi_value ExitScan(napi_env env, napi_callback_info info); 46 static napi_value GetScannerList(napi_env env, napi_callback_info info); 47 static napi_value StopDiscover(napi_env env, napi_callback_info info); 48 static napi_value OpenScanner(napi_env env, napi_callback_info info); 49 static napi_value CloseScanner(napi_env env, napi_callback_info info); 50 static napi_value GetScanOptionDesc(napi_env env, napi_callback_info info); 51 static napi_value SetScanOption(napi_env env, napi_callback_info info); 52 static napi_value SetScanAutoOption(napi_env env, napi_callback_info info); 53 static napi_value GetScanOption(napi_env env, napi_callback_info info); 54 static napi_value GetScanParameters(napi_env env, napi_callback_info info); 55 static napi_value StartScan(napi_env env, napi_callback_info info); 56 static napi_value GetSingleFrameFD(napi_env env, napi_callback_info info); 57 static napi_value CancelScan(napi_env env, napi_callback_info info); 58 static napi_value SetScanIOMode(napi_env env, napi_callback_info info); 59 static napi_value GetScanSelectFd(napi_env env, napi_callback_info info); 60 static napi_value GetScannerState(napi_env env, napi_callback_info info); 61 static napi_value GetScanProgress(napi_env env, napi_callback_info info); 62 static napi_value AddScanner(napi_env env, napi_callback_info info); 63 static napi_value DeleteScanner(napi_env env, napi_callback_info info); 64 static napi_value GetAddedScanner(napi_env env, napi_callback_info info); 65 static napi_value UpdateScannerName(napi_env env, napi_callback_info info); 66 67 static napi_value On(napi_env env, napi_callback_info info); 68 static napi_value Off(napi_env env, napi_callback_info info); 69 70 private: 71 static bool IsSupportType(const std::string& type); 72 73 private: 74 struct NapiScanContext : public ScanAsyncCall::Context { 75 bool result = false; 76 std::string exeCMD = ""; 77 std::string exePath = ""; 78 79 int32_t scanVersion = 0; 80 int32_t fd = 0; 81 int32_t optionIndex = 0; 82 std::string scannerId = ""; 83 std::string serialNumber = ""; 84 std::string discoverMode = ""; 85 std::string deviceName = ""; 86 std::vector<ScanDeviceInfo> allAddedScanner; 87 88 bool isNonBlocking = false; 89 ScanOptionDescriptor desc; 90 ScanOptionValue optionValue; 91 int32_t info = 0; 92 ScanParameters para; 93 ScanProgress prog; 94 int32_t scannerState = 0; 95 96 uint32_t frameSize = 0; 97 uint32_t image_fd = 0; 98 uint8_t *data = nullptr; 99 bool batchMode = 0; 100 NapiScanContextNapiScanContext101 NapiScanContext() : Context(nullptr, nullptr) {}; NapiScanContextNapiScanContext102 NapiScanContext(InputAction input, OutputAction output) : Context(std::move(input), std::move(output)) {}; ~NapiScanContextNapiScanContext103 virtual ~NapiScanContext() {}; 104 }; 105 }; 106 } // namespace OHOS::Scan 107 #endif // NAPI_INNER_SCAN_H 108