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
import log from '../dxmodules/dxLogger.js'
import bus from '../dxmodules/dxEventBus.js'
import pool from '../dxmodules/dxWorkerPool.js'
import config from '../dxmodules/dxConfig.js'
import faceService from './service/faceService.js'
import mqttService from './service/mqttService.js'
import accessService from './service/accessService.js'
import nfcService from './service/nfcService.js'
import gpiokeyService from './service/gpiokeyService.js'
import configService from './service/configService.js'
import uartBleService from './service/uartBleService.js'
import uartCodeService from './service/uartCodeService.js'
import fingerService from './service/fingerService.js'
import driver from './driver.js'
import codeService from './service/codeService.js'
 
 
pool.callback((data) => {
    try {
        let topic = data.topic
        let msg = data.data
        switch (topic) {
            case "bleCallback":
                uartBleService.receiveMsg(msg)
                break;
            case "recognition":
                faceService.receiveMsg(msg)
                break;
            case driver.gpiokey.RECEIVE_MSG:
                gpiokeyService.receiveMsg(msg)
                break;
            case "setConfig":
                configService.configVerifyAndSave(msg)
                break;
            case "access":
                accessService.access(msg.data, msg.fileName, msg.similarity)
                break;
            case driver.nfc.NFC_CARD_RECEIVE:
            case driver.nfc.EID_RECEIVE:
                if (config.get('sys.nfc')) {
                    bus.fire("resetTimers")
                    nfcService.receiveMsg(msg)
                }
                break;
            case driver.mqtt.CONNECTED_CHANGED:
                // TODO 最好不要在services内直接bus.fire,尝试简化链路
                bus.fire("mqttStatus", msg)
                if (msg == "connected") {
                    mqttService.report()
                }
                break;
            case driver.mqtt.RECEIVE_MSG:
                mqttService.receiveMsg(msg)
                break;
            case driver.uartCode.RECEIVE_MSG:
                bus.fire("resetTimers")
                uartCodeService.receiveMsg(msg)
                break;
            case "code":
                codeService.code(msg)
                break;
            case driver.finger.RECEIVE_MSG:
                bus.fire("resetTimers")
                fingerService.receiveMsg(msg)
                break;
            default:
                log.error("No such topic ", topic)
                break;
        }
    } catch (error) {
        log.error(error)
    }
})