#ifndef _COMPAREITEMTHREAD_H_ #define _COMPAREITEMTHREAD_H_ #include "BaseCalculateThread.h" #include "CompareResult.h" #include "AlarmInfo.h" class CalculateDBThread; class NoiseDetectThread; class CompareDoubleThread; /** * 对比项功能线程 * 功能: * 1、对比两个录音通道的数据,通道1是主通道,和其他通道挨个对比 * 2、这里处理各个通道的报警信息,写入数据库 * 3、从这里开启各个比对线程,获取比对结果信息,并组合 * 4、这里创建的线程包含两两对比线程和音量检测线程,这两个都和对比项相关联 * 5、噪音检测线程从线程管理器中获取的,这里不负责创建和销毁 * */ class CompareItemThread : public BaseCalculateThread { public: CompareItemThread(CalculateThreadInfo_t& threadInfo); ~CompareItemThread() override; protected: /* 线程功能函数 */ void task() override; /* 初始化数据 */ bool initData() override; /* 清理数据 */ void clearData() override; private: /* 分派线程,创建两两对比线程 */ bool dispatchCompareThreads(); /* 更新数据 */ bool updateResultData(); /* 发送数据 */ void sendResultData(); /* 处理报警数据 */ void processAlarmData(); private: /* 计算音量信息的线程指针,第一个是主通道线程 */ std::vector m_vecCalculateDBPhaseThreads; std::vector m_vecCDBPhaseUpdated; /* 音量包更新标志位 */ /* 计算噪音的线程指针 */ std::vector m_vecNoiseDetectThreads; /* 对比项信息线程,这个线程在这里创建,不会和其他对比项复用 */ std::vector m_vecCompareDoubleThreads; /* 计算的数据结果 */ CompareResult_t m_compareResult; /* 存储报警信息 */ std::vector m_vecAlarmSilence; /* 静音报警信息 */ std::vector m_vecAlarmOverload; /* 过载报警信息 */ std::vector m_vecAlarmPhase; /* 反相报警信息 */ std::vector m_vecAlarmSilenceLast; /* 上一次静音报警信息 */ std::vector m_vecAlarmOverloadLast; /* 上一次过载报警信息 */ std::vector m_vecAlarmPhaseLast; /* 上一次反相报警信息 */ /* 要写入到数据库的报警信息 */ std::list m_listAlarm;; }; #endif // _COMPAREITEMTHREAD_H_