From e5db24ca2285a151c12bb6d1f313b28ac63d1391 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 9 Aug 2024 17:04:38 +0800 Subject: [PATCH] recode --- app_protocols/transmit_disfection_protocol | 2 +- usrc/app/dmapp.hpp | 150 +++++++++++++++++++++ usrc/app_main.cpp | 29 +--- usrc/base/appdep.hpp | 2 +- usrc/base/i_protocol_processer.hpp | 85 ------------ usrc/base/protocol_processer_mgr.cpp | 15 +-- usrc/base/protocol_processer_mgr.hpp | 8 +- usrc/base/protocol_processer_utils.hpp | 52 +++++++ usrc/board/draw_bar_dm_board.hpp.xx | 62 +++++++++ usrc/board/large_space_dm_liquid_ctrl_board.hpp | 42 ------ usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx | 42 ++++++ usrc/board/large_space_dm_power_ctrl_board.hpp | 51 ------- usrc/board/large_space_dm_power_ctrl_board.hpp.xx | 50 +++++++ usrc/board/pipe_dm_liquid_ctrl_board.hpp | 43 ------ usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx | 43 ++++++ usrc/board/pipe_dm_power_ctrl_board.hpp | 38 ------ usrc/board/pipe_dm_power_ctrl_board.hpp.xx | 37 +++++ usrc/board/public_board.cpp | 31 +++++ usrc/board/public_board.hpp | 6 + .../app_share/air_compressor_controller.hpp | 3 + usrc/board_base/app_share/blower_controller.hpp | 3 + usrc/board_base/app_share/h2o2_sensor_driver.cpp | 2 + usrc/board_base/app_share/h2o2_sensor_driver.hpp | 3 + usrc/board_base/app_share/heater_controller.hpp | 4 + .../app_share/proportional_valve_ctrl.hpp | 7 +- usrc/board_base/app_share/pxxpsbus.hpp | 7 +- usrc/board_base/app_share/tmc_motor_group.cpp | 3 +- usrc/board_base/app_share/tmc_motor_group.hpp | 5 +- usrc/board_base/app_share/warning_light_driver.hpp | 5 + usrc/board_base/app_share/water_sensor_mgr.hpp | 29 ++++ .../large_space_dm_liquid_ctrl_board_pp.hpp | 59 -------- .../large_space_dm_liquid_ctrl_board_pp.hpp.xx | 59 ++++++++ .../large_space_dm_power_ctrl_board_pp.hpp | 50 ------- .../large_space_dm_power_ctrl_board_pp.hpp.xx | 50 +++++++ .../pipe_dm_liquid_ctrl_board_pp.hpp | 64 --------- .../pipe_dm_liquid_ctrl_board_pp.hpp.xx | 64 +++++++++ .../pipe_dm_power_ctrl_board_pp.hpp | 50 ------- .../pipe_dm_power_ctrl_board_pp.hpp.xx | 50 +++++++ .../public_cmd_processer.hpp | 9 +- zsdk | 2 +- 40 files changed, 782 insertions(+), 534 deletions(-) create mode 100644 usrc/app/dmapp.hpp delete mode 100644 usrc/base/i_protocol_processer.hpp create mode 100644 usrc/base/protocol_processer_utils.hpp create mode 100644 usrc/board/draw_bar_dm_board.hpp.xx delete mode 100644 usrc/board/large_space_dm_liquid_ctrl_board.hpp create mode 100644 usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx delete mode 100644 usrc/board/large_space_dm_power_ctrl_board.hpp create mode 100644 usrc/board/large_space_dm_power_ctrl_board.hpp.xx delete mode 100644 usrc/board/pipe_dm_liquid_ctrl_board.hpp create mode 100644 usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx delete mode 100644 usrc/board/pipe_dm_power_ctrl_board.hpp create mode 100644 usrc/board/pipe_dm_power_ctrl_board.hpp.xx create mode 100644 usrc/board_base/app_share/water_sensor_mgr.hpp delete mode 100644 usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp create mode 100644 usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx delete mode 100644 usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp create mode 100644 usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx delete mode 100644 usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp create mode 100644 usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx delete mode 100644 usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp create mode 100644 usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx diff --git a/app_protocols/transmit_disfection_protocol b/app_protocols/transmit_disfection_protocol index 8b73b00..9b15ef0 160000 --- a/app_protocols/transmit_disfection_protocol +++ b/app_protocols/transmit_disfection_protocol @@ -1 +1 @@ -Subproject commit 8b73b00eacba449c5d71f7d9f0dab9abc54c6aaa +Subproject commit 9b15ef0cb011476bff3659117a9e7907155a9f1b diff --git a/usrc/app/dmapp.hpp b/usrc/app/dmapp.hpp new file mode 100644 index 0000000..1c4b1f6 --- /dev/null +++ b/usrc/app/dmapp.hpp @@ -0,0 +1,150 @@ +#pragma once +#include "board/public_board.hpp" +#include "board_base/board_base.hpp" + +/** + * @brief + * 大空间消毒机-功率控制板 + */ + +namespace iflytop { +using namespace transmit_disfection_protocol; + +#define TAG "LargeSpaceDmPowerCtrlBoard" +class DisinfectionApp { + public: + HeaterController heaterCtrler; + BlowerController blowerCtrler; + AirCompressorController airComCtrler; + H2O2SensorDriver h2o2Sensor; + + ZGPIO evaporationBinWS; // 蒸发仓水浸 + ZGPIO deviceBottomWS; // 设备底部水浸 + WarningLightDriver wlDriver; // 报警灯 + TmcMotorGroup tmcPowerGroup; // TMC电机 + PXXPSBus psBus; // PXX压力传感器总线 + + public: + static DisinfectionApp* ins() { + static DisinfectionApp instance; + return &instance; + } + + virtual const char* getName() { return "DisinfectionApp"; } + + void initialize() { + initializeDevice(); + regProtocol(); + } + + void initializeDevice() { + int btid = PublicBoard::ins()->getBoardTypeId(); + // + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); + } + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); + } + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); + } + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + // TMC电机初始化 + LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); + tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + // 三色指示灯初始化 + wlDriver.initialize(PD8, PD7, PD9, PD10); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + // 压力传感器初始化 + osDelay(1500); // 等待传感器上电 + LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); + psBus.initialize(&huart3); + } + } + + void regProtocol() { + if (heaterCtrler.isInitialized()) { + BIND_FN(HeaterController, &heaterCtrler, fn_heater_ctrl); + BIND_FN(HeaterController, &heaterCtrler, fn_heater_ctrl_safe_valve); + BIND_FN(HeaterController, &heaterCtrler, fn_heater_read_electric_current); + BIND_FN(HeaterController, &heaterCtrler, fn_heater_read_temperature_data); + } + + if (blowerCtrler.isInitialized()) { + BIND_FN(BlowerController, &blowerCtrler, fn_blower_ctrl); + BIND_FN(BlowerController, &blowerCtrler, fn_blower_ctrl_safe_valve); + BIND_FN(BlowerController, &blowerCtrler, fn_blower_read_electric_current); + } + + if (airComCtrler.isInitialized()) { + BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_ctrl); + BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_ctrl_safe_valve); + BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_read_electric_current); + } + + if (h2o2Sensor.isInitialized()) { + BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_calibration_date); + BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); + BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); + } + if (wlDriver.isInitialized()) { + BIND_FN(WarningLightDriver, wlDriver, fn_triple_warning_light_ctl); + } + + if (tmcPowerGroup.isInitialized()) { + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_rotate); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_stop); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_ihold_irun_idelay); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_acc); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_ramp); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_tzw); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_subic_reg); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_get_subic_reg); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_ping); + } + + if (psBus.isInitialized()) { + BIND_FN(PXXPSBus, psBus, fn_psbus_read_data); + BIND_FN(PXXPSBus, psBus, fn_psbus_scan); + } + + if (evaporationBinWS.isInited()) { + ProtocolProcesserMgr::ins()->regCmdProcesser( // + CmdProcesser(kfn_evaporation_tank_water_sensor_read_state, // + [this](ProcessContext* cxt) { + int32_t val = evaporationBinWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + })); + } + + if (deviceBottomWS.isInited()) { + ProtocolProcesserMgr::ins()->regCmdProcesser( // + CmdProcesser(kfn_device_bottom_water_sensor_read_state, // + [this](ProcessContext* cxt) { + int32_t val = deviceBottomWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + })); + } + } +}; +#undef TAG +} // namespace iflytop \ No newline at end of file diff --git a/usrc/app_main.cpp b/usrc/app_main.cpp index 254246a..d64f720 100644 --- a/usrc/app_main.cpp +++ b/usrc/app_main.cpp @@ -2,19 +2,12 @@ #include // +#include "app/dmapp.hpp" #include "base/appdep.hpp" // -#include "board/large_space_dm_liquid_ctrl_board.hpp" -#include "board/large_space_dm_power_ctrl_board.hpp" -#include "board/pipe_dm_liquid_ctrl_board.hpp" -#include "board/pipe_dm_power_ctrl_board.hpp" #include "board/public_board.hpp" // #include "base/protocol_processer_mgr.hpp" -#include "protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp" -#include "protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp" -#include "protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp" -#include "protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp" #include "protocol_processer_impl/public_cmd_processer.hpp" // #include "zsdk/zcanreceiver/zcanreceiver.hpp" @@ -97,35 +90,21 @@ void umain() { ZLOGI(TAG, "="); ProtocolProcesserMgr::ins()->initialize(); - REG_PROCESSER(PublicCmdProcesser::ins()); + PublicCmdProcesser::ins()->initialize(); switch (PublicBoard::ins()->getBoardTypeId()) { case kLargeSpaceDMLiquidCtrlBoard: - case kSmallSpaceDMLiquidCtrlBoard: - LargeSpaceDmLiquidCtrlBoard::ins()->initialize(); - REG_PROCESSER(LargeSpaceDmLiquidCtrlBoardPP::ins()); - break; case kLargeSpaceDMPowerCtrlBoard: + case kSmallSpaceDMLiquidCtrlBoard: case kSmallSpaceDMPowerCtrlBoard: - LargeSpaceDmPowerCtrlBoard::ins()->initialize(); - REG_PROCESSER(LargeSpaceDmPowerCtrlBoardPP::ins()); - break; case kPipeDMLiquidCtrlBoard: - PipeDMLiquidCtrlBoard::ins()->initialize(); - REG_PROCESSER(PipeDMLiquidCtrlBoardPP::ins()); - break; case kPipeDMPowerCtrlBoard: - PipeDMPowerCtrlBoard::ins()->initialize(); - REG_PROCESSER(PipeDMPowerCtrlBoardPP::ins()); - break; case kDrawBarDMLiquidCtrlBoard: - break; case kDrawBarDMPowerCtrlBoard: + DisinfectionApp::ins()->initialize(); break; case kDrawBarDMExtBallValveCtrl: - break; case kH2O2SensorBoard: - break; default: gInitErrorFlag = true; break; diff --git a/usrc/base/appdep.hpp b/usrc/base/appdep.hpp index 83013cd..c862a8a 100644 --- a/usrc/base/appdep.hpp +++ b/usrc/base/appdep.hpp @@ -16,7 +16,7 @@ #include "config_service.hpp" #include "device_info.hpp" #include "gflag/gflag.h" -#include "i_protocol_processer.hpp" +#include "protocol_processer_mgr.hpp" #include "idtable/IdMgr.hpp" #include "transmit_disfection_protocol/transmit_disfection_protocol.hpp" // diff --git a/usrc/base/i_protocol_processer.hpp b/usrc/base/i_protocol_processer.hpp deleted file mode 100644 index ed21619..0000000 --- a/usrc/base/i_protocol_processer.hpp +++ /dev/null @@ -1,85 +0,0 @@ -#pragma once -#include -#include -// -#include "zsdk/zsdk.hpp" -#include "zstm32/zstm32.hpp" -// -#include "base/device_info.hpp" -#include "gflag/gflag.h" -#include "transmit_disfection_protocol/transmit_disfection_protocol.hpp" -#include "zsdk/zcanreceiver/zcanreceiver.hpp" - -namespace iflytop { -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -#define REG_FN(fn) cmdprocesser.push_back(CmdProcesser(k##fn, bind(&ThisClass::fn, this, placeholders::_1))) -#define BIND_FN(ClassName, obj, fn) cmdprocesser.push_back(CmdProcesser(k##fn, bind(&ClassName::fn, obj, placeholders::_1))); - -#define GET_PARAM(off) ((((int32_t*)(cxt->packet->params))[off])) -#define PRAAM_LEN() ((cxt->packetlen - sizeof(zcanbus_packet_t)) / 4) - -#define CHECK_PARAM_LEN(_paramNum, expectNum) \ - if (_paramNum != expectNum) { \ - zcanbus_send_errorack(cxt->packet, kerr_invalid_param_num); \ - return; \ - } - -/*********************************************************************************************************************** - * ClassDeclear * - ***********************************************************************************************************************/ -class ProcessContext; - -/*********************************************************************************************************************** - * TYPEDEF * - ***********************************************************************************************************************/ -typedef function cmdprocessfn_t; - -/*********************************************************************************************************************** - * CLASS * - ***********************************************************************************************************************/ -class ProcessContext { - public: - uint8_t from; - uint8_t to; - zcanbus_packet_t* packet; - size_t packetlen; -}; -class CmdProcesser { - public: - int cmd; - cmdprocessfn_t fn; - CmdProcesser(int cmd, cmdprocessfn_t fn) : cmd(cmd), fn(fn) {} -}; -class IProtocolProcesser { - public: - list cmdprocesser; - - public: - virtual void initialize() = 0; - virtual const char* getName() = 0; - - public: - virtual void process(ProcessContext* cxt) { - for (auto& cmd : cmdprocesser) { - if (cmd.cmd == cxt->packet->function_id) { - cmd.fn(cxt); - return; - } - } - } - virtual bool isSupportThisCmd(ProcessContext* cxt) { - for (auto& cmd : cmdprocesser) { - if (cmd.cmd == cxt->packet->function_id) { - return true; - } - } - return false; - } - - virtual ~IProtocolProcesser() {} -}; - -} // namespace iflytop \ No newline at end of file diff --git a/usrc/base/protocol_processer_mgr.cpp b/usrc/base/protocol_processer_mgr.cpp index c5390cc..818c5d3 100644 --- a/usrc/base/protocol_processer_mgr.cpp +++ b/usrc/base/protocol_processer_mgr.cpp @@ -26,15 +26,7 @@ static void zcanbus_on_connected(bool connected) { } void ProtocolProcesserMgr::initialize() {} -void ProtocolProcesserMgr::regProcesser(IProtocolProcesser* processer) { - m_processers.push_back(processer); - - ZLOGI(TAG, "register processer %s", processer->getName()); -} void ProtocolProcesserMgr::startSchedule(int deviceId) { - for (auto processer : m_processers) { - processer->initialize(); - } zcanbus_init(deviceId); zcanbus_reglistener(zcanbus_on_rx); @@ -57,10 +49,9 @@ void ProtocolProcesserMgr::onPacket(uint8_t from, uint8_t to, uint8_t* rawpacket ZLOGI(TAG, "process packet from %d to %d, function_id %d, len %d", from, to, packet->function_id, len); - for (auto processer : m_processers) { - if (processer->isSupportThisCmd(&cxt)) { - ZLOGI(TAG, "%s process this packet", processer->getName()); - processer->process(&cxt); + for (auto& processer : cmdprocesser) { + if (processer.cmd == cxt.packet->function_id) { + processer.fn(&cxt); processed = true; break; } diff --git a/usrc/base/protocol_processer_mgr.hpp b/usrc/base/protocol_processer_mgr.hpp index d94cbe4..8faf495 100644 --- a/usrc/base/protocol_processer_mgr.hpp +++ b/usrc/base/protocol_processer_mgr.hpp @@ -1,11 +1,13 @@ #pragma once -#include "i_protocol_processer.hpp" +#include "protocol_processer_utils.hpp" +#define REG_FN(fn) ProtocolProcesserMgr::ins()->regCmdProcesser(CmdProcesser(k##fn, bind(&ThisClass::fn, this, placeholders::_1))) +#define BIND_FN(ClassName, obj, fn) ProtocolProcesserMgr::ins()->regCmdProcesser(CmdProcesser(k##fn, bind(&ClassName::fn, obj, placeholders::_1))); namespace iflytop { using namespace std; class ProtocolProcesserMgr { - list m_processers; + list cmdprocesser; public: static ProtocolProcesserMgr* ins() { @@ -14,8 +16,8 @@ class ProtocolProcesserMgr { } void initialize(); - void regProcesser(IProtocolProcesser* processer); void startSchedule(int deviceId); + void regCmdProcesser(CmdProcesser processer) { cmdprocesser.push_back(processer); } public: void onPacket(uint8_t from, uint8_t to, uint8_t* rawpacket, size_t len); diff --git a/usrc/base/protocol_processer_utils.hpp b/usrc/base/protocol_processer_utils.hpp new file mode 100644 index 0000000..46a0dcf --- /dev/null +++ b/usrc/base/protocol_processer_utils.hpp @@ -0,0 +1,52 @@ +#pragma once +#include +#include +// +#include "zsdk/zsdk.hpp" +#include "zstm32/zstm32.hpp" +// +#include "base/device_info.hpp" +#include "gflag/gflag.h" +#include "transmit_disfection_protocol/transmit_disfection_protocol.hpp" +#include "zsdk/zcanreceiver/zcanreceiver.hpp" + +namespace iflytop { +using namespace std; +using namespace zscanprotocol; +using namespace transmit_disfection_protocol; + +#define GET_PARAM(off) ((((int32_t*)(cxt->packet->params))[off])) +#define PRAAM_LEN() ((cxt->packetlen - sizeof(zcanbus_packet_t)) / 4) + +#define CHECK_PARAM_LEN(_paramNum, expectNum) \ + if (_paramNum != expectNum) { \ + zcanbus_send_errorack(cxt->packet, kerr_invalid_param_num); \ + return; \ + } + +/*********************************************************************************************************************** + * ClassDeclear * + ***********************************************************************************************************************/ +class ProcessContext; +/*********************************************************************************************************************** + * TYPEDEF * + ***********************************************************************************************************************/ +typedef function cmdprocessfn_t; +/*********************************************************************************************************************** + * CLASS * + ***********************************************************************************************************************/ +class ProcessContext { + public: + uint8_t from; + uint8_t to; + zcanbus_packet_t* packet; + size_t packetlen; +}; +class CmdProcesser { + public: + int cmd; + cmdprocessfn_t fn; + CmdProcesser(int cmd, cmdprocessfn_t fn) : cmd(cmd), fn(fn) {} +}; + +} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/draw_bar_dm_board.hpp.xx b/usrc/board/draw_bar_dm_board.hpp.xx new file mode 100644 index 0000000..2c3a9b6 --- /dev/null +++ b/usrc/board/draw_bar_dm_board.hpp.xx @@ -0,0 +1,62 @@ +#pragma once +#include "board_base/board_base.hpp" + +/** + * @brief + * 手持拉杆箱-功率控制板 + * 1.鼓风机改成PWM驱动 + * 2.去掉空压机,空压机 + * + * 两块板写在一起 + * + * + * + */ + +namespace iflytop { +using namespace transmit_disfection_protocol; + +#define TAG "DrawBarDMBoard" +class DrawBarDMBoard { + public: + HeaterController heaterCtrler; + BlowerController blowerCtrler; + AirCompressorController airComCtrler; + H2O2SensorDriver h2o2Sensor; + ZGPIO evaporationBinWS; // 蒸发仓水浸 + ZGPIO deviceBottomWS; // 设备底部水浸 + WarningLightDriver wlDriver; // 报警灯 + TmcMotorGroup tmcPowerGroup; // TMC电机 + PXXPSBus psBus; // PXX压力传感器总线 + + public: + static DrawBarDMBoard* ins() { + static DrawBarDMBoard instance; + return &instance; + } + void initialize() { + LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); + LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); + + heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); + blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); + airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); + h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); + + AppPeriodTaskMgr::ins()->regTask("AirComAdc", DrawBarDMBoard::onTimeCb, this, 1000); + } + static void onTimeCb(void* handler) { ((DrawBarDMBoard*)handler)->onTimeCb(); } + void onTimeCb() { + heaterCtrler.periodTask(); + blowerCtrler.periodTask(); + airComCtrler.periodTask(); + + ZLOGI(TAG, "b:%d(%d), a:%d(%d), h:%d(%d) ht:%d(%d)", // + blowerCtrler.blower_read_electric_current(), blowerCtrler.blower_read_iadc(), // + airComCtrler.air_compressor_read_electric_current(), airComCtrler.air_compressor_read_iadc(), // + heaterCtrler.heater_read_electric_current(), heaterCtrler.heater_read_iadc(), // + heaterCtrler.heater_read_temperature_data(), heaterCtrler.heater_read_tadc()); + } +}; +#undef TAG +} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/large_space_dm_liquid_ctrl_board.hpp b/usrc/board/large_space_dm_liquid_ctrl_board.hpp deleted file mode 100644 index c960dc2..0000000 --- a/usrc/board/large_space_dm_liquid_ctrl_board.hpp +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" -/** - * @brief - * 大空间消毒机-电流控制板 - */ -namespace iflytop { -class LargeSpaceDmLiquidCtrlBoard { - public: - ZGPIO evaporationBinWS; // 蒸发仓水浸 - ZGPIO deviceBottomWS; // 设备底部水浸 - WarningLightDriver wlDriver; // 报警灯 - TmcMotorGroup tmcPowerGroup; // TMC电机 - PXXPSBus psBus; // PXX压力传感器总线 - - public: - static LargeSpaceDmLiquidCtrlBoard* ins() { - static LargeSpaceDmLiquidCtrlBoard instance; - return &instance; - } - void initialize() { - // 水浸初始化 - evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - // TMC电机初始化 - LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); - tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); - // 三色指示灯初始化 - wlDriver.initialize(PD8, PD7, PD9, PD10); - // 压力传感器初始化 - osDelay(1500); // 等待传感器上电 - LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); - psBus.initialize(&huart3); - } - - static void onTimeCb(void* handler) { - LargeSpaceDmLiquidCtrlBoard* p = (LargeSpaceDmLiquidCtrlBoard*)handler; - p->onTimeCb(); - } - void onTimeCb() {} -}; -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx b/usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx new file mode 100644 index 0000000..c960dc2 --- /dev/null +++ b/usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx @@ -0,0 +1,42 @@ +#pragma once +#include "board_base/board_base.hpp" +/** + * @brief + * 大空间消毒机-电流控制板 + */ +namespace iflytop { +class LargeSpaceDmLiquidCtrlBoard { + public: + ZGPIO evaporationBinWS; // 蒸发仓水浸 + ZGPIO deviceBottomWS; // 设备底部水浸 + WarningLightDriver wlDriver; // 报警灯 + TmcMotorGroup tmcPowerGroup; // TMC电机 + PXXPSBus psBus; // PXX压力传感器总线 + + public: + static LargeSpaceDmLiquidCtrlBoard* ins() { + static LargeSpaceDmLiquidCtrlBoard instance; + return &instance; + } + void initialize() { + // 水浸初始化 + evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + // TMC电机初始化 + LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); + tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); + // 三色指示灯初始化 + wlDriver.initialize(PD8, PD7, PD9, PD10); + // 压力传感器初始化 + osDelay(1500); // 等待传感器上电 + LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); + psBus.initialize(&huart3); + } + + static void onTimeCb(void* handler) { + LargeSpaceDmLiquidCtrlBoard* p = (LargeSpaceDmLiquidCtrlBoard*)handler; + p->onTimeCb(); + } + void onTimeCb() {} +}; +} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/large_space_dm_power_ctrl_board.hpp b/usrc/board/large_space_dm_power_ctrl_board.hpp deleted file mode 100644 index 012286f..0000000 --- a/usrc/board/large_space_dm_power_ctrl_board.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" - -/** - * @brief - * 大空间消毒机-功率控制板 - */ - -namespace iflytop { -#define H2O2_SENSOR_TYPE_HMP110 -using namespace transmit_disfection_protocol; - -#define TAG "LargeSpaceDmPowerCtrlBoard" -class LargeSpaceDmPowerCtrlBoard { - public: - HeaterController heaterCtrler; - BlowerController blowerCtrler; - AirCompressorController airComCtrler; - H2O2SensorDriver h2o2Sensor; - - public: - static LargeSpaceDmPowerCtrlBoard* ins() { - static LargeSpaceDmPowerCtrlBoard instance; - return &instance; - } - void initialize() { - LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); - LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); - - heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); - blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); - airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); - h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); - - AppPeriodTaskMgr::ins()->regTask("AirComAdc", LargeSpaceDmLiquidCtrlBoard::onTimeCb, this, 1000); - } - static void onTimeCb(void* handler) { ((LargeSpaceDmLiquidCtrlBoard*)handler)->onTimeCb(); } - void onTimeCb() { - heaterCtrler.periodTask(); - blowerCtrler.periodTask(); - airComCtrler.periodTask(); - - ZLOGI(TAG, "b:%d(%d), a:%d(%d), h:%d(%d) ht:%d(%d)", // - blowerCtrler.blower_read_electric_current(), blowerCtrler.blower_read_iadc(), // - airComCtrler.air_compressor_read_electric_current(), airComCtrler.air_compressor_read_iadc(), // - heaterCtrler.heater_read_electric_current(), heaterCtrler.heater_read_iadc(), // - heaterCtrler.heater_read_temperature_data(), heaterCtrler.heater_read_tadc()); - } -}; -#undef TAG -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/large_space_dm_power_ctrl_board.hpp.xx b/usrc/board/large_space_dm_power_ctrl_board.hpp.xx new file mode 100644 index 0000000..71d688d --- /dev/null +++ b/usrc/board/large_space_dm_power_ctrl_board.hpp.xx @@ -0,0 +1,50 @@ +#pragma once +#include "board_base/board_base.hpp" + +/** + * @brief + * 大空间消毒机-功率控制板 + */ + +namespace iflytop { +using namespace transmit_disfection_protocol; + +#define TAG "LargeSpaceDmPowerCtrlBoard" +class LargeSpaceDmPowerCtrlBoard { + public: + HeaterController heaterCtrler; + BlowerController blowerCtrler; + AirCompressorController airComCtrler; + H2O2SensorDriver h2o2Sensor; + + public: + static LargeSpaceDmPowerCtrlBoard* ins() { + static LargeSpaceDmPowerCtrlBoard instance; + return &instance; + } + void initialize() { + LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); + LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); + + heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); + blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); + airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); + h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); + + AppPeriodTaskMgr::ins()->regTask("AirComAdc", LargeSpaceDmLiquidCtrlBoard::onTimeCb, this, 1000); + } + static void onTimeCb(void* handler) { ((LargeSpaceDmLiquidCtrlBoard*)handler)->onTimeCb(); } + void onTimeCb() { + heaterCtrler.periodTask(); + blowerCtrler.periodTask(); + airComCtrler.periodTask(); + + ZLOGI(TAG, "b:%d(%d), a:%d(%d), h:%d(%d) ht:%d(%d)", // + blowerCtrler.blower_read_electric_current(), blowerCtrler.blower_read_iadc(), // + airComCtrler.air_compressor_read_electric_current(), airComCtrler.air_compressor_read_iadc(), // + heaterCtrler.heater_read_electric_current(), heaterCtrler.heater_read_iadc(), // + heaterCtrler.heater_read_temperature_data(), heaterCtrler.heater_read_tadc()); + } +}; +#undef TAG +} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/pipe_dm_liquid_ctrl_board.hpp b/usrc/board/pipe_dm_liquid_ctrl_board.hpp deleted file mode 100644 index 905bc06..0000000 --- a/usrc/board/pipe_dm_liquid_ctrl_board.hpp +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" -/** - * @brief - * 管道式-液路控制板 - * - * 相比于大空间消毒机,不同的点: - * 1.增加比例阀控制 - */ -namespace iflytop { -class PipeDMLiquidCtrlBoard { - public: - ZGPIO evaporationBinWS; // 蒸发仓水浸 - ZGPIO deviceBottomWS; // 设备底部水浸 - WarningLightDriver wlDriver; // 报警灯 - TmcMotorGroup tmcPowerGroup; // TMC电机 - PXXPSBus psBus; // PXX压力传感器总线 - ProportionalValveCtrl proportionalValveCtrl; - - public: - static PipeDMLiquidCtrlBoard* ins() { - static PipeDMLiquidCtrlBoard instance; - return &instance; - } - void initialize() { - // 水浸初始化 - evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - // TMC电机初始化 - LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); - tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); - // 三色指示灯初始化 - wlDriver.initialize(PD8, PD7, PD9, PD10); - // 压力传感器初始化 - osDelay(1500); // 等待传感器上电 - LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); - psBus.initialize(&huart3); - // - LargeSpaceDMLiquidCtrlBoardHal::HUART2_INIT(9600); - proportionalValveCtrl.initialize(&huart2); - } -}; -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx b/usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx new file mode 100644 index 0000000..905bc06 --- /dev/null +++ b/usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx @@ -0,0 +1,43 @@ +#pragma once +#include "board_base/board_base.hpp" +/** + * @brief + * 管道式-液路控制板 + * + * 相比于大空间消毒机,不同的点: + * 1.增加比例阀控制 + */ +namespace iflytop { +class PipeDMLiquidCtrlBoard { + public: + ZGPIO evaporationBinWS; // 蒸发仓水浸 + ZGPIO deviceBottomWS; // 设备底部水浸 + WarningLightDriver wlDriver; // 报警灯 + TmcMotorGroup tmcPowerGroup; // TMC电机 + PXXPSBus psBus; // PXX压力传感器总线 + ProportionalValveCtrl proportionalValveCtrl; + + public: + static PipeDMLiquidCtrlBoard* ins() { + static PipeDMLiquidCtrlBoard instance; + return &instance; + } + void initialize() { + // 水浸初始化 + evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + // TMC电机初始化 + LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); + tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); + // 三色指示灯初始化 + wlDriver.initialize(PD8, PD7, PD9, PD10); + // 压力传感器初始化 + osDelay(1500); // 等待传感器上电 + LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); + psBus.initialize(&huart3); + // + LargeSpaceDMLiquidCtrlBoardHal::HUART2_INIT(9600); + proportionalValveCtrl.initialize(&huart2); + } +}; +} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/pipe_dm_power_ctrl_board.hpp b/usrc/board/pipe_dm_power_ctrl_board.hpp deleted file mode 100644 index 1f19477..0000000 --- a/usrc/board/pipe_dm_power_ctrl_board.hpp +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" -/** - * @brief - * 管道式-功率控制板 - * - * 相比于大空间消毒机,不同的点: - * 1. 风机改成鼓风机(可控风速) - * - */ -namespace iflytop { -#define H2O2_SENSOR_TYPE_HMP110 -using namespace transmit_disfection_protocol; - -class PipeDMPowerCtrlBoard { - public: - HeaterController heaterCtrler; - BlowerController blowerCtrler; - AirCompressorController airComCtrler; - H2O2SensorDriver h2o2Sensor; - - public: - static PipeDMPowerCtrlBoard* ins() { - static PipeDMPowerCtrlBoard instance; - return &instance; - } - void initialize() { - LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); - LargeSpaceDmPowerCtrlBoardHal::HUART2_INIT(9600, UART_STOPBITS_1); - LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); - - heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); - blowerCtrler.initializeAsHighPowerUartBlower(&huart2); - airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); - h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); - } -}; -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/pipe_dm_power_ctrl_board.hpp.xx b/usrc/board/pipe_dm_power_ctrl_board.hpp.xx new file mode 100644 index 0000000..4fe9c0f --- /dev/null +++ b/usrc/board/pipe_dm_power_ctrl_board.hpp.xx @@ -0,0 +1,37 @@ +#pragma once +#include "board_base/board_base.hpp" +/** + * @brief + * 管道式-功率控制板 + * + * 相比于大空间消毒机,不同的点: + * 1. 风机改成鼓风机(可控风速) + * + */ +namespace iflytop { +using namespace transmit_disfection_protocol; + +class PipeDMPowerCtrlBoard { + public: + HeaterController heaterCtrler; + BlowerController blowerCtrler; + AirCompressorController airComCtrler; + H2O2SensorDriver h2o2Sensor; + + public: + static PipeDMPowerCtrlBoard* ins() { + static PipeDMPowerCtrlBoard instance; + return &instance; + } + void initialize() { + LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); + LargeSpaceDmPowerCtrlBoardHal::HUART2_INIT(9600, UART_STOPBITS_1); + LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); + + heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); + blowerCtrler.initializeAsHighPowerUartBlower(&huart2); + airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); + h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); + } +}; +} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/public_board.cpp b/usrc/board/public_board.cpp index cfbc1ad..a5771d1 100644 --- a/usrc/board/public_board.cpp +++ b/usrc/board/public_board.cpp @@ -125,3 +125,34 @@ int PublicBoard::getBoardTypeId() { } } int PublicBoard::getBoardId() { return IdMgr::ins().getBoardId(getBoardTypeId()); } + +namespace iflytop { +bool isBoardType(int32_t val0) { + int boardType = PublicBoard::ins()->getBoardTypeId(); + if (boardType == val0) { + return true; + } + return false; +} +bool isBoardType(int32_t val0, int32_t val1) { + int boardType = PublicBoard::ins()->getBoardTypeId(); + if (boardType == val0 || boardType == val1) { + return true; + } + return false; +} +bool isBoardType(int32_t val0, int32_t val1, int32_t val2) { + int boardType = PublicBoard::ins()->getBoardTypeId(); + if (boardType == val0 || boardType == val1 || boardType == val2) { + return true; + } + return false; +} +bool isBoardType(int32_t val0, int32_t val1, int32_t val2, int32_t val3) { + int boardType = PublicBoard::ins()->getBoardTypeId(); + if (boardType == val0 || boardType == val1 || boardType == val2 || boardType == val3) { + return true; + } + return false; +} +} // namespace iflytop diff --git a/usrc/board/public_board.hpp b/usrc/board/public_board.hpp index 050becd..83a0933 100644 --- a/usrc/board/public_board.hpp +++ b/usrc/board/public_board.hpp @@ -22,4 +22,10 @@ class PublicBoard { void debugUartInit(void); void canInit(); }; + +bool isBoardType(int32_t val0); +bool isBoardType(int32_t val0, int32_t val1); +bool isBoardType(int32_t val0, int32_t val1, int32_t val2); +bool isBoardType(int32_t val0, int32_t val1, int32_t val2, int32_t val3); + } // namespace iflytop \ No newline at end of file diff --git a/usrc/board_base/app_share/air_compressor_controller.hpp b/usrc/board_base/app_share/air_compressor_controller.hpp index df2a62b..41268e4 100644 --- a/usrc/board_base/app_share/air_compressor_controller.hpp +++ b/usrc/board_base/app_share/air_compressor_controller.hpp @@ -8,6 +8,7 @@ using namespace transmit_disfection_protocol; class AirCompressorController { ZGPIO m_AirCompressor_ctrlGpio; ZADC m_AirCompressor_iAdc; + bool m_isInitialized = false; public: static AirCompressorController* ins() { @@ -18,7 +19,9 @@ class AirCompressorController { void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich) { m_AirCompressor_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false); m_AirCompressor_iAdc.initialize("AirComAdc", iadc, ich); + m_isInitialized = true; } + bool isInitialized() { return m_isInitialized; } // FN void air_compressor_ctrl(int32_t val) { m_AirCompressor_ctrlGpio.write(val); } diff --git a/usrc/board_base/app_share/blower_controller.hpp b/usrc/board_base/app_share/blower_controller.hpp index 5b156ad..8109290 100644 --- a/usrc/board_base/app_share/blower_controller.hpp +++ b/usrc/board_base/app_share/blower_controller.hpp @@ -19,13 +19,16 @@ class BlowerController { // kHighPowerUartBlower ModbusBlockHost m_modbusblock; + bool m_isInitialized = false; public: void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich) { m_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false); m_iadc.initialize("Blower-iadc", iadc, ich); m_blowerType = kIOBlower; + m_isInitialized = true; } + bool isInitialized() { return m_isInitialized; } void initializeAsHighPowerUartBlower(UART_HandleTypeDef* huart) { m_modbusblock.initialize(huart); diff --git a/usrc/board_base/app_share/h2o2_sensor_driver.cpp b/usrc/board_base/app_share/h2o2_sensor_driver.cpp index 0ad2b16..3fbb39b 100644 --- a/usrc/board_base/app_share/h2o2_sensor_driver.cpp +++ b/usrc/board_base/app_share/h2o2_sensor_driver.cpp @@ -35,6 +35,8 @@ void H2O2SensorDriver::initialize(UART_HandleTypeDef* huart, ADC_HandleTypeDef* osThreadDef(H2O2CaptureThread, c_onH2O2CaptureThread, osPriorityNormal, 0, 1024); H2O2CaptureThreadId = osThreadCreate(osThread(H2O2CaptureThread), this); + m_isInitialized = true; + } /*********************************************************************************************************************** diff --git a/usrc/board_base/app_share/h2o2_sensor_driver.hpp b/usrc/board_base/app_share/h2o2_sensor_driver.hpp index 4354849..9682dd6 100644 --- a/usrc/board_base/app_share/h2o2_sensor_driver.hpp +++ b/usrc/board_base/app_share/h2o2_sensor_driver.hpp @@ -10,9 +10,12 @@ class H2O2SensorDriver { ZADC m_H2O2Adc; // H2O2传感器控制 HMP110 m_HMP110; // H2O2传感器 int32_t m_detectId = -1; + bool m_isInitialized = false; public: void initialize(UART_HandleTypeDef* huart, ADC_HandleTypeDef* hadc, int32_t adcChannel); + bool isInitialized() { return m_isInitialized; } + bool h2o2_sensor_is_online(); int32_t h2o2_sensor_read_calibration_date(int32_t* year, int32_t* month, int32_t* day); int32_t h2o2_sensor_read_sub_ic_errorcode(); diff --git a/usrc/board_base/app_share/heater_controller.hpp b/usrc/board_base/app_share/heater_controller.hpp index bf16fa0..bb545b8 100644 --- a/usrc/board_base/app_share/heater_controller.hpp +++ b/usrc/board_base/app_share/heater_controller.hpp @@ -8,14 +8,18 @@ class HeaterController { ZGPIO m_Heater_ctrlGpio; ZADC m_Heater_electricCurrentAdc; ZADC m_Heater_temperatureAdc; + bool m_isInitialized = false; public: void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich, ADC_HandleTypeDef* tadc, uint32_t tch) { m_Heater_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false); m_Heater_electricCurrentAdc.initialize("HeaterCurrentAdc", iadc, ich); m_Heater_temperatureAdc.initialize("temperatureAdc", iadc, tch); + m_isInitialized = true; } + bool isInitialized() { return m_isInitialized; } + void heater_ctrl(int32_t val) { m_Heater_ctrlGpio.write(val); } void heater_ctrl_safe_valve(int32_t val) {} int32_t heater_read_temperature_data() { return heaterAdc2Temp(m_Heater_temperatureAdc.getCacheVal()); } diff --git a/usrc/board_base/app_share/proportional_valve_ctrl.hpp b/usrc/board_base/app_share/proportional_valve_ctrl.hpp index 93ee3f9..6ef14d0 100644 --- a/usrc/board_base/app_share/proportional_valve_ctrl.hpp +++ b/usrc/board_base/app_share/proportional_valve_ctrl.hpp @@ -6,10 +6,15 @@ using namespace transmit_disfection_protocol; class ProportionalValveCtrl { PreportionalValveCtrl valve; + bool m_isInitialized = false; public: - void initialize(UART_HandleTypeDef* huart) { valve.initialize(huart); } + void initialize(UART_HandleTypeDef* huart) { + valve.initialize(huart); + m_isInitialized = true; + } + bool isInitialized() { return m_isInitialized; } void fn_proportional_set_valve(ProcessContext* cxt) { int32_t err = valve.setValvePos(GET_PARAM(0), GET_PARAM(1)); diff --git a/usrc/board_base/app_share/pxxpsbus.hpp b/usrc/board_base/app_share/pxxpsbus.hpp index c57accf..4053bf2 100644 --- a/usrc/board_base/app_share/pxxpsbus.hpp +++ b/usrc/board_base/app_share/pxxpsbus.hpp @@ -6,9 +6,14 @@ using namespace transmit_disfection_protocol; class PXXPSBus { PXXPressureSensorBus psbus; + bool m_isInitialized = false; public: - void initialize(UART_HandleTypeDef* huart) { psbus.init(huart); } + void initialize(UART_HandleTypeDef* huart) { + psbus.init(huart); + m_isInitialized = true; + } + bool isInitialized() { return m_isInitialized; } void fn_psbus_read_data(ProcessContext* cxt) { CHECK_PARAM_LEN(PRAAM_LEN(), 1); diff --git a/usrc/board_base/app_share/tmc_motor_group.cpp b/usrc/board_base/app_share/tmc_motor_group.cpp index 9720251..55d06f0 100644 --- a/usrc/board_base/app_share/tmc_motor_group.cpp +++ b/usrc/board_base/app_share/tmc_motor_group.cpp @@ -27,7 +27,7 @@ static void motorErrorFlag_set(int subindex, bool val) { static void onMotorMonitorTimer(void const* argument) { // 电机异常检查 - TmcMotorGroup* DEVICE = (TmcMotorGroup*)argument; + TmcMotorGroup* DEVICE = (TmcMotorGroup*)argument; report_exeception_data_t data; for (size_t i = 0; i < DEVICE->motorNum(); i++) { bool estate = motorErrorFlag_get(i); @@ -101,6 +101,7 @@ void TmcMotorGroup::initialize(Pin_t tmcPowerPin, TMC51X0Cfg cfg0, TMC51X0Cfg cf osTimerDef(MotorMonitorTimer, onMotorMonitorTimer); MotorMonitorTimerId = osTimerCreate(osTimer(MotorMonitorTimer), osTimerPeriodic, this); osTimerStart(MotorMonitorTimerId, 1000); + m_isInitialized = true; } #define MOTOR_CHECK() \ diff --git a/usrc/board_base/app_share/tmc_motor_group.hpp b/usrc/board_base/app_share/tmc_motor_group.hpp index a236182..a177a83 100644 --- a/usrc/board_base/app_share/tmc_motor_group.hpp +++ b/usrc/board_base/app_share/tmc_motor_group.hpp @@ -8,9 +8,12 @@ class TmcMotorGroup { public: TMC51X0 m_motor[2]; // 蠕动泵控制 ZGPIO m_tmc_power_pin; // + bool m_isInitialized = false; public: - void initialize(Pin_t tmcPowerPin, TMC51X0Cfg cfg0, TMC51X0Cfg cfg1); + void initialize(Pin_t tmcPowerPin, TMC51X0Cfg cfg0, TMC51X0Cfg cfg1); + bool isInitialized() { return m_isInitialized; } + int motorNum() { return 2; } TMC51X0* motor(int32_t index) { if (index < 0 || index >= motorNum()) { diff --git a/usrc/board_base/app_share/warning_light_driver.hpp b/usrc/board_base/app_share/warning_light_driver.hpp index 1695938..1bb15b0 100644 --- a/usrc/board_base/app_share/warning_light_driver.hpp +++ b/usrc/board_base/app_share/warning_light_driver.hpp @@ -9,6 +9,7 @@ class WarningLightDriver { ZGPIO triLight_G; ZGPIO triLight_B; ZGPIO triLight_BEEP; + bool m_isInitialized = false; public: void initialize(Pin_t r, Pin_t g, Pin_t b, Pin_t beep) { @@ -16,7 +17,11 @@ class WarningLightDriver { triLight_G.initAsOutput(g, kxs_gpio_nopull, false, false); triLight_B.initAsOutput(b, kxs_gpio_nopull, false, false); triLight_BEEP.initAsOutput(beep, kxs_gpio_nopull, false, false); + m_isInitialized = true; + } + bool isInitialized() { return m_isInitialized; } + void setRGBW(int32_t r, int32_t g, int32_t b, int32_t beep) { if (r > 0) triLight_R.write(1); diff --git a/usrc/board_base/app_share/water_sensor_mgr.hpp b/usrc/board_base/app_share/water_sensor_mgr.hpp new file mode 100644 index 0000000..7aaabd6 --- /dev/null +++ b/usrc/board_base/app_share/water_sensor_mgr.hpp @@ -0,0 +1,29 @@ +#pragma once +#include "base/appdep.hpp" + +namespace iflytop { +using namespace transmit_disfection_protocol; + +class WaterSensorMgr { + ZGPIO evaporationBinWS; // 蒸发仓水浸 + ZGPIO deviceBottomWS; // 设备底部水浸 + bool m_isInitialized = false; + + public: + void initialize(Pin_t evaporationBinWSPin, Pin_t deviceBottomWSPin) { + evaporationBinWS.initAsInput(evaporationBinWSPin, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + deviceBottomWS.initAsInput(deviceBottomWSPin, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + m_isInitialized = true; + } + bool isInitialized() { return m_isInitialized; } + + void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { + int32_t val = evaporationBinWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + } + void fn_device_bottom_water_sensor_read_state(ProcessContext* cxt) { + int32_t val = deviceBottomWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + } +}; +} // namespace iflytop \ No newline at end of file diff --git a/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp b/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp deleted file mode 100644 index de1ca22..0000000 --- a/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once -#include "board/large_space_dm_liquid_ctrl_board.hpp" -namespace iflytop { - -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// ------------------------------------------------------ -#define TAG "LiquidCtrl" -#define ThisClass LargeSpaceDmLiquidCtrlBoardPP -#define DEVICE LargeSpaceDmLiquidCtrlBoard::ins() - -// ------------------------------------------------------ - -class LargeSpaceDmLiquidCtrlBoardPP : public IProtocolProcesser { - public: - static LargeSpaceDmLiquidCtrlBoardPP* ins() { - static LargeSpaceDmLiquidCtrlBoardPP ins; - return &ins; - } - virtual const char* getName() override { return "LiquidCtrlBoardCmdProcesser"; }; - - virtual void initialize() override { - REG_FN(fn_evaporation_tank_water_sensor_read_state); - REG_FN(fn_device_bottom_water_sensor_read_state); - // - BIND_FN(WarningLightDriver, &DEVICE->wlDriver, fn_triple_warning_light_ctl); - - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_rotate); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_stop); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ihold_irun_idelay); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_acc); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ramp); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_tzw); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_get_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_ping); - - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_read_data); - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_scan); - } - - private: - void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->evaporationBinWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } - void fn_device_bottom_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->deviceBottomWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop diff --git a/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx new file mode 100644 index 0000000..de1ca22 --- /dev/null +++ b/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx @@ -0,0 +1,59 @@ +#pragma once +#include "board/large_space_dm_liquid_ctrl_board.hpp" +namespace iflytop { + +using namespace std; +using namespace zscanprotocol; +using namespace transmit_disfection_protocol; + +// ------------------------------------------------------ +#define TAG "LiquidCtrl" +#define ThisClass LargeSpaceDmLiquidCtrlBoardPP +#define DEVICE LargeSpaceDmLiquidCtrlBoard::ins() + +// ------------------------------------------------------ + +class LargeSpaceDmLiquidCtrlBoardPP : public IProtocolProcesser { + public: + static LargeSpaceDmLiquidCtrlBoardPP* ins() { + static LargeSpaceDmLiquidCtrlBoardPP ins; + return &ins; + } + virtual const char* getName() override { return "LiquidCtrlBoardCmdProcesser"; }; + + virtual void initialize() override { + REG_FN(fn_evaporation_tank_water_sensor_read_state); + REG_FN(fn_device_bottom_water_sensor_read_state); + // + BIND_FN(WarningLightDriver, &DEVICE->wlDriver, fn_triple_warning_light_ctl); + + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_rotate); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_stop); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ihold_irun_idelay); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_acc); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ramp); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_tzw); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_subic_reg); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_get_subic_reg); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_ping); + + BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_read_data); + BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_scan); + } + + private: + void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { + int32_t val = DEVICE->evaporationBinWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + } + void fn_device_bottom_water_sensor_read_state(ProcessContext* cxt) { + int32_t val = DEVICE->deviceBottomWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + } +}; + +#undef ThisClass +#undef DEVICE +#undef TAG + +} // namespace iflytop diff --git a/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp b/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp deleted file mode 100644 index 3af3044..0000000 --- a/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once -// -#include "board/large_space_dm_power_ctrl_board.hpp" - -namespace iflytop { -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// /----------------------------- -#define TAG "LargeSpaceDmPowerCtrlBoardPP" -#define ThisClass LargeSpaceDmPowerCtrlBoardPP -#define DEVICE LargeSpaceDmPowerCtrlBoard::ins() -// /----------------------------- - -class LargeSpaceDmPowerCtrlBoardPP : public IProtocolProcesser { - public: - static LargeSpaceDmPowerCtrlBoardPP* ins() { - static LargeSpaceDmPowerCtrlBoardPP ins; - return &ins; - } - - virtual void initialize() override { - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl_safe_valve); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_electric_current); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_temperature_data); - - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl_safe_valve); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_read_electric_current); - - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl_safe_valve); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_read_electric_current); - - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_calibration_date); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); - } - virtual const char* getName() override { return "LargeSpaceDmPowerCtrlBoardPP"; }; - - private: -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop diff --git a/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx new file mode 100644 index 0000000..3af3044 --- /dev/null +++ b/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx @@ -0,0 +1,50 @@ +#pragma once +// +#include "board/large_space_dm_power_ctrl_board.hpp" + +namespace iflytop { +using namespace std; +using namespace zscanprotocol; +using namespace transmit_disfection_protocol; + +// /----------------------------- +#define TAG "LargeSpaceDmPowerCtrlBoardPP" +#define ThisClass LargeSpaceDmPowerCtrlBoardPP +#define DEVICE LargeSpaceDmPowerCtrlBoard::ins() +// /----------------------------- + +class LargeSpaceDmPowerCtrlBoardPP : public IProtocolProcesser { + public: + static LargeSpaceDmPowerCtrlBoardPP* ins() { + static LargeSpaceDmPowerCtrlBoardPP ins; + return &ins; + } + + virtual void initialize() override { + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl); + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl_safe_valve); + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_electric_current); + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_temperature_data); + + BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl); + BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl_safe_valve); + BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_read_electric_current); + + BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl); + BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl_safe_valve); + BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_read_electric_current); + + BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_calibration_date); + BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); + BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); + } + virtual const char* getName() override { return "LargeSpaceDmPowerCtrlBoardPP"; }; + + private: +}; + +#undef ThisClass +#undef DEVICE +#undef TAG + +} // namespace iflytop diff --git a/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp b/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp deleted file mode 100644 index a54f75d..0000000 --- a/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once -#include "board/pipe_dm_liquid_ctrl_board.hpp" -namespace iflytop { - -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// ------------------------------------------------------ -#define TAG "LiquidCtrl" -#define ThisClass PipeDMLiquidCtrlBoardPP -#define DEVICE PipeDMLiquidCtrlBoard::ins() - -// ------------------------------------------------------ - -class PipeDMLiquidCtrlBoardPP : public IProtocolProcesser { - public: - static PipeDMLiquidCtrlBoardPP* ins() { - static PipeDMLiquidCtrlBoardPP ins; - return &ins; - } - virtual const char* getName() override { return "LiquidCtrlBoardCmdProcesser"; }; - - virtual void initialize() override { - REG_FN(fn_evaporation_tank_water_sensor_read_state); - REG_FN(fn_device_bottom_water_sensor_read_state); - // - BIND_FN(WarningLightDriver, &DEVICE->wlDriver, fn_triple_warning_light_ctl); - - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_rotate); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_stop); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ihold_irun_idelay); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_acc); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ramp); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_tzw); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_get_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_ping); - - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_read_data); - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_scan); - - // kfnProportionalValveCtrl - BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_set_valve); - BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_read_pos); - BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_is_busy); - } - - private: - void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->evaporationBinWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } - void fn_device_bottom_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->deviceBottomWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop diff --git a/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx new file mode 100644 index 0000000..a54f75d --- /dev/null +++ b/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx @@ -0,0 +1,64 @@ +#pragma once +#include "board/pipe_dm_liquid_ctrl_board.hpp" +namespace iflytop { + +using namespace std; +using namespace zscanprotocol; +using namespace transmit_disfection_protocol; + +// ------------------------------------------------------ +#define TAG "LiquidCtrl" +#define ThisClass PipeDMLiquidCtrlBoardPP +#define DEVICE PipeDMLiquidCtrlBoard::ins() + +// ------------------------------------------------------ + +class PipeDMLiquidCtrlBoardPP : public IProtocolProcesser { + public: + static PipeDMLiquidCtrlBoardPP* ins() { + static PipeDMLiquidCtrlBoardPP ins; + return &ins; + } + virtual const char* getName() override { return "LiquidCtrlBoardCmdProcesser"; }; + + virtual void initialize() override { + REG_FN(fn_evaporation_tank_water_sensor_read_state); + REG_FN(fn_device_bottom_water_sensor_read_state); + // + BIND_FN(WarningLightDriver, &DEVICE->wlDriver, fn_triple_warning_light_ctl); + + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_rotate); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_stop); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ihold_irun_idelay); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_acc); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ramp); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_tzw); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_subic_reg); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_get_subic_reg); + BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_ping); + + BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_read_data); + BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_scan); + + // kfnProportionalValveCtrl + BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_set_valve); + BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_read_pos); + BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_is_busy); + } + + private: + void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { + int32_t val = DEVICE->evaporationBinWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + } + void fn_device_bottom_water_sensor_read_state(ProcessContext* cxt) { + int32_t val = DEVICE->deviceBottomWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + } +}; + +#undef ThisClass +#undef DEVICE +#undef TAG + +} // namespace iflytop diff --git a/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp b/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp deleted file mode 100644 index dd53ca9..0000000 --- a/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once -// -#include "board/pipe_dm_power_ctrl_board.hpp" - -namespace iflytop { -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// /----------------------------- -#define TAG "PipeDMPowerCtrlBoardPP" -#define ThisClass PipeDMPowerCtrlBoardPP -#define DEVICE PipeDMPowerCtrlBoard::ins() -// /----------------------------- - -class PipeDMPowerCtrlBoardPP : public IProtocolProcesser { - public: - static PipeDMPowerCtrlBoardPP* ins() { - static PipeDMPowerCtrlBoardPP ins; - return &ins; - } - - virtual void initialize() override { - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl_safe_valve); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_electric_current); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_temperature_data); - - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl_safe_valve); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_read_electric_current); - - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl_safe_valve); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_read_electric_current); - - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_calibration_date); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); - } - virtual const char* getName() override { return "PipeDMPowerCtrlBoardPP"; }; - - private: -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop diff --git a/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx new file mode 100644 index 0000000..dd53ca9 --- /dev/null +++ b/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx @@ -0,0 +1,50 @@ +#pragma once +// +#include "board/pipe_dm_power_ctrl_board.hpp" + +namespace iflytop { +using namespace std; +using namespace zscanprotocol; +using namespace transmit_disfection_protocol; + +// /----------------------------- +#define TAG "PipeDMPowerCtrlBoardPP" +#define ThisClass PipeDMPowerCtrlBoardPP +#define DEVICE PipeDMPowerCtrlBoard::ins() +// /----------------------------- + +class PipeDMPowerCtrlBoardPP : public IProtocolProcesser { + public: + static PipeDMPowerCtrlBoardPP* ins() { + static PipeDMPowerCtrlBoardPP ins; + return &ins; + } + + virtual void initialize() override { + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl); + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl_safe_valve); + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_electric_current); + BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_temperature_data); + + BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl); + BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl_safe_valve); + BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_read_electric_current); + + BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl); + BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl_safe_valve); + BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_read_electric_current); + + BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_calibration_date); + BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); + BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); + } + virtual const char* getName() override { return "PipeDMPowerCtrlBoardPP"; }; + + private: +}; + +#undef ThisClass +#undef DEVICE +#undef TAG + +} // namespace iflytop diff --git a/usrc/protocol_processer_impl/public_cmd_processer.hpp b/usrc/protocol_processer_impl/public_cmd_processer.hpp index 4058b16..29c9d7e 100644 --- a/usrc/protocol_processer_impl/public_cmd_processer.hpp +++ b/usrc/protocol_processer_impl/public_cmd_processer.hpp @@ -7,9 +7,8 @@ using namespace std; using namespace zscanprotocol; using namespace transmit_disfection_protocol; - -class PublicCmdProcesser : public IProtocolProcesser { - uint8_t boardResetFlag; // 0: 重启标志 +class PublicCmdProcesser { + uint8_t boardResetFlag; // 0: 重启标志 public: static PublicCmdProcesser* ins() { @@ -17,8 +16,8 @@ class PublicCmdProcesser : public IProtocolProcesser { return &ins; } - virtual void initialize() override; - virtual const char* getName() override { return "PublicCmdProcesser"; }; + virtual void initialize(); + virtual const char* getName() { return "PublicCmdProcesser"; }; private: void fn_read_board_info(ProcessContext* cxt); diff --git a/zsdk b/zsdk index 45dd762..56b0595 160000 --- a/zsdk +++ b/zsdk @@ -1 +1 @@ -Subproject commit 45dd7621fe18ad66544d4b74c7cad454d6e3bb05 +Subproject commit 56b0595562d44d5ed960fcada360556ab816ce76