|
@ -18,6 +18,8 @@ void AddLiquidService::initialize() { |
|
|
REG_EXTFN_VOID(stop, void()); |
|
|
REG_EXTFN_VOID(stop, void()); |
|
|
REG_EXTFN_VOID(getState, void()); |
|
|
REG_EXTFN_VOID(getState, void()); |
|
|
REG_EXTFN_VOID(getServiceConfig, void()); |
|
|
REG_EXTFN_VOID(getServiceConfig, void()); |
|
|
|
|
|
REG_EXTFN_VOID(startStateReport, void()); |
|
|
|
|
|
REG_EXTFN_VOID(stopStateReport, void()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void AddLiquidService::start(int stopatg) { |
|
|
void AddLiquidService::start(int stopatg) { |
|
@ -30,7 +32,6 @@ void AddLiquidService::start(int stopatg) { |
|
|
THROW_APP_EXCEPTION(getDeviceBusyReason(nowstate), ""); |
|
|
THROW_APP_EXCEPTION(getDeviceBusyReason(nowstate), ""); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (zsteady_clock().gets() < SENSOR_PREHEART_TIME_S) { |
|
|
if (zsteady_clock().gets() < SENSOR_PREHEART_TIME_S) { |
|
|
THROW_APP_EXCEPTION(err::kappe_sensor_is_pre_hearting, ""); |
|
|
THROW_APP_EXCEPTION(err::kappe_sensor_is_pre_hearting, ""); |
|
|
} |
|
|
} |
|
@ -143,11 +144,6 @@ AddLiquidService::state_t AddLiquidService::getWorkstate() { return m_workstate; |
|
|
|
|
|
|
|
|
void AddLiquidService::start(shared_ptr<MsgProcessContext> cxt, int stopatg) { start(stopatg); } |
|
|
void AddLiquidService::start(shared_ptr<MsgProcessContext> cxt, int stopatg) { start(stopatg); } |
|
|
void AddLiquidService::stop(shared_ptr<MsgProcessContext> cxt) { stop(); } |
|
|
void AddLiquidService::stop(shared_ptr<MsgProcessContext> cxt) { stop(); } |
|
|
void AddLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { //
|
|
|
|
|
|
cxt->rely["workState"] = state2str(getWorkstate()); |
|
|
|
|
|
cxt->rely["workStateDisplay"] = state2chstr(getWorkstate()); |
|
|
|
|
|
cxt->rely["nowLiquid"] = m_dwus->getWeight(); |
|
|
|
|
|
} |
|
|
|
|
|
void AddLiquidService::getServiceConfig(shared_ptr<MsgProcessContext> cxt) { |
|
|
void AddLiquidService::getServiceConfig(shared_ptr<MsgProcessContext> cxt) { |
|
|
json cfg; |
|
|
json cfg; |
|
|
cfg["maxLiquid"] = PORT.getDisinfectantBucketCapacity(); |
|
|
cfg["maxLiquid"] = PORT.getDisinfectantBucketCapacity(); |
|
@ -155,3 +151,36 @@ void AddLiquidService::getServiceConfig(shared_ptr<MsgProcessContext> cxt) { |
|
|
cfg["updatePeriod"] = 300; |
|
|
cfg["updatePeriod"] = 300; |
|
|
cxt->rely = cfg; |
|
|
cxt->rely = cfg; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void AddLiquidService::getState(shared_ptr<MsgProcessContext> cxt) { cxt->rely = getState(); } |
|
|
|
|
|
|
|
|
|
|
|
void AddLiquidService::startStateReport(shared_ptr<MsgProcessContext> cxt) { |
|
|
|
|
|
if (stateUpdateThread) { |
|
|
|
|
|
stateUpdateThread->join(); |
|
|
|
|
|
stateUpdateThread = nullptr; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
stateUpdateThread.reset(new Thread("stateUpdateThread", [this]() { |
|
|
|
|
|
while (!ThisThread().getExitFlag()) { |
|
|
|
|
|
try { |
|
|
|
|
|
SEND_CLASS_REPORT(thisClass.className, "stateUpdate", getState()); |
|
|
|
|
|
} catch (const std::exception& e) { |
|
|
|
|
|
logger->error("stateUpdateThread error:{}", e.what()); |
|
|
|
|
|
} |
|
|
|
|
|
ThisThread().sleepForMs(500); |
|
|
|
|
|
} |
|
|
|
|
|
})); |
|
|
|
|
|
} |
|
|
|
|
|
void AddLiquidService::stopStateReport(shared_ptr<MsgProcessContext> cxt) { |
|
|
|
|
|
if (stateUpdateThread) { |
|
|
|
|
|
stateUpdateThread->join(); |
|
|
|
|
|
stateUpdateThread = nullptr; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
json AddLiquidService::getState() { |
|
|
|
|
|
json state; |
|
|
|
|
|
state["workState"] = state2str(getWorkstate()); |
|
|
|
|
|
state["workStateDisplay"] = state2chstr(getWorkstate()); |
|
|
|
|
|
state["nowLiquid"] = m_dwus->getWeightNoExpection(); |
|
|
|
|
|
return state; |
|
|
|
|
|
} |