|
@ -1,6 +1,6 @@ |
|
|
#include "drain_liquid_service.hpp"
|
|
|
#include "drain_liquid_service.hpp"
|
|
|
using namespace iflytop; |
|
|
using namespace iflytop; |
|
|
#define DRAINLIQUID_EXT_TIME_S 50
|
|
|
|
|
|
|
|
|
#define DRAINLIQUID_EXT_TIME_S 25
|
|
|
|
|
|
|
|
|
void DrainLiquidService::initialize() { |
|
|
void DrainLiquidService::initialize() { |
|
|
logger->info("DrainLiquidService initialize"); |
|
|
logger->info("DrainLiquidService initialize"); |
|
@ -29,9 +29,9 @@ void DrainLiquidService::start() { |
|
|
THROW_APP_EXCEPTION(err::kappe_state_is_busy, ""); |
|
|
THROW_APP_EXCEPTION(err::kappe_state_is_busy, ""); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (zsteady_clock().gets() < SENSOR_PREHEART_TIME_S) { |
|
|
|
|
|
THROW_APP_EXCEPTION(err::kappe_sensor_is_pre_hearting, ""); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// if (zsteady_clock().gets() < SENSOR_PREHEART_TIME_S) {
|
|
|
|
|
|
// THROW_APP_EXCEPTION(err::kappe_sensor_is_pre_hearting, "");
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
if (m_thread && !m_thread->isWaitingForJoin()) { |
|
|
if (m_thread && !m_thread->isWaitingForJoin()) { |
|
|
THROW_APP_EXCEPTION(err::kappe_disinfection_state_is_wrong, ""); |
|
|
THROW_APP_EXCEPTION(err::kappe_disinfection_state_is_wrong, ""); |
|
@ -91,7 +91,7 @@ void DrainLiquidService::getServiceConfig(shared_ptr<MsgProcessContext> cxt) { |
|
|
|
|
|
|
|
|
void DrainLiquidService::workThread() { |
|
|
void DrainLiquidService::workThread() { |
|
|
ThisThread thisThread; |
|
|
ThisThread thisThread; |
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
m_dics->setAddFluidChannelSelectorValve(true); |
|
|
m_dics->setAddFluidChannelSelectorValve(true); |
|
|
m_dics->AddLiquidPump_drainLiquid(); |
|
|
m_dics->AddLiquidPump_drainLiquid(); |
|
|
m_dics->SprayPump_startInRPM(-PORT.getEmptyPipeSprayPumpRPM()); |
|
|
m_dics->SprayPump_startInRPM(-PORT.getEmptyPipeSprayPumpRPM()); |
|
@ -135,7 +135,43 @@ void DrainLiquidService::workThread() { |
|
|
m_dics->AddLiquidPump_stop(); |
|
|
m_dics->AddLiquidPump_stop(); |
|
|
m_dics->SprayPump_stop(); |
|
|
m_dics->SprayPump_stop(); |
|
|
m_dics->setAddFluidChannelSelectorValve(false); |
|
|
m_dics->setAddFluidChannelSelectorValve(false); |
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
m_dics->setAddFluidChannelSelectorValve(true); |
|
|
|
|
|
m_dics->AddLiquidPump_drainLiquid(); |
|
|
|
|
|
logger->info("startDraining "); |
|
|
|
|
|
|
|
|
|
|
|
auto startdrainingtime = zsteady_clock().now(); |
|
|
|
|
|
|
|
|
|
|
|
zsteady_tp volumeReachZeroTime; |
|
|
|
|
|
bool volumeReachZeroFlag = false; |
|
|
|
|
|
|
|
|
|
|
|
while (!thisThread.getExitFlag()) { |
|
|
|
|
|
int32_t nowvolume = m_dwus->getWeight(); |
|
|
|
|
|
logger->info("draining remain {} g", nowvolume); |
|
|
|
|
|
if (!volumeReachZeroFlag && nowvolume <= 0) { |
|
|
|
|
|
volumeReachZeroTime = zsteady_clock().now(); |
|
|
|
|
|
volumeReachZeroFlag = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (m_dics->WaterSensor_readDeviceBottom()) { |
|
|
|
|
|
AppEventBus::ins()->push(make_shared<AppWarningPromoptEvent>(err::kappe_the_bottom_of_the_device_has_water)); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (volumeReachZeroFlag) { |
|
|
|
|
|
logger->info("stopDraining after {} s", DRAINLIQUID_EXT_TIME_S - zsteady_clock().elapsedTimeS(volumeReachZeroTime)); |
|
|
|
|
|
if (zsteady_clock().elapsedTimeS(volumeReachZeroTime) > DRAINLIQUID_EXT_TIME_S) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
thisThread.sleepForMs(500); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
logger->info("stopDraining"); |
|
|
|
|
|
m_dics->AddLiquidPump_stop(); |
|
|
|
|
|
thisThread.sleepForMs(1000); |
|
|
|
|
|
m_dics->setAddFluidChannelSelectorValve(false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void DrainLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { cxt->rely = getState(); } |
|
|
void DrainLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { cxt->rely = getState(); } |
|
|