146debc2cSopenharmony_ci/* 246debc2cSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 346debc2cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 446debc2cSopenharmony_ci * you may not use this file except in compliance with the License. 546debc2cSopenharmony_ci * You may obtain a copy of the License at 646debc2cSopenharmony_ci * 746debc2cSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 846debc2cSopenharmony_ci * 946debc2cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1046debc2cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1146debc2cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1246debc2cSopenharmony_ci * See the License for the specific language governing permissions and 1346debc2cSopenharmony_ci * limitations under the License. 1446debc2cSopenharmony_ci */ 1546debc2cSopenharmony_ci 1646debc2cSopenharmony_ci#ifndef SCAN_CONSTANT_H 1746debc2cSopenharmony_ci#define SCAN_CONSTANT_H 1846debc2cSopenharmony_ci 1946debc2cSopenharmony_ci#include <string> 2046debc2cSopenharmony_ci 2146debc2cSopenharmony_cinamespace OHOS::Scan { 2246debc2cSopenharmony_ci 2346debc2cSopenharmony_ci#define SCAN_RET_NONE 2446debc2cSopenharmony_ci#define SCAN_MAX_COUNT 1000 2546debc2cSopenharmony_ci 2646debc2cSopenharmony_ci#define SCAN_ASSERT_BASE(env, assertion, message, retVal) \ 2746debc2cSopenharmony_ci do { \ 2846debc2cSopenharmony_ci if (!(assertion)) { \ 2946debc2cSopenharmony_ci SCAN_HILOGE(message); \ 3046debc2cSopenharmony_ci return retVal; \ 3146debc2cSopenharmony_ci } \ 3246debc2cSopenharmony_ci } while (0) 3346debc2cSopenharmony_ci 3446debc2cSopenharmony_ci#define SCAN_ASSERT(env, assertion, message) SCAN_ASSERT_BASE(env, assertion, message, nullptr) 3546debc2cSopenharmony_ci 3646debc2cSopenharmony_ci#define SCAN_ASSERT_RETURN_VOID(env, assertion, message) SCAN_ASSERT_BASE(env, assertion, message, SCAN_RET_NONE) 3746debc2cSopenharmony_ci 3846debc2cSopenharmony_ci#define SCAN_CALL_BASE(env, theCall, retVal) \ 3946debc2cSopenharmony_ci do { \ 4046debc2cSopenharmony_ci if ((theCall) != napi_ok) { \ 4146debc2cSopenharmony_ci return retVal; \ 4246debc2cSopenharmony_ci } \ 4346debc2cSopenharmony_ci } while (0) 4446debc2cSopenharmony_ci 4546debc2cSopenharmony_ci#define SCAN_CALL(env, theCall) SCAN_CALL_BASE(env, theCall, nullptr) 4646debc2cSopenharmony_ci 4746debc2cSopenharmony_ci#define SCAN_CALL_RETURN_VOID(env, theCall) SCAN_CALL_BASE(env, theCall, SCAN_RET_NONE) 4846debc2cSopenharmony_ci 4946debc2cSopenharmony_ci#define DELETE_AND_NULLIFY(ptr) \ 5046debc2cSopenharmony_ci if ((ptr) != nullptr) { \ 5146debc2cSopenharmony_ci delete (ptr); \ 5246debc2cSopenharmony_ci (ptr) = nullptr; \ 5346debc2cSopenharmony_ci } 5446debc2cSopenharmony_ci 5546debc2cSopenharmony_ci#define DELETE_ARRAY_AND_NULLIFY(ptr) \ 5646debc2cSopenharmony_ci if ((ptr) != nullptr) { \ 5746debc2cSopenharmony_ci delete[] (ptr); \ 5846debc2cSopenharmony_ci (ptr) = nullptr; \ 5946debc2cSopenharmony_ci } 6046debc2cSopenharmony_ci 6146debc2cSopenharmony_ci#define FREE_AND_NULLPTR(ptr) \ 6246debc2cSopenharmony_ci if ((ptr) != nullptr) { \ 6346debc2cSopenharmony_ci free (ptr); \ 6446debc2cSopenharmony_ci (ptr) = nullptr; \ 6546debc2cSopenharmony_ci } 6646debc2cSopenharmony_ci 6746debc2cSopenharmony_ci#define INIT_CALLBACK_PARAMS \ 6846debc2cSopenharmony_ci uv_loop_s *loop = nullptr; \ 6946debc2cSopenharmony_ci bool flag = true; \ 7046debc2cSopenharmony_ci napi_get_uv_event_loop(env_, &loop); \ 7146debc2cSopenharmony_ci CHECK_AND_CREATE(loop, "Failed to get uv event loop", flag); \ 7246debc2cSopenharmony_ci uv_work_t *work = nullptr; \ 7346debc2cSopenharmony_ci CallbackParam *param = nullptr; \ 7446debc2cSopenharmony_ci CallbackContext *context = nullptr; \ 7546debc2cSopenharmony_ci CreateCallbackParam(work, param, context, flag) \ 7646debc2cSopenharmony_ci 7746debc2cSopenharmony_ci#define CHECK_AND_CREATE(pointer, error_message, flag) \ 7846debc2cSopenharmony_ci if ((pointer) == nullptr) { \ 7946debc2cSopenharmony_ci SCAN_HILOGE(error_message); \ 8046debc2cSopenharmony_ci (flag) = false; \ 8146debc2cSopenharmony_ci } 8246debc2cSopenharmony_ci 8346debc2cSopenharmony_ci#define CREATE_PRC_MESSAGE \ 8446debc2cSopenharmony_ci MessageParcel data; \ 8546debc2cSopenharmony_ci MessageParcel reply; \ 8646debc2cSopenharmony_ci MessageOption option; \ 8746debc2cSopenharmony_ci data.WriteInterfaceToken(GetDescriptor()) \ 8846debc2cSopenharmony_ci 8946debc2cSopenharmony_ci#define CHECK_IS_EXCEED_SCAN_RANGE_BASE(count, retVal) \ 9046debc2cSopenharmony_ci do { \ 9146debc2cSopenharmony_ci if ((count) > SCAN_MAX_COUNT) { \ 9246debc2cSopenharmony_ci SCAN_HILOGW("input val is exceed scan max range:%{public}d", SCAN_MAX_COUNT); \ 9346debc2cSopenharmony_ci return retVal; \ 9446debc2cSopenharmony_ci } \ 9546debc2cSopenharmony_ci } while (0) 9646debc2cSopenharmony_ci 9746debc2cSopenharmony_ci#define CHECK_IS_EXCEED_SCAN_RANGE(count) CHECK_IS_EXCEED_SCAN_RANGE_BASE(count, nullptr) 9846debc2cSopenharmony_ci#define CHECK_IS_EXCEED_SCAN_RANGE_BOOL(count) CHECK_IS_EXCEED_SCAN_RANGE_BASE(count, false) 9946debc2cSopenharmony_ci#define CHECK_IS_EXCEED_SCAN_RANGE_VOID(count) CHECK_IS_EXCEED_SCAN_RANGE_BASE(count, E_SCAN_NONE) 10046debc2cSopenharmony_ci#define CHECK_IS_EXCEED_SCAN_RANGE_INT(count) CHECK_IS_EXCEED_SCAN_RANGE_BASE(count, E_SCAN_INVALID_PARAMETER) 10146debc2cSopenharmony_ci 10246debc2cSopenharmony_cienum ScanErrorCode { 10346debc2cSopenharmony_ci // FWK ERROR 10446debc2cSopenharmony_ci E_SCAN_NONE = 0, // no error 10546debc2cSopenharmony_ci E_SCAN_NO_PERMISSION = 201, // no permission 10646debc2cSopenharmony_ci E_SCAN_INVALID_PARAMETER = 401, // invalid parameter 10746debc2cSopenharmony_ci E_SCAN_GENERIC_FAILURE = 13100001, // generic failure of scan 10846debc2cSopenharmony_ci E_SCAN_RPC_FAILURE = 13100002, // RPC failure 10946debc2cSopenharmony_ci E_SCAN_SERVER_FAILURE = 13100003, // failure of scan service 11046debc2cSopenharmony_ci 11146debc2cSopenharmony_ci // DEVICE ERROR 11246debc2cSopenharmony_ci E_SCAN_GOOD = 13200000, /* everything A-OK */ 11346debc2cSopenharmony_ci E_SCAN_UNSUPPORTED = 13200001, /* operation is not supported */ 11446debc2cSopenharmony_ci E_SCAN_CANCELLED = 13200002, /* operation was cancelled */ 11546debc2cSopenharmony_ci E_SCAN_DEVICE_BUSY = 13200003, /* device is busy; try again later */ 11646debc2cSopenharmony_ci E_SCAN_INVAL = 13200004, /* data is invalid (includes no dev at open) */ 11746debc2cSopenharmony_ci E_SCAN_EOF = 13200005, /* no more data available (end-of-file) */ 11846debc2cSopenharmony_ci E_SCAN_JAMMED = 13200006, /* document feeder jammed */ 11946debc2cSopenharmony_ci E_SCAN_NO_DOCS = 13200007, /* document feeder out of documents */ 12046debc2cSopenharmony_ci E_SCAN_COVER_OPEN = 13200008, /* scanner cover is open */ 12146debc2cSopenharmony_ci E_SCAN_IO_ERROR = 13200009, /* error during device I/O */ 12246debc2cSopenharmony_ci E_SCAN_NO_MEM = 13200010, /* out of memory */ 12346debc2cSopenharmony_ci E_SCAN_ACCESS_DENIED = 13200011, /* access to resource has been denied */ 12446debc2cSopenharmony_ci}; 12546debc2cSopenharmony_ci 12646debc2cSopenharmony_ciconst uint32_t SCAN_INVALID_ID = 0xFFFFFFFF; // -1 12746debc2cSopenharmony_ciconst uint16_t USB_VALUE_DESCRIPTOR_INDEX_SERIAL_NUMBER = 0X03; 12846debc2cSopenharmony_ciconst uint8_t USB_REQUESTTYPE_DEVICE_TO_HOST = 0X80; 12946debc2cSopenharmony_ciconst uint8_t USB_REQUEST_GET_DESCRIPTOR = 0X06; 13046debc2cSopenharmony_ciconst uint16_t USB_VALUE_DESCRIPTOR_TYPE_STRING = 0X03; 13146debc2cSopenharmony_ciconst int HTTP_COMMON_CONST_VALUE_8 = 8; 13246debc2cSopenharmony_ciconst uint16_t USB_INDEX_LANGUAGE_ID_ENGLISH = 0X409; 13346debc2cSopenharmony_ciconst int HTTP_COMMON_CONST_VALUE_500 = 500; 13446debc2cSopenharmony_ciconst int HTTP_COMMON_CONST_VALUE_100 = 100; 13546debc2cSopenharmony_ciconst int HTTP_COMMON_CONST_VALUE_2 = 2; 13646debc2cSopenharmony_ciconst int USB_DEVICEID_FIRSTID_LEN_3 = 3; 13746debc2cSopenharmony_ci 13846debc2cSopenharmony_cienum ScanFrame { 13946debc2cSopenharmony_ci SCAN_FRAME_GRAY = 0, /* band covering human visual range */ 14046debc2cSopenharmony_ci SCAN_FRAME_RGB = 1, /* pixel-interleaved red/green/blue bands */ 14146debc2cSopenharmony_ci SCAN_FRAME_RED = 2, /* red band only */ 14246debc2cSopenharmony_ci SCAN_FRAME_GREEN = 3, /* green band only */ 14346debc2cSopenharmony_ci SCAN_FRAME_BLUE = 4, /* blue band only */ 14446debc2cSopenharmony_ci}; 14546debc2cSopenharmony_ci 14646debc2cSopenharmony_cienum ScanExtensionState { 14746debc2cSopenharmony_ci SCAN_EXTENSION_UNLOAD, 14846debc2cSopenharmony_ci SCAN_EXTENSION_LOADING, 14946debc2cSopenharmony_ci SCAN_EXTENSION_LOADED, 15046debc2cSopenharmony_ci}; 15146debc2cSopenharmony_ci 15246debc2cSopenharmony_cienum ScanParamStatus { 15346debc2cSopenharmony_ci SCAN_PARAM_NOT_SET, 15446debc2cSopenharmony_ci SCAN_PARAM_OPT, 15546debc2cSopenharmony_ci SCAN_PARAM_SET, 15646debc2cSopenharmony_ci}; 15746debc2cSopenharmony_ci 15846debc2cSopenharmony_cienum ScanOptionOpType { 15946debc2cSopenharmony_ci SCAN_ACTION_GET_VALUE = 0, 16046debc2cSopenharmony_ci SCAN_ACTION_SET_VALUE, 16146debc2cSopenharmony_ci SCAN_ACTION_SET_AUTO 16246debc2cSopenharmony_ci}; 16346debc2cSopenharmony_ci 16446debc2cSopenharmony_cienum ScanOptionValueType { 16546debc2cSopenharmony_ci SCAN_VALUE_NONE, 16646debc2cSopenharmony_ci SCAN_VALUE_NUM, 16746debc2cSopenharmony_ci SCAN_VALUE_NUM_LIST, 16846debc2cSopenharmony_ci SCAN_VALUE_STR, 16946debc2cSopenharmony_ci SCAN_VALUE_BOOL, 17046debc2cSopenharmony_ci}; 17146debc2cSopenharmony_ci 17246debc2cSopenharmony_cienum ScanConstraintType { 17346debc2cSopenharmony_ci SCAN_CONSTRAINT_NONE = 0, 17446debc2cSopenharmony_ci SCAN_CONSTRAINT_RANGE = 1, 17546debc2cSopenharmony_ci SCAN_CONSTRAINT_WORD_LIST = 2, 17646debc2cSopenharmony_ci SCAN_CONSTRAINT_STRING_LIST = 3, 17746debc2cSopenharmony_ci}; 17846debc2cSopenharmony_ci 17946debc2cSopenharmony_cienum ScannerState { 18046debc2cSopenharmony_ci SCANNER_READY = 0, 18146debc2cSopenharmony_ci SCANNER_SCANING = 1, 18246debc2cSopenharmony_ci SCANNER_SEARCHING = 2, 18346debc2cSopenharmony_ci SCANNER_CANCELING = 3, 18446debc2cSopenharmony_ci}; 18546debc2cSopenharmony_ci} // namespace OHOS::Scan 18646debc2cSopenharmony_ci#endif // SCAN_CONSTANT_H 187