lgq
3 天以前 081f12a52906abe6c2d139fdc144135978681009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import logger from '../dxmodules/dxLogger.js'
import std from '../dxmodules/dxStd.js'
import driver from './driver.js'
import dxDriver from '../dxmodules/dxDriver.js'
import dxMap from '../dxmodules/dxMap.js'
import bus from '../dxmodules/dxEventBus.js'
 
let count = 0
function run() {
    driver.face.init()
    driver.watchdog.enable(driver.watchdog.CONTROLLER_WORKER, true)
    setCallbacks()
    events()
    std.setInterval(() => {
        try {
            driver.watchdog.restart(driver.watchdog.CONTROLLER_WORKER)
            loop()
        } catch (error) {
            logger.error(error)
        }
    }, 20)
}
 
try {
    run()
} catch (error) {
    logger.error(error)
}
 
function loop() {
    if (dxDriver.DRIVER.MODEL != "vf105" || std.loadFile('/etc/app/nfc.conf')) {
        driver.nfc.loop()
    }
    driver.gpiokey.loop()
    driver.face.loop()
    if (!driver.device.finger && (dxDriver.DRIVER.MODEL == "vf105" || dxDriver.DRIVER.MODEL == "vf114")) {
        driver.uartCode.loop()
    }
    if (dxDriver.DRIVER.MODEL == "vf202") {
        driver.uartBle.loop()
    }
    getTrackingBox()
    if(count++ == 80 && driver.device.finger){
        driver.finger.loop()
        count = 0
    }
}
 
let oldData = ''
function getTrackingBox() {
    let event = driver.face.getTrackingBox();
    const mapUI = dxMap.get("UI")
    if (event && event.length > 0) {
        let newData = JSON.stringify(event)
        if (newData !== oldData) {
            oldData = newData
            bus.fire("trackingBox", newData)
            if (mapUI.get("isScreenOff") || mapUI.get("isScreenSaver")) {
                bus.fire("resetTimers")
            }
        }
    }
}
 
function setCallbacks() {
    driver.gpiokey.setCallbacks({
        onKeyEvent: (event) => {
            bus.fire(driver.gpiokey.RECEIVE_MSG, event)
        }
    });
    if (!driver.device.finger && (dxDriver.DRIVER.MODEL == "vf105" || dxDriver.DRIVER.MODEL == "vf114")) {
        driver.uartCode.setCallbacks({
            onMessage: (event) => {
                bus.fire(driver.uartCode.RECEIVE_MSG, event)
            }
        });
    }
    driver.face.setCallbacks({
        onRecognition: (event) => {
            bus.fire("recognition", event)
        }
    });
    if (dxDriver.DRIVER.MODEL == "vf202") {
        driver.uartBle.setCallbacks({
            //透传数据回调
            onMessage: (event) => {
                bus.fire("bleCallback", event)
            },
            //连接成功回调
            onConnectSuccess: function (connId) {
                let map = dxMap.get("connId")
                map.put("connId", connId)
            }
        })
    }
}
 
function events() {
    // 监听获取特征值事件
    bus.on("getFeaByCapStart", (timeout) => {
        try {
            std.setTimeout(() => {
                driver.face.status(1)
                let res = driver.face.getFeaByCap(timeout)
                driver.face.status(0)
                if (res) {
                    bus.fire("getFeaByCapEnd", res)
                }
            }, 1500);
        } catch (error) {
            logger.error(error)
            bus.fire("getFeaByCapEnd", null)
            driver.face.status(0)
        }
    })
}