1/* 2 * Copyright (c) 2024 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// @ts-ignore 17import scan from '@ohos.scan' 18import { BusinessError} from '@kit.BasicServicesKit'; 19import { ScanLog } from './log'; 20 21export interface ScannerDevice { 22 deviceId : string, 23 manufacturer :string, 24 deviceType : string, 25 deviceState : string, 26 discoverMode : string, 27 serialNumber : string, 28 address : string, 29 deviceName : string, 30} 31 32export interface ScanProgress { 33 progress : number, 34 pictureFd :number, 35 isFinal : boolean, 36} 37 38export interface ScanOptionValue { 39 valueType:number, 40 valueSize:number, 41 numValue?:number, 42 numListValue?:Array<number>, 43 strValue?:string, 44 boolValue?:boolean, 45} 46 47export enum ScanOptionValueType { 48 SCAN_VALUE_NONE, 49 SCAN_VALUE_NUM, 50 SCAN_VALUE_NUM_LIST, 51 SCAN_VALUE_STR, 52 SCAN_VALUE_BOOL, 53} 54 55export class Scan { 56 static initScan():Promise<number>{ 57 return new Promise<number>((resolve,reject)=>{ 58 scan.initScan().then((data:number)=>{ 59 resolve(data); 60 }).catch((error:BusinessError)=>{ 61 reject(error); 62 }) 63 }); 64 } 65 static exitScan():Promise<number>{ 66 return new Promise<number>((resolve,reject)=>{ 67 scan.exitScan().then((data:number)=>{ 68 resolve(data); 69 }).catch((error:BusinessError)=>{ 70 reject(error); 71 }) 72 }); 73 } 74 static openScanner(scannerId:string):Promise<number>{ 75 return new Promise<number>((resolve,reject)=>{ 76 scan.openScanner(scannerId).then((data:number)=>{ 77 resolve(data); 78 }).catch((error:BusinessError)=>{ 79 reject(error); 80 }) 81 }); 82 } 83 static closeScanner(scannerId:string):Promise<number>{ 84 return new Promise<number>((resolve,reject)=>{ 85 scan.closeScanner(scannerId).then((data:number)=>{ 86 resolve(data); 87 }).catch((error:BusinessError)=>{ 88 reject(error); 89 }) 90 }); 91 } 92 static startScan(scannerId:string, isBatch:boolean):Promise<number>{ 93 return new Promise<number>((resolve,reject)=>{ 94 scan.startScan(scannerId, isBatch).then((data:number)=>{ 95 resolve(data); 96 }).catch((error:BusinessError)=>{ 97 reject(error); 98 }) 99 }); 100 } 101 static getScannerList():Promise<boolean>{ 102 return new Promise<boolean>((resolve,reject)=>{ 103 scan.getScannerList().then((data:boolean)=>{ 104 resolve(data); 105 }).catch((error:BusinessError)=>{ 106 reject(error); 107 }) 108 }); 109 } 110 static on(type:string, callBackRef):void{ 111 try { 112 scan.on(type, callBackRef); 113 } catch (error) { 114 ScanLog.warn('scan on error'); 115 } 116 } 117 static cancelScan(scannerId :string):Promise<boolean>{ 118 return new Promise<boolean>((resolve,reject)=>{ 119 scan.cancelScan(scannerId).then((data:boolean)=>{ 120 resolve(data); 121 }).catch((error:BusinessError)=>{ 122 reject(error); 123 }) 124 }); 125 } 126 static getProgress(scannerId :string):Promise<ScanProgress> { 127 return new Promise<ScanProgress>((resolve,reject)=>{ 128 scan.getScanProgress(scannerId).then((data:ScanProgress)=>{ 129 resolve(data); 130 }).catch((error:BusinessError)=>{ 131 reject(error); 132 }) 133 }); 134 } 135 static setScanOption(scannerId :string, optionIndex : number, optionValue : ScanOptionValue):Promise<boolean> { 136 return new Promise<boolean>((resolve,reject)=>{ 137 scan.setScanOption(scannerId, optionIndex, optionValue).then((data:boolean)=>{ 138 resolve(data); 139 }).catch((error:BusinessError)=>{ 140 reject(error); 141 }) 142 }); 143 } 144 static getScanOption(scannerId :string, optionIndex : number, optionValueType : ScanOptionValueType, valueSize : number):Promise<boolean> { 145 return new Promise<boolean>((resolve,reject)=>{ 146 scan.getScanOption(scannerId, optionIndex, optionValueType, valueSize).then((data)=>{ 147 resolve(data); 148 }).catch((error:BusinessError)=>{ 149 reject(error); 150 }) 151 }); 152 } 153 static getScanOptionDesc(scannerId :string, optionIndex : number):Promise<boolean> { 154 return new Promise<boolean>((resolve,reject)=>{ 155 scan.getScanOptionDesc(scannerId, optionIndex).then((data)=>{ 156 resolve(data); 157 }).catch((error:BusinessError)=>{ 158 reject(error); 159 }) 160 }); 161 } 162} 163