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