14 changed files with 229 additions and 584 deletions
-
2app_protocols/transmit_disfection_protocol
-
187usrc/app/dmapp.cpp
-
158usrc/app/dmapp.hpp
-
5usrc/base/protocol_processer_mgr.hpp
-
62usrc/board/draw_bar_dm_board.hpp.xx
-
42usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx
-
50usrc/board/large_space_dm_power_ctrl_board.hpp.xx
-
43usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx
-
37usrc/board/pipe_dm_power_ctrl_board.hpp.xx
-
4usrc/board_base/baseboard/large_space_dm_power_ctrl_board.cpp
-
59usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx
-
50usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx
-
64usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx
-
50usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx
@ -1 +1 @@ |
|||
Subproject commit 9b15ef0cb011476bff3659117a9e7907155a9f1b |
|||
Subproject commit 72a9aadd6793193e8b1c475d4774ad0fc4d05590 |
@ -0,0 +1,187 @@ |
|||
#include "dmapp.hpp"
|
|||
|
|||
/**
|
|||
* @brief |
|||
* |
|||
* |
|||
* 小空间和大空间硬件一样 |
|||
* |
|||
* 管道式-液路控制板 |
|||
* 相比于大空间消毒机,不同的点: |
|||
* 1.增加比例阀控制 |
|||
* 2.空压机通道控制 |
|||
* 管道式-功率板 |
|||
* 相比于大空间消毒机,不同的点: |
|||
* 1. 风机改成鼓风机(可控风速) |
|||
* |
|||
* 拉杆箱- |
|||
* |
|||
*/ |
|||
|
|||
using namespace iflytop; |
|||
using namespace transmit_disfection_protocol; |
|||
#define TAG "LargeSpaceDmPowerCtrlBoard"
|
|||
|
|||
DisinfectionApp* DisinfectionApp::ins() { |
|||
static DisinfectionApp instance; |
|||
return &instance; |
|||
} |
|||
|
|||
const char* DisinfectionApp::getName() { return "DisinfectionApp"; } |
|||
|
|||
void DisinfectionApp::initialize() { |
|||
int btid = PublicBoard::ins()->getBoardTypeId(); |
|||
//
|
|||
|
|||
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { |
|||
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); |
|||
heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); |
|||
bindHeaterCtrler(); |
|||
} |
|||
|
|||
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { |
|||
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); |
|||
blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); |
|||
bindBlowerCtrler(); |
|||
} else if (isBoardType(kPipeDMPowerCtrlBoard)) { |
|||
LargeSpaceDmPowerCtrlBoardHal::HUART2_INIT(9600, UART_STOPBITS_1); |
|||
blowerCtrler.initializeAsHighPowerUartBlower(&huart2); |
|||
bindBlowerCtrler(); |
|||
} |
|||
|
|||
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { |
|||
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); |
|||
airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); |
|||
bindAirComCtrler(); |
|||
} |
|||
|
|||
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { |
|||
LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); |
|||
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); |
|||
h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); |
|||
bindH2o2Sensor(); |
|||
} |
|||
|
|||
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*/); |
|||
bindDeviceBottomWS(); |
|||
bindEvaporationBinWS(); |
|||
} |
|||
|
|||
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { |
|||
// TMC电机初始化
|
|||
LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); |
|||
tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); |
|||
bindTmcPowerGroup(); |
|||
} |
|||
|
|||
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { |
|||
// 三色指示灯初始化
|
|||
wlDriver.initialize(PD8, PD7, PD9, PD10); |
|||
bindWlDriver(); |
|||
} |
|||
|
|||
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { |
|||
// 压力传感器初始化
|
|||
osDelay(1500); // 等待传感器上电
|
|||
LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); |
|||
psBus.initialize(&huart3); |
|||
bindPsBus(); |
|||
} |
|||
// 比例阀初始化
|
|||
if (isBoardType(kPipeDMLiquidCtrlBoard)) { |
|||
LargeSpaceDMLiquidCtrlBoardHal::HUART2_INIT(9600); |
|||
proportionalValveCtrl.initialize(&huart2); |
|||
bindProportionalValveCtrl(); |
|||
} |
|||
|
|||
// 气密性测试通道
|
|||
if (isBoardType(kPipeDMLiquidCtrlBoard)) { |
|||
static ZGPIO airTightnessTestChGpio; |
|||
static ZGPIO eValve; |
|||
airTightnessTestChGpio.initAsOutput(PD15, kxs_gpio_nopull, true, false); |
|||
eValve.initAsOutput(PD14, kxs_gpio_nopull, false, true); |
|||
|
|||
REG_LAMADA_FN(kfn_air_tightness_test_close_ch, [&](ProcessContext* cxt) { |
|||
airTightnessTestChGpio.write(1); // 内管路,气密性测试
|
|||
eValve.write(0); // 电磁阀闭合
|
|||
zcanbus_send_ack(cxt->packet, NULL, 0); |
|||
}); |
|||
REG_LAMADA_FN(kfn_air_tightness_test_recover_ch, [&](ProcessContext* cxt) { |
|||
airTightnessTestChGpio.write(0); // 连接空气
|
|||
eValve.write(1); // 电磁阀打开
|
|||
zcanbus_send_ack(cxt->packet, NULL, 0); |
|||
}); |
|||
} |
|||
} |
|||
|
|||
/***********************************************************************************************************************
|
|||
* PROTOCOL_BIND * |
|||
***********************************************************************************************************************/ |
|||
void DisinfectionApp::bindHeaterCtrler() { |
|||
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); |
|||
} |
|||
|
|||
void DisinfectionApp::bindBlowerCtrler() { |
|||
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); |
|||
} |
|||
|
|||
void DisinfectionApp::bindAirComCtrler() { |
|||
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); |
|||
} |
|||
|
|||
void DisinfectionApp::bindH2o2Sensor() { |
|||
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); |
|||
} |
|||
void DisinfectionApp::bindWlDriver() { BIND_FN(WarningLightDriver, wlDriver, fn_triple_warning_light_ctl); } |
|||
|
|||
void DisinfectionApp::bindTmcPowerGroup() { |
|||
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); |
|||
} |
|||
|
|||
void DisinfectionApp::bindPsBus() { |
|||
BIND_FN(PXXPSBus, psBus, fn_psbus_read_data); |
|||
BIND_FN(PXXPSBus, psBus, fn_psbus_scan); |
|||
} |
|||
|
|||
void DisinfectionApp::bindEvaporationBinWS() { |
|||
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)); |
|||
})); |
|||
} |
|||
|
|||
void DisinfectionApp::bindDeviceBottomWS() { |
|||
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)); |
|||
})); |
|||
} |
|||
|
|||
void DisinfectionApp::bindProportionalValveCtrl() { |
|||
BIND_FN(ProportionalValveCtrl, &proportionalValveCtrl, fn_proportional_set_valve); |
|||
BIND_FN(ProportionalValveCtrl, &proportionalValveCtrl, fn_proportional_read_pos); |
|||
BIND_FN(ProportionalValveCtrl, &proportionalValveCtrl, fn_proportional_is_busy); |
|||
} |
@ -1,62 +0,0 @@ |
|||
#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 |
@ -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 |
@ -1,50 +0,0 @@ |
|||
#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 |
@ -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 |
@ -1,37 +0,0 @@ |
|||
#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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue