diff --git a/iflytoplinuxsdk b/iflytoplinuxsdk index b2d320b..7ca258a 160000 --- a/iflytoplinuxsdk +++ b/iflytoplinuxsdk @@ -1 +1 @@ -Subproject commit b2d320b95091d412071bc7ed3d860d88e3cf4fbe +Subproject commit 7ca258a854b1d07cf4764b9b3dc3e8f482302337 diff --git a/src/main_control_service.cpp b/src/main_control_service.cpp index 347c382..c87737b 100644 --- a/src/main_control_service.cpp +++ b/src/main_control_service.cpp @@ -284,6 +284,29 @@ void MainControlService::processFrontEndMessage(weak_ptr webSocket, j return; } + if (cmdstr == "updateDate") { +#if 0 +{ + "command":"updateDate", + "messageId":"1111222333444555", + "year":2023, + "month":8, + "day":25, + "hour":11, + "min":12, + "second":13, +} +#endif + int32_t year = jsonGet(cmd["year"]); + int32_t month = jsonGet(cmd["month"]); + int32_t day = jsonGet(cmd["day"]); + int32_t hour = jsonGet(cmd["hour"]); + int32_t min = jsonGet(cmd["min"]); + int32_t second = jsonGet(cmd["second"]); + logger->info("updateDate {} {} {} {}:{}:{}", year, month, day, hour, min, second); + return; + } + /******************************************************************************* * 消毒相关指令 * *******************************************************************************/ @@ -300,6 +323,14 @@ void MainControlService::processFrontEndMessage(weak_ptr webSocket, j return; } + if (cmdstr == "pauseDisinfection") { + m_disinfectionCtrlService->pauseDisinfection(); + return; + } + if (cmdstr == "continueDisinfection") { + m_disinfectionCtrlService->continueDisinfection(); + return; + } #if 0 //开始加液 { @@ -347,10 +378,15 @@ void MainControlService::processFrontEndMessage(weak_ptr webSocket, j * getState * *******************************************************************************/ if (cmdstr == "getState") { - receipt["state"]["isLogin"] = m_deviceStateService->isLogin(); - receipt["state"]["loginuser"] = m_deviceStateService->getLoginUid(); - receipt["state"]["permissionLevel"] = m_deviceStateService->getLoginPermissionLevel(); - receipt["state"]["workState"] = m_disinfectionCtrlService->isDisinfectionRunning(); + receipt["state"]["isLogin"] = m_deviceStateService->isLogin(); + receipt["state"]["loginuser"] = m_deviceStateService->getLoginUid(); + receipt["state"]["permissionLevel"] = m_deviceStateService->getLoginPermissionLevel(); + // receipt["state"]["workState"] = m_disinfectionCtrlService->isDisinfectionRunning(); + + receipt["state"]["disinfectionWorkState"] = m_disinfectionCtrlService->getDisinfectionWorkState(); + receipt["state"]["replenishingFluidsWorkState"] = m_disinfectionCtrlService->getReplenishingFluidsWorkState(); + receipt["state"]["drainingWorkState"] = m_disinfectionCtrlService->getDrainingWorkState(); + receipt["state"]["estimatedRemainingTimeS"] = m_disinfectionCtrlService->getEstimatedRemainingTimeS(); receipt["state"]["disinfection_id"] = m_disinfectionCtrlService->getDisinfectionID(); receipt["state"]["sensor_data"] = createSensorDataJson(); diff --git a/src/service/disinfection_ctl_service.cpp b/src/service/disinfection_ctl_service.cpp index 73bbeb1..a9a0cfe 100644 --- a/src/service/disinfection_ctl_service.cpp +++ b/src/service/disinfection_ctl_service.cpp @@ -35,8 +35,22 @@ void DisinfectionCtrlService::startDisinfection(int loglevel, float roomVol) { } m_disinfectionID = createDisinfectionID(); - m_remaintime = 100; + m_remaintime = 20 * 60; m_isDisinfectionRunning = true; + logger->info("startDisinfection {} {} {}", loglevel, roomVol, m_disinfectionID); + m_drainingWorkState = 1; + + m_zcanHost->writeio(0, 1); + m_zcanHost->writeio(1, 1); + sleep(1); + m_zcanHost->writeio(2, 1); + m_zcanHost->writeio(3, 1); + sleep(1); + m_zcanHost->writeio(4, 1); + m_zcanHost->writeio(5, 1); + sleep(1); + m_zcanHost->pumpctrl_c1004(2, 300, 1000); + m_disinfectionThread.reset(new Thread("m_disinfectionThread", [this, loglevel]() { // do something // m_disinfectionThread->detach(); @@ -58,6 +72,13 @@ void DisinfectionCtrlService::startDisinfection(int loglevel, float roomVol) { { m_isDisinfectionRunning = false; } })); } + +int DisinfectionCtrlService::getDisinfectionWorkState() { return m_disinfectionWorkState; } +int DisinfectionCtrlService::getReplenishingFluidsWorkState() { return m_replenishingFluidsWorkState; } +int DisinfectionCtrlService::getDrainingWorkState() { return m_drainingWorkState; } + +void DisinfectionCtrlService::pauseDisinfection() { m_drainingWorkState = 2; } +void DisinfectionCtrlService::continueDisinfection() { m_drainingWorkState = 1; } void DisinfectionCtrlService::stopDisinfection() { lock_guard lock(lock_); @@ -67,6 +88,18 @@ void DisinfectionCtrlService::stopDisinfection() { } m_remaintime = 0; logger->info("stop disinfection {}", m_disinfectionID); + + m_zcanHost->writeio(0, 0); + m_zcanHost->writeio(1, 0); + sleep(1); + m_zcanHost->writeio(2, 0); + m_zcanHost->writeio(3, 0); + sleep(1); + m_zcanHost->writeio(4, 0); + m_zcanHost->writeio(5, 0); + sleep(1); + m_zcanHost->pumpctrl_c1004(2, 300, 0); + m_drainingWorkState = 0; } bool DisinfectionCtrlService::isDisinfectionRunning() { lock_guard lock(lock_); @@ -82,8 +115,24 @@ string DisinfectionCtrlService::getDisinfectionID() { return m_disinfectionID; } -void DisinfectionCtrlService::startReplenishingFluids() {} -void DisinfectionCtrlService::stopReplenishingFluids() {} +void DisinfectionCtrlService::startReplenishingFluids() { + logger->info("startReplenishingFluids"); + m_zcanHost->pumpctrl_c1004(1, 300, 1000); + m_replenishingFluidsWorkState = 1; +} +void DisinfectionCtrlService::stopReplenishingFluids() { + logger->info("stopReplenishingFluids"); + m_zcanHost->pumpctrl_c1004(1, 300, 0); + m_replenishingFluidsWorkState = 0; +} -void DisinfectionCtrlService::startDraining() {} -void DisinfectionCtrlService::stopDraining() {} +void DisinfectionCtrlService::startDraining() { + logger->info("startDraining"); + m_zcanHost->pumpctrl_c1004(1, 300, -1000); + m_replenishingFluidsWorkState = 1; +} +void DisinfectionCtrlService::stopDraining() { + logger->info("stopDraining"); + m_zcanHost->pumpctrl_c1004(1, 300, 0); + m_replenishingFluidsWorkState = 0; +} diff --git a/src/service/disinfection_ctl_service.hpp b/src/service/disinfection_ctl_service.hpp index 921052b..d1a49d0 100644 --- a/src/service/disinfection_ctl_service.hpp +++ b/src/service/disinfection_ctl_service.hpp @@ -43,6 +43,10 @@ class DisinfectionCtrlService : public enable_shared_from_this m_zcanHost; public: @@ -57,6 +61,12 @@ class DisinfectionCtrlService : public enable_shared_from_this