From 754061a569e37f248ad40d6f358338753183cc1a Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 8 Jun 2024 15:41:16 +0800 Subject: [PATCH] udpate --- a8000_protocol | 2 +- sdk | 2 +- usrc/public_service/ext_board_impl.cpp | 6 ++- .../subboard40_and_50_temperature_ctrl.cpp | 4 ++ .../zcan_fan_ctrl_module.cpp | 59 +++++++++------------- .../zcan_fan_ctrl_module.hpp | 18 ++++--- .../subboard90_optical_module/optical_module.cpp | 4 +- 7 files changed, 48 insertions(+), 47 deletions(-) diff --git a/a8000_protocol b/a8000_protocol index 8268827..ba9d990 160000 --- a/a8000_protocol +++ b/a8000_protocol @@ -1 +1 @@ -Subproject commit 82688278acc674cf0ad6a3a5f9017b93cc45a670 +Subproject commit ba9d9901d640255796df949d24351064c1994bc8 diff --git a/sdk b/sdk index 9757cd5..f204e7c 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 9757cd58b49db7604f6aba0483937b505c0f9497 +Subproject commit f204e7c9f2418a9859ef30dd019356ace745b15c diff --git a/usrc/public_service/ext_board_impl.cpp b/usrc/public_service/ext_board_impl.cpp index d67bdc1..f0b748c 100644 --- a/usrc/public_service/ext_board_impl.cpp +++ b/usrc/public_service/ext_board_impl.cpp @@ -18,7 +18,11 @@ int32_t ExtBoardImpl::board_read_ext_io(int32_t ioindex, int32_t *val) { *val = IO[ioindex].getState(); return 0; } -int32_t ExtBoardImpl::board_write_ext_io(int32_t ioindex, int32_t val) { return 0; } +int32_t ExtBoardImpl::board_write_ext_io(int32_t ioindex, int32_t val) { + if (ioindex < 0 || ioindex >= ZARRAY_SIZE(IO)) return err::kparam_out_of_range; + IO[ioindex].setState(val); + return 0; +} int32_t ExtBoardImpl::board_read_muti_io(int32_t *val) { *val = 0; for (int i = 0; i < ZARRAY_SIZE(IO); i++) { diff --git a/usrc/subboards/subboard40_and_50_temperature_ctrl/subboard40_and_50_temperature_ctrl.cpp b/usrc/subboards/subboard40_and_50_temperature_ctrl/subboard40_and_50_temperature_ctrl.cpp index b9e7d21..f82da7e 100644 --- a/usrc/subboards/subboard40_and_50_temperature_ctrl/subboard40_and_50_temperature_ctrl.cpp +++ b/usrc/subboards/subboard40_and_50_temperature_ctrl/subboard40_and_50_temperature_ctrl.cpp @@ -56,6 +56,10 @@ void Subboard40And50TemperatureCtrl::initialize() { temp[2].initializate(&hi2c1, TMP117::ID2); temp[3].initializate(&hi2c1, TMP117::ID3); + for (size_t i = 0; i < 4; i++) { + ZLOGI(TAG, "temperature %d", i, temp[i].getTemperature()); + } + if (getPeltierNum() == 1) { fan.initialize(FanCtrlModule::kfan0); peltier.initialize(PeltierCtrlModule::kpeltier0); diff --git a/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.cpp b/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.cpp index 04ac59f..b9f52e1 100644 --- a/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.cpp +++ b/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.cpp @@ -10,12 +10,13 @@ void ZcanFanCtrlModule::initialize(int32_t id, ZIPWMFanCtrlModule* fanmodule, in OSDefaultSchduler::getInstance()->regPeriodJob( [this](OSDefaultSchduler::Context& context) { // - if (m_isworking && creg.module_errorcode == 0) { + if (creg.m_module_status == 1) { if (m_fanmodule->isError()) { ZLOGE(TAG, "detect fan error,stop fan"); - creg.module_errorcode = err::khwardware_error; + creg.module_errorcode = err::kfan_hardware_fault; m_fanmodule->clearError(); - module_stop(); + m_fanmodule->stop(); + creg.m_module_status = 2; } } }, @@ -26,47 +27,37 @@ int32_t ZcanFanCtrlModule::getid(int32_t* id) { *id = m_id; return 0; } -int32_t ZcanFanCtrlModule::module_get_status(int32_t* status) { - if (creg.module_errorcode != 0) { - *status = 2; - } else if (m_isworking) { - *status = 1; - } else { - *status = 0; - } - return 0; -} -int32_t ZcanFanCtrlModule::set_fan_default_speed(int32_t default_speed) { - m_default_speed = default_speed; - if (m_isworking) m_fanmodule->setFanSpeed(default_speed); - return 0; -} - int32_t ZcanFanCtrlModule::module_xxx_reg(int32_t param_id, bool read, int32_t& val) { switch (param_id) { - MODULE_COMMON_PROCESS_REG_CB(); - PROCESS_REG(kreg_fan0_ctrl_speed_level, REG_GET(m_default_speed), set_fan_default_speed(val)); break; default: - return err::kmodule_not_find_config_index; + return err::kmodule_not_find_reg; } - return err::kmodule_not_find_config_index; + return err::kmodule_not_find_reg; } -int32_t ZcanFanCtrlModule::module_stop() { - m_isworking = false; - m_fanmodule->stop(); - return 0; -} -int32_t ZcanFanCtrlModule::module_start() { - module_clear_error(); +int32_t ZcanFanCtrlModule::module_stop() { return fan_controler_set_speed(0); } + +int32_t ZcanFanCtrlModule::fan_controler_set_speed(int32_t fanspeed100) { + if (creg.m_module_status == 2) { + ZLOGE(TAG, "fan error trigger, do nothing"); + if (fanspeed100 == 0) { + return 0; + } + return creg.module_errorcode; + } + + m_now_speed = fanspeed100; - if (m_default_speed == 0) { - module_stop(); + if (m_now_speed == 0) { + m_fanmodule->stop(); + creg.m_module_status = 0; + } else { + m_fanmodule->setFanSpeed(m_now_speed); + creg.m_module_status = 1; + creg.module_errorcode = 0; } - m_isworking = true; - m_fanmodule->setFanSpeed(m_default_speed); return 0; } diff --git a/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.hpp b/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.hpp index 822a7ae..2b24415 100644 --- a/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.hpp +++ b/usrc/subboards/subboard40_and_50_temperature_ctrl/zcan_fan_ctrl_module.hpp @@ -16,6 +16,7 @@ #include "sdk/os/zos.hpp" // +#include "a8000_protocol\api\zi_fan_ctrl.hpp" #include "a8000_protocol\protocol.hpp" #include "sdk\components\api\zi_pwm_fan_ctrl_module.hpp" @@ -25,16 +26,14 @@ namespace iflytop { * 水冷温度控制模块 */ -class ZcanFanCtrlModule : public ZIModule { +class ZcanFanCtrlModule : public ZIModule, public ZIFanControler { ENABLE_MODULE(ZcanFanCtrlModule, kfan_ctrl_module, 1); public: ZIPWMFanCtrlModule* m_fanmodule = nullptr; int32_t m_id = 0; - bool m_isworking = false; - - int32_t m_default_speed = 50; + int32_t m_now_speed = 50; public: ZcanFanCtrlModule(){}; @@ -42,14 +41,17 @@ class ZcanFanCtrlModule : public ZIModule { void initialize(int32_t id, ZIPWMFanCtrlModule* fanmodule, int32_t default_speed); + /*********************************************************************************************************************** + * Module * + ***********************************************************************************************************************/ virtual int32_t getid(int32_t* id) override; - virtual int32_t module_get_status(int32_t* status) override; - virtual int32_t module_start(); virtual int32_t module_stop() override; virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t& val) override; + /*********************************************************************************************************************** + * ZIFanControler * + ***********************************************************************************************************************/ + virtual int32_t fan_controler_set_speed(int32_t fanspeed100) override; - public: - virtual int32_t set_fan_default_speed(int32_t default_speed); }; } // namespace iflytop diff --git a/usrc/subboards/subboard90_optical_module/optical_module.cpp b/usrc/subboards/subboard90_optical_module/optical_module.cpp index c9af104..6021875 100644 --- a/usrc/subboards/subboard90_optical_module/optical_module.cpp +++ b/usrc/subboards/subboard90_optical_module/optical_module.cpp @@ -243,7 +243,7 @@ int32_t OpticalModule::module_xxx_reg(int32_t param_id, bool read, int32_t& val) // PROCESS_REG(kreg_module_action_ack1, /* */ REG_GET(m_reg.module_action_ack1), ACTION_NONE); // PROCESS_REG(kreg_module_action_ack2, /* */ REG_GET(m_reg.module_action_ack2), ACTION_NONE); default: - return err::kmodule_not_find_config_index; + return err::kmodule_not_find_reg; break; } return 0; @@ -283,7 +283,7 @@ int32_t OpticalModule::do_action(int32_t action) { } else if (action == ACTION_DUMP_RESULT) { return dumpresult(); } - return err::kmodule_not_support_action; + return err::kcmd_not_support; } int32_t OpticalModule::module_stop() {