• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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