// // Created by zwsd // #pragma once #include #include #include #include #include #include #include #include #include #include #include "configs/project_setting.hpp" #include "iflytop/core/components/timeutils.hpp" /** * @brief * * service: DisinfectionCtrlService * * 监听事件: * 依赖状态: * 依赖服务: * 作用: * */ namespace iflytop { using namespace std; using namespace core; class DisinfectionLogger; typedef enum { kstate_idle = 0, // 空闲 kstate_preheat = 1, // 预热 kstate_disinfection = 2, // 消毒中-工作 kstate_degradation = 4, // 降解中 kstate_finished = 5, // 结束 } disinfection_state_t; class StateSnapshot { public: disinfection_state_t state; zsystem_tp time; int32_t h2o2[MAX_H2O2_SENSOR_NUM]; // ppm int32_t humid[MAX_H2O2_SENSOR_NUM]; // %RH int32_t temp[MAX_H2O2_SENSOR_NUM]; // °C int32_t saturation[MAX_H2O2_SENSOR_NUM]; // %RS int min_h2o2; int max_h2o2; int max_humid; int max_saturation; float dloglevel; }; class DisinfectionPrinterTask { public: string disinfection_id; string usr; vector> stateSnapshotList; // 状态快照I int disinfectantUsage; // 消毒剂使用量 zsystem_tp start_tp; zsystem_tp complete_tp; int targetLog; int actualLog; int disinfectantVolume; // g }; class DisinfectionContext { public: string m_disinfectionID; disinfection_state_t m_state = kstate_idle; zsteady_tp start_steady_tp; zsystem_tp start_tp; zsystem_tp complete_tp; /** * @brief 消毒中配置 */ int pre_heat_time_s = 0; // 预热时间 int stoped_gs = 0; // 停止H2O2浓度 int continued_gs = 0; // 继续H2O2浓度 int stoped_satur = 0; // 停止饱和度 int continued_satur = 0; // 继续饱和度 int stoped_humi = 0; // 停止湿度 int continued_humi = 0; // 继续湿度 int injection_pump_speed; bool injection_pump_speed_changed = false; float cfg_targetLoglevel = 0; /** * @brief 运行状态 */ zsteady_tp state_last_compute_dvalue_tp; // 上次计算dvalue时间 zsteady_tp state_lastlog_tp; // 上次日志时间 int state_remaintime = 0; float state_now_loglevel = 0; float state_dvalue = 0; bool state_is_disinfection_take_break; // 消毒工作中是否暂停工作 /******************************************************************************* * 传感器信息 * *******************************************************************************/ int32_t h2o2[MAX_H2O2_SENSOR_NUM]; // ppm int32_t humid[MAX_H2O2_SENSOR_NUM]; // %RH int32_t temp[MAX_H2O2_SENSOR_NUM]; // °C int32_t saturation[MAX_H2O2_SENSOR_NUM]; // %RS int min_h2o2; int max_h2o2; int max_humid; int max_saturation; /******************************************************************************* * 日志与统计 * *******************************************************************************/ shared_ptr csvlogger; // 日志记录器 vector> stateSnapshotList; // 状态快照I int beforeDisinfectantVolume_g; // 消毒前消毒剂量 int afterDisinfectantVolume_g; // 消毒后消毒剂量 bool firstLog; }; } // namespace iflytop