const STATE_WAIT_FINGER_DOWN = 1; const STATE_WAIT_FINGER_LEAVE = 2; const STATE_FINGER_DOWN = 3; const STATE_FINGER_LEAVE = 4; const STATE_EXTRACT_TEMPLATE = 5; const STATE_DOWNLOAD_TEMPLATE = 6; const STATE_EXTRACT_TEMPLATE_FAIL = 100; const STATE_EXTRACT_TEMPLATE_DIRTY = 101; const STATE_EXTRACT_TEMPLATE_POINTS_FEW = 102; const STATE_EXTRACT_TEMPLATE_MERGE_FAIL = 103; const ErrorReceiveDataErr = 1; const ErrorEnrollTimeout = 2; const ErrorDeviceNotFound = 3; const ErrorEmptyFail = 4; var mafp = { isConnected: false, ws: null, enrollCount: 6, enrollTimeout: 30 * 1000, callback: null, isWorking: false, init(conf) { if (conf && conf.enrollCount) { this.enrollCount = conf.enrollCount; } if (conf && conf.enrollTimeout) { this.enrollTimeout = conf.enrollTimeout; } return new Promise((resolve,reject) => { var that = this; if (this.isConnected) { resolve(); return; } var timeout = setTimeout(() => { if (!that.isConnected) { reject("Connection timeout"); } }, 2000) var port = 9897; var address = 'ws://localhost:' + port + '/'; that.ws = new WebSocket(address); that.ws.addEventListener('open', function() { that.isConnected = true; if (timeout) { clearTimeout(timeout); timeout = 0; } resolve() }); that.ws.addEventListener('close', function() { console.log('Connection lost'); that.isConnected = false; reject("Connection lost"); }); that.ws.addEventListener('message', function(e) { let resp = JSON.parse(e.data); if (that.callback) { that.callback(resp); if(resp.err || resp.data) { that.isWorking = false; that.callback = null; } } }); }); }, _sendMessage(msg) { this.ws.send(JSON.stringify(msg)); }, startEnroll(callback=((status, data)=>{})) { this.callback = callback; this.isWorking = true; this.init().then(() => { this._sendMessage({ cmd: "enrollStart", config: { enrollCount: this.enrollCount, enrollTimeout: this.enrollTimeout } }); }).catch(err => { this.callback = null; this.isWorking = false; callback({ err: err, state: 0, step:0 }) }) }, cancelEnroll() { this.callback = null; this.isWorking = false; this._sendMessage({ cmd: "enrollCancel" }); } };