From 69aaba4660693f1d3265117b83a1f93e4eb3d152 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 25 May 2024 04:30:01 +0800 Subject: [PATCH] v7.0 --- src/api/cmds/device_state_cmd_impl.cpp | 5 +-- src/api/cmds/selftest_cmd_impl.cpp | 17 ++++++++++ src/api/cmds/selftest_cmd_impl.hpp | 2 ++ src/service/device_io_control_service.cpp | 39 ++++++++++++++++++++++ src/service/device_io_control_service.hpp | 5 ++- src/service/device_io_control_service_test.cpp | 7 ++-- src/service/device_io_control_service_test.hpp | 1 + .../disfection_ctl/disinfection_service.cpp | 4 +-- src/service/if_devoce_io_contrl_service.hpp | 4 +-- src/version.hpp | 2 +- 10 files changed, 74 insertions(+), 12 deletions(-) diff --git a/src/api/cmds/device_state_cmd_impl.cpp b/src/api/cmds/device_state_cmd_impl.cpp index 7b601f9..cc10c2b 100644 --- a/src/api/cmds/device_state_cmd_impl.cpp +++ b/src/api/cmds/device_state_cmd_impl.cpp @@ -36,9 +36,10 @@ json DeviceStateCmdImpl::createSensorDataJson() { report["heatingStrip"]["currentVal"] = m_deviceIoControlService->heatingStrip_getcurrentValue(); report["sprinklerPumpRPM"] = m_deviceIoControlService->sprayLiquidPump_getRPM(); - report["chargingPumpRPM"] = m_deviceIoControlService->sprayLiquidPump_getRPM(); - report["sprinklerPumpGPM"] = m_deviceIoControlService->sprayLiquidPump_getGPM(); + + report["chargingPumpRPM"] = m_deviceIoControlService->replenishingFluidsPump_getRPM(); + // report["chargingPumpGPM"] = m_deviceIoControlService->getChargingPump_PumpGPM(); report["waterImmersionSensor1"] = m_deviceIoControlService->getDeviceBottomWaterDetectionSensor(); diff --git a/src/api/cmds/selftest_cmd_impl.cpp b/src/api/cmds/selftest_cmd_impl.cpp index 9c1edf0..797b55d 100644 --- a/src/api/cmds/selftest_cmd_impl.cpp +++ b/src/api/cmds/selftest_cmd_impl.cpp @@ -18,6 +18,9 @@ void SelfTestCmdImpl::initialize() { m_msgProcesser->registerMsgProcesser("selftest_setH2O2Val", bind(&SelfTestCmdImpl::selfTest_setH2O2Val, shared_from_this(), placeholders::_1, placeholders::_2)); m_msgProcesser->registerMsgProcesser("selftest_setDeviceBottomWaterDetectionSensor", bind(&SelfTestCmdImpl::selfTest_setDeviceBottomWaterDetectionSensor, shared_from_this(), placeholders::_1, placeholders::_2)); m_msgProcesser->registerMsgProcesser("selftest_setEvaporationBinWaterDetection", bind(&SelfTestCmdImpl::selfTest_setEvaporationBinWaterDetection, shared_from_this(), placeholders::_1, placeholders::_2)); + + // updateFakeSensorState + m_msgProcesser->registerMsgProcesser("updateFakeSensorState", bind(&SelfTestCmdImpl::updateFakeSensorState, shared_from_this(), placeholders::_1, placeholders::_2)); } void SelfTestCmdImpl::selfTest_setH2O2Val(json& cmd, json& receipt) { // @@ -70,3 +73,17 @@ void SelfTestCmdImpl::selfTest_setEvaporationBinWaterDetection(json& cmd, json& p->selfTest_setEvaporationBinWaterDetection(val); #endif } + +void SelfTestCmdImpl::updateFakeSensorState(json& cmd, json& receipt) { + // virtual bool H2O2Sensor_updateFakeVal(int32_t sensorid, bool enable, int32_t h2o2, int32_t humid, int32_t temp, int32_t saturation) { return true; } + + // m_deviceIoControlService->updateFakeSensorState(cmd, receipt); + int32_t sensorid = cmd["params"]["sensorid"]; + bool enable = cmd["params"]["enable"]; + int32_t h2o2 = cmd["params"]["h2o2"]; + int32_t humid = cmd["params"]["humid"]; + int32_t temp = cmd["params"]["temp"]; + int32_t sat = cmd["params"]["sat"]; + + m_deviceIoControlService->H2O2Sensor_updateFakeVal(sensorid, enable, h2o2, humid, temp, sat); +} diff --git a/src/api/cmds/selftest_cmd_impl.hpp b/src/api/cmds/selftest_cmd_impl.hpp index 7407c2e..aa9335a 100644 --- a/src/api/cmds/selftest_cmd_impl.hpp +++ b/src/api/cmds/selftest_cmd_impl.hpp @@ -53,6 +53,8 @@ class SelfTestCmdImpl : public enable_shared_from_this { void selfTest_setDeviceBottomWaterDetectionSensor(json& cmd, json& receipt); void selfTest_setEvaporationBinWaterDetection(json& cmd, json& receipt); + void updateFakeSensorState(json& cmd, json& receipt); + private: }; } // namespace iflytop \ No newline at end of file diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 5c21907..7025584 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -255,10 +255,31 @@ void DeviceIoControlService::processReportPacket(uint8_t* packet, size_t len) { /******************************************************************************* * H2O2 * *******************************************************************************/ +bool fake_sensor_val_enable[10] = {false}; +int32_t fake_sensor_val_h2o2[10]; +int32_t fake_sensor_val_humid[10]; +int32_t fake_sensor_val_temp[10]; +int32_t fake_sensor_val_saturation[10]; +bool fake_sensor_val_sensorstate[10]; + +bool DeviceIoControlService::H2O2Sensor_updateFakeVal(int32_t sensorid, bool enable, int32_t h2o2, int32_t humid, int32_t temp, int32_t saturation) { + if (sensorid >= MAX_H2O2_SENSOR_NUM) return false; + fake_sensor_val_enable[sensorid] = enable; + fake_sensor_val_h2o2[sensorid] = h2o2; + fake_sensor_val_humid[sensorid] = humid; + fake_sensor_val_temp[sensorid] = temp; + fake_sensor_val_saturation[sensorid] = saturation; + return true; +} + bool DeviceIoControlService::H2O2Sensor_readSensorState(int32_t sensorid) { std::lock_guard lck(m_h2o2_sensor_data_lock_); if (sensorid >= MAX_H2O2_SENSOR_NUM) return false; + if (fake_sensor_val_enable[sensorid]) { + return fake_sensor_val_sensorstate[sensorid]; + } + h2o2_sensor_data_t* data = &m_h2o2_sensor_data[sensorid]; if (zsys_haspassedms(data->updatetime) > 10 * 1000) return false; return true; @@ -268,6 +289,10 @@ int32_t DeviceIoControlService::H2O2Sensor_readH2O2PPM(int32_t sensorid) { std::lock_guard lck(m_h2o2_sensor_data_lock_); if (sensorid >= MAX_H2O2_SENSOR_NUM) return -1; + if (fake_sensor_val_enable[sensorid]) { + return fake_sensor_val_h2o2[sensorid]; + } + h2o2_sensor_data_t* data = &m_h2o2_sensor_data[sensorid]; if (data->updatetime == 0) return -1; @@ -284,6 +309,10 @@ int32_t DeviceIoControlService::H2O2Sensor_readHumid(int32_t sensorid) { std::lock_guard lck(m_h2o2_sensor_data_lock_); if (sensorid >= MAX_H2O2_SENSOR_NUM) return -1; + if (fake_sensor_val_enable[sensorid]) { + return fake_sensor_val_humid[sensorid]; + } + h2o2_sensor_data_t* data = &m_h2o2_sensor_data[sensorid]; if (data->updatetime == 0) return -1; @@ -295,6 +324,10 @@ int32_t DeviceIoControlService::H2O2Sensor_readTemperature(int32_t sensorid) { std::lock_guard lck(m_h2o2_sensor_data_lock_); if (sensorid >= MAX_H2O2_SENSOR_NUM) return -1; + if (fake_sensor_val_enable[sensorid]) { + return fake_sensor_val_temp[sensorid]; + } + h2o2_sensor_data_t* data = &m_h2o2_sensor_data[sensorid]; if (data->updatetime == 0) return -1; @@ -306,6 +339,10 @@ int32_t DeviceIoControlService::H2O2Sensor_readSaturation(int32_t sensorid) { std::lock_guard lck(m_h2o2_sensor_data_lock_); if (sensorid >= MAX_H2O2_SENSOR_NUM) return -1; + if (fake_sensor_val_enable[sensorid]) { + return fake_sensor_val_saturation[sensorid]; + } + h2o2_sensor_data_t* data = &m_h2o2_sensor_data[sensorid]; if (data->updatetime == 0) return -1; @@ -515,6 +552,8 @@ void DeviceIoControlService::replenishingFluidsPump_close() { m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20); } +int DeviceIoControlService::replenishingFluidsPump_getRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(1); } + void DeviceIoControlService::replenishingFluidsPump_open_for_test(int gpm) { logger->info("replenishingFluidsPump_open_for_test {}", gpm); int speed = replenishingFluidsPump_GPM2RPM(gpm); diff --git a/src/service/device_io_control_service.hpp b/src/service/device_io_control_service.hpp index df5d015..19409c0 100644 --- a/src/service/device_io_control_service.hpp +++ b/src/service/device_io_control_service.hpp @@ -113,6 +113,8 @@ class DeviceIoControlService : public IF_DeviceIoContrlService { virtual int32_t H2O2Sensor_readSaturation(int32_t sensorid) override; virtual bool H2O2Sensor_readSensorState(int32_t sensorid) override; + virtual bool H2O2Sensor_updateFakeVal(int32_t sensorid, bool enable, int32_t h2o2, int32_t humid, int32_t temp, int32_t saturation) override; + private: void H2O2Sensor_updateSensorData(int32_t sensorid, report_h2o2_data_t* data); @@ -126,7 +128,7 @@ class DeviceIoControlService : public IF_DeviceIoContrlService { virtual void sprayLiquidPump_open_for_test(int gpm) override; virtual void sprayLiquidPump_close_for_test() override; - virtual int getPressureSensorData(int index) override; + virtual int getPressureSensorData(int index) override; public: #if (defined PROJECT_TYPE_LARGE_SPACE_DISINFECTION) || (defined PROJECT_TYPE_SMALL_SPACE_DISINFECTION) || (defined PROJECT_TYPE_PIPE_DISINFECTION) @@ -179,6 +181,7 @@ class DeviceIoControlService : public IF_DeviceIoContrlService { virtual void replenishingFluidsPump_open_for_test(int speed) override; virtual void replenishingFluidsPump_close_for_test() override; + virtual int replenishingFluidsPump_getRPM() override; /****************************************************************************** * 水浸传感器 * diff --git a/src/service/device_io_control_service_test.cpp b/src/service/device_io_control_service_test.cpp index 5a5905f..40cd8eb 100644 --- a/src/service/device_io_control_service_test.cpp +++ b/src/service/device_io_control_service_test.cpp @@ -100,8 +100,7 @@ int DeviceIoControlServiceTest::sprayLiquidPump_getGPM() { return sprayLiquidPu void DeviceIoControlServiceTest::sprayLiquidPump_open_for_test(int gpm) { sprayLiquidPump_rpm = gpm; } void DeviceIoControlServiceTest::sprayLiquidPump_close_for_test() { sprayLiquidPump_rpm = 0; } -int DeviceIoControlServiceTest::getPressureSensorData(int index) { return rand()%1000; } // g - +int DeviceIoControlServiceTest::getPressureSensorData(int index) { return rand() % 1000; } // g /******************************************************************************* * 加热片控制 * @@ -176,7 +175,7 @@ void DeviceIoControlServiceTest::replenishingFluidsPump_open(int32_t rpm) { drai void DeviceIoControlServiceTest::replenishingFluidsPump_close() { drainingPump_rpm = 0; } void DeviceIoControlServiceTest::replenishingFluidsPump_open_for_test(int speed) { drainingPump_rpm = speed; } void DeviceIoControlServiceTest::replenishingFluidsPump_close_for_test() { drainingPump_rpm = 0; } - +int DeviceIoControlServiceTest::replenishingFluidsPump_getRPM() { return drainingPump_rpm; } /****************************************************************************** * 水浸传感器 * @@ -196,7 +195,7 @@ void DeviceIoControlServiceTest::selfTest_setEvaporationBinWaterDetection(int va evaporationBinWaterDetection = val; } -int DeviceIoControlServiceTest::getDisinfectantVolume_g() { return 800; } // g +int DeviceIoControlServiceTest::getDisinfectantVolume_g() { return 800; } // g void DeviceIoControlServiceTest::warningLightCtrl(int r, int g, int b, int w) { logger->info("warningLightCtrl r:{} g:{} b:{} w:{}", r, g, b, w); } #endif diff --git a/src/service/device_io_control_service_test.hpp b/src/service/device_io_control_service_test.hpp index 46d8c48..6a55489 100644 --- a/src/service/device_io_control_service_test.hpp +++ b/src/service/device_io_control_service_test.hpp @@ -109,6 +109,7 @@ class DeviceIoControlServiceTest : public IF_DeviceIoContrlService { virtual void replenishingFluidsPump_close() override; virtual void replenishingFluidsPump_open_for_test(int speed) override; virtual void replenishingFluidsPump_close_for_test() override; + virtual int replenishingFluidsPump_getRPM() override; /****************************************************************************** * 水浸传感器 * diff --git a/src/service/disfection_ctl/disinfection_service.cpp b/src/service/disfection_ctl/disinfection_service.cpp index 3338b1d..1046351 100644 --- a/src/service/disfection_ctl/disinfection_service.cpp +++ b/src/service/disfection_ctl/disinfection_service.cpp @@ -583,7 +583,7 @@ void DisinfectionService::pauseDisinfection() { #if (defined PROJECT_TYPE_LARGE_SPACE_DISINFECTION) || (defined PROJECT_TYPE_SMALL_SPACE_DISINFECTION) || (defined PROJECT_TYPE_PIPE_DISINFECTION) m_deviceIoControlService->airCompressor_setState(false); #elif (defined PROJECT_TYPE_DRAW_BAR_BOX) - m_deviceIoControlService->DBDB__miniPwmBlowerCtrl(0); + m_deviceIoControlService->DBDB__sprayAirCompressorPowerCtrl(0); #endif context.is_disinfection_take_break = true; @@ -596,7 +596,7 @@ void DisinfectionService::resumeDisinfection() { #if (defined PROJECT_TYPE_LARGE_SPACE_DISINFECTION) || (defined PROJECT_TYPE_SMALL_SPACE_DISINFECTION) || (defined PROJECT_TYPE_PIPE_DISINFECTION) m_deviceIoControlService->airCompressor_setState(true); #elif (defined PROJECT_TYPE_DRAW_BAR_BOX) - m_deviceIoControlService->DBDB__miniPwmBlowerCtrl(0); + m_deviceIoControlService->DBDB__sprayAirCompressorPowerCtrl(1); #endif context.is_disinfection_take_break = false; } diff --git a/src/service/if_devoce_io_contrl_service.hpp b/src/service/if_devoce_io_contrl_service.hpp index d520215..3052e4d 100644 --- a/src/service/if_devoce_io_contrl_service.hpp +++ b/src/service/if_devoce_io_contrl_service.hpp @@ -66,6 +66,7 @@ class IF_DeviceIoContrlService { virtual int32_t H2O2Sensor_readSaturation(int32_t sensorid) = 0; virtual bool H2O2Sensor_readSensorState(int32_t sensorid) = 0; + virtual bool H2O2Sensor_updateFakeVal(int32_t sensorid, bool enable, int32_t h2o2, int32_t humid, int32_t temp, int32_t saturation) { return true; } // 喷液泵 virtual void sprayLiquidPump_open(int gpm) = 0; @@ -121,6 +122,7 @@ class IF_DeviceIoContrlService { virtual void replenishingFluidsPump_close() = 0; virtual void replenishingFluidsPump_open_for_test(int speed) = 0; virtual void replenishingFluidsPump_close_for_test() = 0; + virtual int replenishingFluidsPump_getRPM() = 0; /****************************************************************************** * 水浸传感器 * @@ -133,8 +135,6 @@ class IF_DeviceIoContrlService { ******************************************************************************/ virtual int getDisinfectantVolume_g() = 0; // g - - /******************************************************************************* * 报警指示灯 * *******************************************************************************/ diff --git a/src/version.hpp b/src/version.hpp index b938f84..9077550 100644 --- a/src/version.hpp +++ b/src/version.hpp @@ -1,2 +1,2 @@ #pragma once -#define VERSION "6.6" \ No newline at end of file +#define VERSION "7.0" \ No newline at end of file