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