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
/**
 * 服务池配置文件
 * 注册系统中所有服务的事件处理回调,处理来自各模块的事件
 */
import pool from '../dxmodules/dxWorkerPool.js'
import face from '../dxmodules/dxFace.js'
import driver from './driver.js'
import bus from '../dxmodules/dxEventBus.js'
import faceService from './service/faceService.js'
import net from '../dxmodules/dxNet.js'
import config from '../dxmodules/dxConfig.js'
import nfc from '../dxmodules/dxNfc.js'
import mqtt from '../dxmodules/dxMqtt.js'
import map from '../dxmodules/dxMap.js'
import mqttService from './service/mqttService.js'
import accessService from './service/accessService.js'
import nfcService from './service/nfcService.js'
import common from '../dxmodules/dxCommon.js'
import log from '../dxmodules/dxLogger.js'
import dxGpioKey from '../dxmodules/dxGpioKey.js'
import uart from '../dxmodules/dxUart.js'
import uart485Service from './service/uart485Service.js'
import configService from './service/configService.js'
import grainService from './service/grainService.js'
import gpiokeyService from './service/gpiokeyService.js'
import codeService from './service/codeService.js'
 
/**
 * 服务池回调函数
 * 处理来自各模块的事件消息,根据事件主题分发到相应的服务处理
 * @param {object} data - 事件数据
 * @param {string} data.topic - 事件主题
 * @param {any} data.data - 事件数据
 */
pool.callback((data) => {
    let topic = data.topic
    let msg = data.data
    switch (topic) {
        case face.RECEIVE_MSG:
            // 处理人脸识别消息
            faceService.receiveMsg(msg)
            break;
        case dxGpioKey.RECEIVE_MSG:
            // 处理GPIO按键消息
            gpiokeyService.receiveMsg(msg)
            break;
        case "netGetWifiSsidList":
            // 获取WiFi列表
            let wifiList = driver.net.netGetWifiSsidList()
            bus.fire("netWifiSsidList", wifiList)
            break;
        case "switchNetworkType":
            // 切换网络类型
            config.setAndSave("net.type", msg)
            console.log("切换网络", msg);
            driver.net.changeNetType()
            break;
        case "setConfig":
            // 配置验证和保存
            configService.configVerifyAndSave(msg)
            break;
        case "access":
            // 处理通行验证
            accessService.access(msg.data, msg.fileName, msg.similarity)
            break;
        case nfc.RECEIVE_MSG:
            // 处理NFC卡片消息
            nfcService.receiveMsg(msg)
            break;
        case net.STATUS_CHANGE:
            // 网络状态变化
            map.get("NET").put("status", msg.status)
            bus.fire("netStatus", msg)
            break;
        case mqtt.CONNECTED_CHANGED:
            // MQTT连接状态变化
            bus.fire("mqttStatus", msg)
            // mqtt连接上报
            if (msg == "connected") {
                mqttService.report()
            }
            break;
        case mqtt.RECEIVE_MSG:
            // 处理MQTT消息
            mqttService.receiveMsg(msg)
            break;
        case uart.VG.RECEIVE_MSG + driver.uart485.id:
            // 处理UART485指令消息
            uart485Service.receive(msg, 'instruction')
            break;
        case uart.VG.RECEIVE_MSG + driver.uartCode.id:
            // 处理UART码消息
            uart485Service.receive(msg, 'code')
            break;
        case "getCode":
            // 处理条码数据
            codeService.code(msg)
            break;
        case "trackResult":
            // 处理人脸识别结果事件(由mainView.js处理)
            break;
 
        default:
            // 未知主题
            log.error("No such topic ", topic)
            break;
    }
})