Browse Source

recode

master
zhaohe 1 year ago
parent
commit
e5db24ca22
  1. 2
      app_protocols/transmit_disfection_protocol
  2. 150
      usrc/app/dmapp.hpp
  3. 29
      usrc/app_main.cpp
  4. 2
      usrc/base/appdep.hpp
  5. 15
      usrc/base/protocol_processer_mgr.cpp
  6. 8
      usrc/base/protocol_processer_mgr.hpp
  7. 33
      usrc/base/protocol_processer_utils.hpp
  8. 62
      usrc/board/draw_bar_dm_board.hpp.xx
  9. 0
      usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx
  10. 1
      usrc/board/large_space_dm_power_ctrl_board.hpp.xx
  11. 0
      usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx
  12. 1
      usrc/board/pipe_dm_power_ctrl_board.hpp.xx
  13. 31
      usrc/board/public_board.cpp
  14. 6
      usrc/board/public_board.hpp
  15. 3
      usrc/board_base/app_share/air_compressor_controller.hpp
  16. 3
      usrc/board_base/app_share/blower_controller.hpp
  17. 2
      usrc/board_base/app_share/h2o2_sensor_driver.cpp
  18. 3
      usrc/board_base/app_share/h2o2_sensor_driver.hpp
  19. 4
      usrc/board_base/app_share/heater_controller.hpp
  20. 7
      usrc/board_base/app_share/proportional_valve_ctrl.hpp
  21. 7
      usrc/board_base/app_share/pxxpsbus.hpp
  22. 3
      usrc/board_base/app_share/tmc_motor_group.cpp
  23. 5
      usrc/board_base/app_share/tmc_motor_group.hpp
  24. 5
      usrc/board_base/app_share/warning_light_driver.hpp
  25. 29
      usrc/board_base/app_share/water_sensor_mgr.hpp
  26. 0
      usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx
  27. 0
      usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx
  28. 0
      usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx
  29. 0
      usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx
  30. 9
      usrc/protocol_processer_impl/public_cmd_processer.hpp
  31. 2
      zsdk

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit 8b73b00eacba449c5d71f7d9f0dab9abc54c6aaa
Subproject commit 9b15ef0cb011476bff3659117a9e7907155a9f1b

150
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

29
usrc/app_main.cpp

@ -2,19 +2,12 @@
#include <stdio.h>
//
#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;

2
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"
//

15
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;
}

8
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<IProtocolProcesser*> m_processers;
list<CmdProcesser> 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);

33
usrc/base/i_protocol_processer.hpp → usrc/base/protocol_processer_utils.hpp

@ -15,9 +15,6 @@ 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)
@ -31,12 +28,10 @@ using namespace transmit_disfection_protocol;
* ClassDeclear *
***********************************************************************************************************************/
class ProcessContext;
/***********************************************************************************************************************
* TYPEDEF *
***********************************************************************************************************************/
typedef function<void(ProcessContext* cxt)> cmdprocessfn_t;
/***********************************************************************************************************************
* CLASS *
***********************************************************************************************************************/
@ -53,33 +48,5 @@ class CmdProcesser {
cmdprocessfn_t fn;
CmdProcesser(int cmd, cmdprocessfn_t fn) : cmd(cmd), fn(fn) {}
};
class IProtocolProcesser {
public:
list<CmdProcesser> 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

62
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

0
usrc/board/large_space_dm_liquid_ctrl_board.hpp → usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx

1
usrc/board/large_space_dm_power_ctrl_board.hpp → usrc/board/large_space_dm_power_ctrl_board.hpp.xx

@ -7,7 +7,6 @@
*/
namespace iflytop {
#define H2O2_SENSOR_TYPE_HMP110
using namespace transmit_disfection_protocol;
#define TAG "LargeSpaceDmPowerCtrlBoard"

0
usrc/board/pipe_dm_liquid_ctrl_board.hpp → usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx

1
usrc/board/pipe_dm_power_ctrl_board.hpp → usrc/board/pipe_dm_power_ctrl_board.hpp.xx

@ -9,7 +9,6 @@
*
*/
namespace iflytop {
#define H2O2_SENSOR_TYPE_HMP110
using namespace transmit_disfection_protocol;
class PipeDMPowerCtrlBoard {

31
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

6
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

3
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); }

3
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);

2
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;
}
/***********************************************************************************************************************

3
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();

4
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()); }

7
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));

7
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);

3
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() \

5
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()) {

5
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);

29
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

0
usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp → usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx

0
usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp → usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx

0
usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp → usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx

0
usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp → usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx

9
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);

2
zsdk

@ -1 +1 @@
Subproject commit 45dd7621fe18ad66544d4b74c7cad454d6e3bb05
Subproject commit 56b0595562d44d5ed960fcada360556ab816ce76
Loading…
Cancel
Save