// // Created by zwsd // #pragma once #include #include #include #include #include #include #include #include #include #include #include "iflytop/components/zcanreceiver/zcanhost.hpp" #include "iflytop/core/core.hpp" #include "zservice_container/zservice_container.hpp" /** * @brief * * service: DisinfectionCtrlService * * 监听事件: * 依赖状态: * 依赖服务: * 作用: * */ namespace iflytop { using namespace std; using namespace core; class DisinfectionCtrlService : public enable_shared_from_this { ENABLE_LOGGER(DisinfectionCtrlService); unique_ptr m_disinfectionThread; string m_disinfectionID; int m_remaintime = 0; bool m_isDisinfectionRunning = false; recursive_mutex lock_; int m_disinfectionWorkState = 0; int m_replenishingFluidsWorkState = 0; int m_drainingWorkState = 0; shared_ptr m_zcanHost; public: DisinfectionCtrlService(); public: void initialize(); /** * @brief 开始消毒 * * @param loglevel 消毒等级 */ void startDisinfection(int loglevel, float roomVol); void stopDisinfection(); void pauseDisinfection(); void continueDisinfection(); int getDisinfectionWorkState(); int getReplenishingFluidsWorkState(); int getDrainingWorkState(); /** * @brief * * @return true * @return false */ void startReplenishingFluids(); void stopReplenishingFluids(); void startDraining(); void stopDraining(); bool isDisinfectionRunning(); int32_t getEstimatedRemainingTimeS(); string getDisinfectionID(); private: string createDisinfectionID(); }; } // namespace iflytop