From 9dd9dbfe74267ed056b86edcd454e5382c233b1d Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 8 Jun 2024 19:05:12 +0800 Subject: [PATCH] update --- .../step_motor_ctrl_module.cpp | 2 +- .../water_cooling_temperature_control_module.cpp | 109 ++++++++------------- .../water_cooling_temperature_control_module.hpp | 7 -- 3 files changed, 41 insertions(+), 77 deletions(-) diff --git a/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp b/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp index 196a4f9..aa0ef6b 100644 --- a/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp +++ b/components/step_motor_ctrl_module/step_motor_ctrl_module.cpp @@ -521,7 +521,7 @@ int32_t StepMotorCtrlModule::module_clear_error() { * @brief * 驱动器大部分的错误,在不重启的情况下,是无法清除的。module_clear_error这里不生效 */ - return 0; + return err::kcmd_not_support; } int32_t StepMotorCtrlModule::check_befor_run() { diff --git a/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp b/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp index c46a0d6..0565795 100644 --- a/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp +++ b/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.cpp @@ -6,14 +6,6 @@ using namespace iflytop; #define TAG "WCTCM" - -#define ACTION_TEST_PELTIER_SET_POWER_LEVEL 1 -#define ACTION_TEST_PUMP_SET_LEVEL 2 -#define ACTION_TEST_FAN_SET_LEVEL 3 -#define ACTION_TEST_DUMP_DC_MOTOR_STATE 4 -#define ACTION_TEST_ENABLE_LOG 5 -#define ACTION_TEST_DISABLE_LOG 6 - static int32_t prvabs(int32_t v) { if (v < 0) { return -v; @@ -52,13 +44,6 @@ int32_t WaterCoolingTemperatureControlModule::getid(int32_t* id) { *id = m_id; return 0; } -int32_t WaterCoolingTemperatureControlModule::module_clear_error() { - creg.module_errorcode = 0; - m_fan_ctrl->clearError(); - m_pelter_ctrl->clearError(); - m_pump_ctrl->clearError(); - return 0; -} void WaterCoolingTemperatureControlModule::createDefaultConfig(config_t* cfg) { cfg->fanlevel = 90; @@ -90,10 +75,10 @@ int32_t WaterCoolingTemperatureControlModule::module_xxx_reg(int32_t param_id, b PROCESS_REG(kreg_water_cooling_tmp_controler_pid_nowoutput, REG_GET(m_pidmodule.get_output()), ACTION_NONE); PROCESS_REG(kreg_water_cooling_tmp_controler_pid_feedbackval, REG_GET(read_pid_temperature()), ACTION_NONE); - PROCESS_REG(kreg_water_cooling_tmp_controler_temp0, REG_GET(getTemperatureSensorVal(0) * 100), ACTION_NONE); - PROCESS_REG(kreg_water_cooling_tmp_controler_temp1, REG_GET(getTemperatureSensorVal(1) * 100), ACTION_NONE); - PROCESS_REG(kreg_water_cooling_tmp_controler_temp2, REG_GET(getTemperatureSensorVal(2) * 100), ACTION_NONE); - PROCESS_REG(kreg_water_cooling_tmp_controler_temp3, REG_GET(getTemperatureSensorVal(3) * 100), ACTION_NONE); + PROCESS_REG(kreg_water_cooling_tmp_controler_temp0, REG_GET(getTemperatureSensorVal(0) * 10 + 0.5), ACTION_NONE); + PROCESS_REG(kreg_water_cooling_tmp_controler_temp1, REG_GET(getTemperatureSensorVal(1) * 10 + 0.5), ACTION_NONE); + PROCESS_REG(kreg_water_cooling_tmp_controler_temp2, REG_GET(getTemperatureSensorVal(2) * 10 + 0.5), ACTION_NONE); + PROCESS_REG(kreg_water_cooling_tmp_controler_temp3, REG_GET(getTemperatureSensorVal(3) * 10 + 0.5), ACTION_NONE); default: return err::kmodule_not_find_reg; @@ -102,11 +87,6 @@ int32_t WaterCoolingTemperatureControlModule::module_xxx_reg(int32_t param_id, b if (!read) module_active_cfg(); return 0; } - -int32_t WaterCoolingTemperatureControlModule::module_get_status(int32_t* status) { - *status = getworkstate(); - return 0; -} int32_t WaterCoolingTemperatureControlModule::gettemperature_sensor_state(int32_t& state) { for (int32_t i = 0; i < m_n_temperature_sensor; i++) { state |= m_temperature_sensor[i]->isOnline() << i; @@ -126,13 +106,27 @@ int32_t WaterCoolingTemperatureControlModule::module_active_cfg() { } int32_t WaterCoolingTemperatureControlModule::temp_controler_start_hearting(int32_t targetTemperature) { m_thread.stop(); - module_clear_error(); - ZLOGI(TAG, "module_start"); + if (creg.m_module_status == 2) { + ZLOGE(TAG, "module is in error state, can not start"); + return creg.module_errorcode; + } + + ZLOGI(TAG, "temp_controler_start_hearting %d", targetTemperature); + m_target_temperature = targetTemperature * 10; + creg.m_module_status = 1; + + m_fan_ctrl->clearError(); + m_pelter_ctrl->clearError(); + m_pump_ctrl->clearError(); + + module_active_cfg(); + m_thread.start([this]() { workloop(); }); return 0; } int32_t WaterCoolingTemperatureControlModule::temp_controler_stop_hearting() { m_thread.stop(); + creg.m_module_status = 0; return 0; } int32_t WaterCoolingTemperatureControlModule::module_stop() { return temp_controler_stop_hearting(); } @@ -192,51 +186,28 @@ void WaterCoolingTemperatureControlModule::workloop() { #define BIT(x, n) ((x >> n) & 0x01) -int32_t WaterCoolingTemperatureControlModule::getworkstate() { - if (creg.module_errorcode != 0) { - return 2; - } - if (!m_thread.isworking()) { - return 0; - } else { - return 1; - } -} - -int32_t WaterCoolingTemperatureControlModule::geterrorbitflag0() { - /** - * @brief - */ - ZITemperatureSensor* sensor = m_temperature_sensor[m_hardwared_config.temp_fb_index]; - - int32_t errorbitflag = 0; - errorbitflag |= m_fan_ctrl->isError() << 0; - errorbitflag |= m_pump_ctrl->isError() << 1; - errorbitflag |= m_pelter_ctrl->isError() << 2; - errorbitflag |= sensor->isError() << 3; - - // if (m_fanTable[1]) errorbitflag |= m_fanTable[1]->isError() << 1; - // if (m_fanTable[2]) errorbitflag |= m_fanTable[2]->isError() << 2; - // if (m_fanTable[3]) errorbitflag |= m_fanTable[3]->isError() << 3; - - // if (m_pump) errorbitflag |= m_pump->isError() << 4; - - // if (m_peltier_ctrl[0]) errorbitflag |= m_peltier_ctrl[0]->isFault() << 8; - // if (m_peltier_ctrl[1]) errorbitflag |= m_peltier_ctrl[1]->isFault() << 9; - return errorbitflag; -} int32_t WaterCoolingTemperatureControlModule::checkdevice() { - uint32_t module_errorbitflag0 = geterrorbitflag0(); - if (module_errorbitflag0 != 0) { - ZLOGE(TAG, "checkdevice errorbitflag0:%d %d %d %d", // - BIT(module_errorbitflag0, 0), // - BIT(module_errorbitflag0, 1), // - BIT(module_errorbitflag0, 2), // - BIT(module_errorbitflag0, 3)); - m_pelter_ctrl->dumpErrorInfo(); - // TODO 设置错误码 - // creg.module_errorcode = err::khwardware_error; + ZITemperatureSensor* sensor = m_temperature_sensor[m_hardwared_config.temp_fb_index]; + if (m_fan_ctrl->isError()) { + ZLOGE(TAG, "fan_ctrl is error"); + creg.module_errorcode = err::kwater_cooling_fan_error; + creg.m_module_status = 2; + return 1; + } else if (m_pump_ctrl->isError()) { + ZLOGE(TAG, "pump_ctrl is error"); + creg.module_errorcode = err::kwater_cooling_pump_is_error; + creg.m_module_status = 2; + return 1; + } else if (m_pelter_ctrl->isError()) { + ZLOGE(TAG, "pelter_ctrl is error"); + creg.module_errorcode = err::kwater_cooling_temperature_sensor_error; + creg.m_module_status = 2; + return 1; + } else if (sensor->isError()) { + creg.module_errorcode = err::kwater_cooling_temperature_sensor_error; + creg.m_module_status = 2; + ZLOGE(TAG, "sensor is error"); return 1; } return 0; diff --git a/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp b/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp index 3fcf2e1..4407741 100644 --- a/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp +++ b/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module.hpp @@ -82,9 +82,7 @@ class WaterCoolingTemperatureControlModule : public ZIModule, public ZI_WaterCoo void initialize(int32_t id, config_t* cfg, hardwared_config_t* hardwaredconfig); virtual int32_t getid(int32_t* id) override; - virtual int32_t module_get_status(int32_t* status) override; virtual int32_t module_active_cfg() override; - virtual int32_t module_clear_error() override; virtual int32_t module_stop() override; virtual int32_t temp_controler_start_hearting(int32_t targetTemperature) override; @@ -110,12 +108,7 @@ class WaterCoolingTemperatureControlModule : public ZIModule, public ZI_WaterCoo void geterrorcode(); private: - int32_t getworkstate(); - int32_t geterrorbitflag0(); - int32_t geterrorbitflag1(); - int32_t gettemperature_sensor_state(int32_t& state); - float getTemperatureSensorVal(int32_t index); };