From 6b6379ee4a3c2b7fc419e660293efd7a34162d8a Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 18 Nov 2023 14:39:21 +0800 Subject: [PATCH] recode --- .../water_cooling_temperature_control_module.cpp | 88 ++++------------------ .../water_cooling_temperature_control_module.hpp | 54 ++++++------- ..._cooling_temperature_control_module_factory.cpp | 0 ..._cooling_temperature_control_module_factory.hpp | 29 ------- 4 files changed, 36 insertions(+), 135 deletions(-) delete mode 100644 components/water_cooling_temperature_control_module/water_cooling_temperature_control_module_factory.cpp delete mode 100644 components/water_cooling_temperature_control_module/water_cooling_temperature_control_module_factory.hpp 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 9759028..bfdcc7a 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 @@ -9,7 +9,7 @@ using namespace iflytop; #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_FAN_SET_LEVEL 3 void WaterCoolingTemperatureControlModule::initialize(int32_t id, config_t* cfg, hardwared_config_t* hardwaredconfig) { #if 0 @@ -43,20 +43,6 @@ void WaterCoolingTemperatureControlModule::initialize(int32_t id, config_t* cfg, m_peltier_ctrl_num++; } - for (int32_t i = 0; i < ZARRAY_SIZE(hardwaredconfig->ext_input); i++) { - if (hardwaredconfig->ext_input[i].pin == PinNull) break; - ZGPIO::InputGpioCfg_t* incfg = &hardwaredconfig->ext_input[i]; - m_ext_input[i].initAsInput(incfg->pin, incfg->mode, incfg->irqtype, incfg->mirror); - m_n_ext_input++; - } - - for (int32_t i = 0; i < ZARRAY_SIZE(hardwaredconfig->ext_output); i++) { - if (hardwaredconfig->ext_output[i].pin == PinNull) break; - ZGPIO::OutputGpioCfg_t* outcfg = &hardwaredconfig->ext_output[i]; - m_ext_output[i].initAsOutput(outcfg->pin, outcfg->mode, outcfg->mirror, outcfg->initLevel); - m_n_ext_output++; - } - m_pidmodule.initialize(&cfg->pid_cfg); m_thread.init("WaterCoolingTemperatureControlModule"); m_cfg = *cfg; @@ -81,20 +67,10 @@ void WaterCoolingTemperatureControlModule::createDefaultConfig(config_t* cfg) { cfg->pid_cfg.min_integral = -100; cfg->pidcompute_periodms = 1000; } -#define SET_REG(param_id, modulereg, precision) \ - case param_id: \ - modulereg = param_value * precision; \ - break; - -#define GET_REG(param_id, modulereg, precision) \ - case param_id: \ - *param_value = modulereg / precision; \ - break; - -int32_t WaterCoolingTemperatureControlModule::module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); } -int32_t WaterCoolingTemperatureControlModule::module_get_reg(int32_t param_id, int32_t* param_value) { return module_xxx_reg(param_id, true, *param_value); } + int32_t WaterCoolingTemperatureControlModule::module_xxx_reg(int32_t param_id, bool read, int32_t& val) { switch (param_id) { + MODULE_COMMON_PROCESS_REG_CB(); PROCESS_REG(kreg_pid_kp, REG_GET_FLOAT(m_cfg.pid_cfg.kp, 0.01), REG_SET_FLOAT(m_cfg.pid_cfg.kp, 0.01)); PROCESS_REG(kreg_pid_ki, REG_GET_FLOAT(m_cfg.pid_cfg.ki, 0.01), REG_SET_FLOAT(m_cfg.pid_cfg.ki, 0.01)); PROCESS_REG(kreg_pid_kd, REG_GET_FLOAT(m_cfg.pid_cfg.kd, 0.01), REG_SET_FLOAT(m_cfg.pid_cfg.kd, 0.01)); @@ -110,25 +86,23 @@ int32_t WaterCoolingTemperatureControlModule::module_xxx_reg(int32_t param_id, b PROCESS_REG(kreg_pid_nowoutput, REG_GET(m_pidmodule.get_output()), ACTION_NONE); PROCESS_REG(kreg_pid_feedbackval, REG_GET(read_pid_temperature()), ACTION_NONE); - PROCESS_REG(kreg_module_version, REG_GET(0), ACTION_NONE); - PROCESS_REG(kreg_module_type, REG_GET(0), ACTION_NONE); - PROCESS_REG(kreg_module_status, REG_GET(getworkstate()), ACTION_NONE); - PROCESS_REG(kreg_module_errorcode, REG_GET(m_errorcode), ACTION_NONE); - PROCESS_REG(kreg_module_initflag, REG_GET(module_get_inited_flag()), ACTION_NONE); - PROCESS_REG(kreg_module_errorbitflag0, REG_GET(geterrorbitflag0()), ACTION_NONE); - PROCESS_REG(kreg_sensor_temperature0, REG_GET(getTemperatureSensorVal(0)), ACTION_NONE); PROCESS_REG(kreg_sensor_temperature1, REG_GET(getTemperatureSensorVal(1)), ACTION_NONE); PROCESS_REG(kreg_sensor_temperature2, REG_GET(getTemperatureSensorVal(2)), ACTION_NONE); PROCESS_REG(kreg_sensor_temperature3, REG_GET(getTemperatureSensorVal(3)), ACTION_NONE); - PROCESS_ACTION(); default: return err::kmodule_not_find_config_index; break; } 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; @@ -138,11 +112,11 @@ int32_t WaterCoolingTemperatureControlModule::gettemperature_sensor_state(int32_ int32_t WaterCoolingTemperatureControlModule::do_action(int32_t actioncode) { if (actioncode == ACTION_TEST_PELTIER_SET_POWER_LEVEL) { - return test_peltier_set_power_level(m_reg.module_action_param1); + return test_peltier_set_power_level(m_com_reg.module_action_param1); } else if (actioncode == ACTION_TEST_PUMP_SET_LEVEL) { - return test_pump_set_level(m_reg.module_action_param1); + return test_pump_set_level(m_com_reg.module_action_param1); } else if (actioncode == ACTION_TEST_FAN_SET_LEVEL) { - return test_fan_set_level(m_reg.module_action_param1); + return test_fan_set_level(m_com_reg.module_action_param1); } else { return err::kmodule_not_support_action; } @@ -158,7 +132,7 @@ int32_t WaterCoolingTemperatureControlModule::module_stop() { } int32_t WaterCoolingTemperatureControlModule::module_start() { m_thread.stop(); - m_errorcode = 0; + m_com_reg.module_errorcode = 0; ZLOGI(TAG, "module_start"); m_thread.start([this]() { workloop(); }); return 0; @@ -252,7 +226,7 @@ void WaterCoolingTemperatureControlModule::peltier_stop() { } int32_t WaterCoolingTemperatureControlModule::getworkstate() { - if (m_errorcode != 0) { + if (m_com_reg.module_errorcode != 0) { return 2; } @@ -283,7 +257,6 @@ int32_t WaterCoolingTemperatureControlModule::geterrorbitflag0() { if (m_peltier_ctrl[1]) errorbitflag |= m_peltier_ctrl[1]->isFault() << 9; return errorbitflag; } -int32_t WaterCoolingTemperatureControlModule::geterrorbitflag1() { return 0; } float WaterCoolingTemperatureControlModule::getTemperatureSensorVal(int32_t index) { if (index < 0 || index >= m_n_temperature_sensor) { @@ -291,39 +264,6 @@ float WaterCoolingTemperatureControlModule::getTemperatureSensorVal(int32_t inde } return m_temperature_sensor[index]->getTemperature(); } - -int32_t WaterCoolingTemperatureControlModule::module_readio(int32_t* io) { - uint32_t iostate = 0; - - for (int32_t i = 0; i < m_n_ext_input; i++) { - iostate |= m_ext_input[i].getStateUint32() << i; - } - *io = (int32_t)iostate; - return 0; -} -int32_t WaterCoolingTemperatureControlModule::module_writeio(int32_t idindex, int32_t io) { - if (idindex < 0 || idindex >= m_n_ext_output) { - return err::kparam_out_of_range; - } - m_ext_output[idindex].setState(io); - return 0; -} - -int32_t WaterCoolingTemperatureControlModule::read_input_state() { - uint32_t iostate = 0; - for (int32_t i = 0; i < m_n_ext_input; i++) { - iostate |= m_ext_input[i].getStateUint32() << i; - } - return (int32_t)iostate; -} -int32_t WaterCoolingTemperatureControlModule::read_output_io_state() { - uint32_t iostate = 0; - for (int32_t i = 0; i < m_n_ext_output; i++) { - iostate |= m_ext_output[i].getStateUint32() << i; - } - return (int32_t)iostate; -} - int32_t WaterCoolingTemperatureControlModule::test_peltier_set_power_level(int32_t level) { if (level == 0) { peltier_stop(); 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 2df01b4..f47eb4d 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 @@ -29,7 +29,25 @@ namespace iflytop { * 水冷温度控制模块 */ +#if 0 +namespace water_cooling_temperature_control { +class FanCtrlGroup { + public: +}; + +class PumpCtrlGroup { + public: +}; + +class PeltierCtrlGroup { + public: +}; + +} // namespace water_cooling_temperature_control +#endif class WaterCoolingTemperatureControlModule : public ZIModule { + ENABLE_MODULE(WaterCoolingTemperatureControlModule, ktemperature_ctrl_module, 1); + public: typedef struct { PidModule::config_t pid_cfg; @@ -43,35 +61,12 @@ class WaterCoolingTemperatureControlModule : public ZIModule { PWMSpeedCtrlModule* fanTable[4]; PWMSpeedCtrlModule* pump; DRV8710* peltier_ctrl[2]; - - ZGPIO::InputGpioCfg_t ext_input[10]; - ZGPIO::OutputGpioCfg_t ext_output[10]; } hardwared_config_t; - typedef struct { - /******************************************************************************* - * ACTION REG * - *******************************************************************************/ - int32_t module_do_action0; - int32_t module_action_param1; - int32_t module_action_param2; - int32_t module_action_param3; - int32_t module_action_ack1; - int32_t module_action_ack2; - } reg_t; - private: config_t m_cfg; int32_t m_id = 1; - ZGPIO m_ext_input[10]; - int32_t m_n_ext_input = 0; - - ZGPIO m_ext_output[10]; - int32_t m_n_ext_output = 0; - - reg_t m_reg = {0}; - // 温度传感器 ZITemperatureSensor* m_temperature_sensor[4] = {0}; int32_t m_n_temperature_sensor = 0; @@ -91,8 +86,6 @@ class WaterCoolingTemperatureControlModule : public ZIModule { float m_target_temperature = 0; - int32_t m_errorcode = 0; - public: WaterCoolingTemperatureControlModule(){}; virtual ~WaterCoolingTemperatureControlModule(){}; @@ -104,8 +97,7 @@ class WaterCoolingTemperatureControlModule : public ZIModule { virtual int32_t getid(int32_t* id) override; - virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) override; - virtual int32_t module_get_reg(int32_t param_id, int32_t* param_value) override; + virtual int32_t module_get_status(int32_t* status) override; virtual int32_t module_factory_reset() override; virtual int32_t module_flush_cfg() override; @@ -115,9 +107,6 @@ class WaterCoolingTemperatureControlModule : public ZIModule { virtual int32_t module_start() override; virtual int32_t module_break() override; - virtual int32_t module_readio(int32_t* io) override; - virtual int32_t module_writeio(int32_t idindex, int32_t io) override; - virtual int32_t module_clear_error() override; int32_t read_input_state(); @@ -155,8 +144,9 @@ class WaterCoolingTemperatureControlModule : public ZIModule { int32_t gettemperature_sensor_state(int32_t& state); - float getTemperatureSensorVal(int32_t index); - int32_t do_action(int32_t actioncode); + float getTemperatureSensorVal(int32_t index); + + virtual int32_t do_action(int32_t actioncode) override; }; } // namespace iflytop diff --git a/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module_factory.cpp b/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module_factory.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module_factory.hpp b/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module_factory.hpp deleted file mode 100644 index 9d9d666..0000000 --- a/components/water_cooling_temperature_control_module/water_cooling_temperature_control_module_factory.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once -/** - * @file water_cooling_temperature_control_module_factory.hpp - * @author zhaohe (h_zhaohe@163.com) - * @brief - * @version 0.1 - * @date 2023-04-14 - * - * @copyright Copyright (c) 2023 - * - */ -#include - -#include "sdk/os/zos.hpp" -// -#include "water_cooling_temperature_control_module_factory.hpp" - -namespace iflytop { -/** - * @brief - * 水冷温度控制模块 - */ - -class WaterCoolingTemperatureControlModuleFactory { - public: - WaterCoolingTemperatureControlModuleFactory(){}; -}; - -} // namespace iflytop