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  #include "napi_inner_scan.h"
17  #include "scan_log.h"
18  
19  using namespace OHOS::Scan;
20  
21  static constexpr const char *FUNCTION_INIT_SCAN = "initScan";
22  static constexpr const char *FUNCTION_EXIT_SCAN = "exitScan";
23  static constexpr const char *FUNCTION_GET_SCANNER_LIST = "getScannerList";
24  static constexpr const char *FUNCTION_STOP_DISCOVER = "stopDiscover";
25  static constexpr const char *FUNCTION_OPEN_SCANNER = "openScanner";
26  static constexpr const char *FUNCTION_CLOSE_SCANNER = "closeScanner";
27  static constexpr const char *FUNCTION_GET_SCAN_OPTION_DESC = "getScanOptionDesc";
28  static constexpr const char *FUNCTION_SET_SCAN_OPTION = "setScanOption";
29  static constexpr const char *FUNCTION_SET_SCAN_AUTO_OPTION = "setScanAutoOption";
30  static constexpr const char *FUNCTION_GET_SCAN_OPTION = "getScanOption";
31  static constexpr const char *FUNCTION_GET_SCAN_PARAMETERS = "getScanParameters";
32  static constexpr const char *FUNCTION_START_SCAN = "startScan";
33  static constexpr const char *FUNCTION_GET_SINGLE_FRAME_FD = "getSingleFrameFD";
34  static constexpr const char *FUNCTION_CANCEL_SCAN = "cancelScan";
35  static constexpr const char *FUNCTION_SET_SCAN_IO_MODE = "setScanIOMode";
36  static constexpr const char *FUNCTION_GET_SCAN_SELECT_FD = "getScanSelectFd";
37  static constexpr const char *FUNCTION_GET_SCANNER_STATE = "getScannerState";
38  static constexpr const char *FUNCTION_GET_SCAN_PROGRESS = "getScanProgress";
39  static constexpr const char *FUNCTION_ADD_SCANNER = "addScanner";
40  static constexpr const char *FUNCTION_DELETE_SCANNER = "deleteScanner";
41  static constexpr const char *FUNCTION_GET_ADDED_SCANNER = "getAddedScanner";
42  static constexpr const char *FUNCTION_UPDATE_SCANNER_NAME = "updateScannerName";
43  
44  static constexpr const char *FUNCTION_REGISTER_EVENT = "on";
45  static constexpr const char *FUNCTION_UNREGISTER_EVENT = "off";
46  
47  
48  #define SCAN_NAPI_METHOD(name, func)           \
49      {                                           \
50          name, 0, func, 0, 0, 0, napi_default, 0 \
51      }
52  
53  #define SCAN_NAPI_PROPERTY(name, val)                                          \
54      {                                                                           \
55          (name), nullptr, nullptr, nullptr, nullptr, val, napi_static, nullptr   \
56      }
57  
58  
Init(napi_env env,napi_value exports)59  static napi_value Init(napi_env env, napi_value exports)
60  {
61      napi_property_descriptor desc[] = {
62          SCAN_NAPI_METHOD(FUNCTION_INIT_SCAN, NapiInnerScan::InitScan),
63          SCAN_NAPI_METHOD(FUNCTION_EXIT_SCAN, NapiInnerScan::ExitScan),
64          SCAN_NAPI_METHOD(FUNCTION_GET_SCANNER_LIST, NapiInnerScan::GetScannerList),
65          SCAN_NAPI_METHOD(FUNCTION_STOP_DISCOVER, NapiInnerScan::StopDiscover),
66          SCAN_NAPI_METHOD(FUNCTION_OPEN_SCANNER, NapiInnerScan::OpenScanner),
67          SCAN_NAPI_METHOD(FUNCTION_CLOSE_SCANNER, NapiInnerScan::CloseScanner),
68          SCAN_NAPI_METHOD(FUNCTION_GET_SCAN_OPTION_DESC, NapiInnerScan::GetScanOptionDesc),
69          SCAN_NAPI_METHOD(FUNCTION_SET_SCAN_OPTION, NapiInnerScan::SetScanOption),
70          SCAN_NAPI_METHOD(FUNCTION_SET_SCAN_AUTO_OPTION, NapiInnerScan::SetScanAutoOption),
71          SCAN_NAPI_METHOD(FUNCTION_GET_SCAN_OPTION, NapiInnerScan::GetScanOption),
72          SCAN_NAPI_METHOD(FUNCTION_GET_SCAN_PARAMETERS, NapiInnerScan::GetScanParameters),
73          SCAN_NAPI_METHOD(FUNCTION_START_SCAN, NapiInnerScan::StartScan),
74          SCAN_NAPI_METHOD(FUNCTION_GET_SINGLE_FRAME_FD, NapiInnerScan::GetSingleFrameFD),
75          SCAN_NAPI_METHOD(FUNCTION_CANCEL_SCAN, NapiInnerScan::CancelScan),
76          SCAN_NAPI_METHOD(FUNCTION_SET_SCAN_IO_MODE, NapiInnerScan::SetScanIOMode),
77          SCAN_NAPI_METHOD(FUNCTION_GET_SCAN_SELECT_FD, NapiInnerScan::GetScanSelectFd),
78          SCAN_NAPI_METHOD(FUNCTION_GET_SCANNER_STATE, NapiInnerScan::GetScannerState),
79          SCAN_NAPI_METHOD(FUNCTION_GET_SCAN_PROGRESS, NapiInnerScan::GetScanProgress),
80          SCAN_NAPI_METHOD(FUNCTION_ADD_SCANNER, NapiInnerScan::AddScanner),
81          SCAN_NAPI_METHOD(FUNCTION_DELETE_SCANNER, NapiInnerScan::DeleteScanner),
82          SCAN_NAPI_METHOD(FUNCTION_GET_ADDED_SCANNER, NapiInnerScan::GetAddedScanner),
83          SCAN_NAPI_METHOD(FUNCTION_UPDATE_SCANNER_NAME, NapiInnerScan::UpdateScannerName),
84  
85          SCAN_NAPI_METHOD(FUNCTION_REGISTER_EVENT, NapiInnerScan::On),
86          SCAN_NAPI_METHOD(FUNCTION_UNREGISTER_EVENT, NapiInnerScan::Off),
87      };
88  
89      napi_status status = napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc);
90      SCAN_HILOGD("init scan module %{public}d", status);
91      return exports;
92  }
93  
RegisterModule()94  static __attribute__((constructor)) void RegisterModule()
95  {
96      static napi_module module = { .nm_version = 1,
97          .nm_flags = 0,
98          .nm_filename = nullptr,
99          .nm_register_func = Init,
100          .nm_modname = "scan",
101          .nm_priv = ((void *)0),
102          .reserved = { 0 } };
103      napi_module_register(&module);
104      SCAN_HILOGD("module register scan");
105  }
106