Browse Source

update

master
zhaohe 1 year ago
parent
commit
605fcbf13b
  1. 2
      app_protocols/transmit_disfection_protocol
  2. 9
      usrc/app/dmapp.cpp
  3. 21
      usrc/app/ext_ch_selector_app.cpp
  4. 4
      usrc/app/ext_ch_selector_app.hpp
  5. 2
      usrc/module/air_compressor_controller.hpp
  6. 6
      usrc/module/blower_controller.hpp
  7. 4
      usrc/module/heater_controller.hpp
  8. 29
      usrc/module/tmc_motor_group.cpp
  9. 1
      usrc/module/tmc_motor_group.hpp
  10. 10
      usrc/module/warning_light_driver.hpp
  11. 2
      usrc/protocol_processer_impl/public_cmd_processer.cpp
  12. 1
      usrc/protocol_processer_impl/public_cmd_processer.hpp
  13. 2
      zsdk

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit 3cb7df42d6b6d1a3528def1efb837f4b3af3b60f
Subproject commit efcd6e0f0e8a2494886d59305738738c68bb930b

9
usrc/app/dmapp.cpp

@ -133,24 +133,27 @@ void DisinfectionApp::initialize() {
if (isBoardType(kPipeDMLiquidCtrlBoard)) { if (isBoardType(kPipeDMLiquidCtrlBoard)) {
static ZGPIO airTightnessTestChGpio; static ZGPIO airTightnessTestChGpio;
static ZGPIO eValve; static ZGPIO eValve;
static bool state = false;
airTightnessTestChGpio.initAsOutput(PD15, kxs_gpio_nopull, true, false); airTightnessTestChGpio.initAsOutput(PD15, kxs_gpio_nopull, true, false);
eValve.initAsOutput(PD14, kxs_gpio_nopull, false, true); eValve.initAsOutput(PD14, kxs_gpio_nopull, false, true);
REG_LAMADA_FN(kfn_air_tightness_test_close_off_ch, [&](ProcessContext* cxt) {
REG_LAMADA_FN(kfn_air_tightness_test_cutoff_ch, [&](ProcessContext* cxt) {
airTightnessTestChGpio.write(1); // 内管路,气密性测试 airTightnessTestChGpio.write(1); // 内管路,气密性测试
eValve.write(0); // 电磁阀闭合 eValve.write(0); // 电磁阀闭合
state = true;
zcanbus_send_ack(cxt->packet, NULL, 0); zcanbus_send_ack(cxt->packet, NULL, 0);
}); });
REG_LAMADA_FN(kfn_air_tightness_test_release_ch, [&](ProcessContext* cxt) { REG_LAMADA_FN(kfn_air_tightness_test_release_ch, [&](ProcessContext* cxt) {
airTightnessTestChGpio.write(0); // 连接空气 airTightnessTestChGpio.write(0); // 连接空气
eValve.write(1); // 电磁阀打开 eValve.write(1); // 电磁阀打开
state = false;
zcanbus_send_ack(cxt->packet, NULL, 0); zcanbus_send_ack(cxt->packet, NULL, 0);
}); });
// kfn_air_tightness_test_is_cutoff
REG_LAMADA_FN(kfn_air_tightness_test_is_cutoff, [&](ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, state); });
} }
} }
/*********************************************************************************************************************** /***********************************************************************************************************************
* PROTOCOL_BIND * * PROTOCOL_BIND *
***********************************************************************************************************************/ ***********************************************************************************************************************/

21
usrc/app/ext_ch_selector_app.cpp

@ -7,17 +7,28 @@ ExtChSelector* ExtChSelector::ins() {
static ExtChSelector instance; static ExtChSelector instance;
return &instance; return &instance;
} }
void ExtChSelector::setch(int32_t ch) {
if (ch == kext_ch_disinfection) {
} else if (ch == kext_ch_degradation) {
} else if (ch == kext_ch_dehumidification) {
}
}
void ExtChSelector::initialize() { void ExtChSelector::initialize() {
ctrl0.initAsOutput(PinNull, kxs_gpio_nopull, false, false); ctrl0.initAsOutput(PinNull, kxs_gpio_nopull, false, false);
ctrl1.initAsOutput(PinNull, kxs_gpio_nopull, false, false); ctrl1.initAsOutput(PinNull, kxs_gpio_nopull, false, false);
ctrl2.initAsOutput(PinNull, kxs_gpio_nopull, false, false); ctrl2.initAsOutput(PinNull, kxs_gpio_nopull, false, false);
setch(ch);
REG_LAMADA_FN(kfn_ext_ch_selector_set_ch, [&](ProcessContext* cxt) { REG_LAMADA_FN(kfn_ext_ch_selector_set_ch, [&](ProcessContext* cxt) {
int ch = GET_PARAM(0);
ch = GET_PARAM(0);
ZLOGI(TAG, "ext_ch_selector_set_ch : %d", ch); ZLOGI(TAG, "ext_ch_selector_set_ch : %d", ch);
if (ch == kext_ch_disinfection) {
} else if (ch == kext_ch_degradation) {
} else if (ch == kext_ch_dehumidification) {
}
setch(ch);
}); });
REG_LAMADA_FN(kfn_ext_ch_selector_get_ch, [&](ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, (uint8_t*)&ch, sizeof(ch)); });
// kfn_ext_ch_selector_get_ch
} }

4
usrc/app/ext_ch_selector_app.hpp

@ -1,7 +1,7 @@
#pragma once #pragma once
#include "board/hal/hal.hpp"
#include "board/public_board.hpp" #include "board/public_board.hpp"
#include "module/module.hpp" #include "module/module.hpp"
#include "board/hal/hal.hpp"
/** /**
* @brief * @brief
@ -29,10 +29,12 @@ class ExtChSelector {
ZGPIO ctrl0; ZGPIO ctrl0;
ZGPIO ctrl1; ZGPIO ctrl1;
ZGPIO ctrl2; ZGPIO ctrl2;
int ch = 0;
public: public:
static ExtChSelector* ins(); static ExtChSelector* ins();
void initialize(); void initialize();
void setch(int32_t ch);
}; };
} // namespace iflytop } // namespace iflytop

2
usrc/module/air_compressor_controller.hpp

@ -28,6 +28,7 @@ class AirCompressorController {
BIND_FN(AirCompressorController, this, fn_air_compressor_ctrl_safe_valve); BIND_FN(AirCompressorController, this, fn_air_compressor_ctrl_safe_valve);
BIND_FN(AirCompressorController, this, fn_air_compressor_read_ei); BIND_FN(AirCompressorController, this, fn_air_compressor_read_ei);
BIND_FN(AirCompressorController, this, fn_air_compressor_read_ei_adc_raw); BIND_FN(AirCompressorController, this, fn_air_compressor_read_ei_adc_raw);
BIND_FN(AirCompressorController, this, fn_air_compressor_is_open);
} }
bool isInitialized() { return m_isInitialized; } bool isInitialized() { return m_isInitialized; }
@ -43,6 +44,7 @@ class AirCompressorController {
void fn_air_compressor_ctrl_safe_valve(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, NULL, 0); } void fn_air_compressor_ctrl_safe_valve(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, NULL, 0); }
void fn_air_compressor_read_ei(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, airCompressorAdcToCurrent(m_iAdc.getCacheVal())); } void fn_air_compressor_read_ei(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, airCompressorAdcToCurrent(m_iAdc.getCacheVal())); }
void fn_air_compressor_read_ei_adc_raw(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, m_iAdc.getCacheVal()); } void fn_air_compressor_read_ei_adc_raw(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, m_iAdc.getCacheVal()); }
void fn_air_compressor_is_open(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, m_ctrlGpio.read()); }
private: private:
void periodTask() { m_iAdc.updateAdcValToCache(); } void periodTask() { m_iAdc.updateAdcValToCache(); }

6
usrc/module/blower_controller.hpp

@ -29,6 +29,7 @@ class BlowerController {
bool m_iadcIsInit = false; bool m_iadcIsInit = false;
bool m_isInitialized = false; bool m_isInitialized = false;
bool isopen = false;
public: public:
void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich) { void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich) {
@ -67,7 +68,8 @@ class BlowerController {
BIND_FN(BlowerController, this, fn_blower_read_ei); BIND_FN(BlowerController, this, fn_blower_read_ei);
BIND_FN(BlowerController, this, fn_blower_is_error); BIND_FN(BlowerController, this, fn_blower_is_error);
BIND_FN(BlowerController, this, fn_blower_read_ei_adc_raw); BIND_FN(BlowerController, this, fn_blower_read_ei_adc_raw);
}
BIND_FN(BlowerController, this, fn_blower_is_open);
}
/*********************************************************************************************************************** /***********************************************************************************************************************
* FN * * FN *
@ -114,6 +116,7 @@ class BlowerController {
void fn_blower_ctrl(ProcessContext* cxt) { // void fn_blower_ctrl(ProcessContext* cxt) { //
blower_ctrl(GET_PARAM(0)); blower_ctrl(GET_PARAM(0));
zcanbus_send_ack(cxt->packet, NULL, 0); zcanbus_send_ack(cxt->packet, NULL, 0);
isopen = GET_PARAM(0) > 0 ? true : false;
} }
void fn_blower_ctrl_safe_valve(ProcessContext* cxt) { // void fn_blower_ctrl_safe_valve(ProcessContext* cxt) { //
blower_ctrl_safe_valve(GET_PARAM(0)); blower_ctrl_safe_valve(GET_PARAM(0));
@ -122,6 +125,7 @@ class BlowerController {
void fn_blower_read_ei(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, blower_read_ei()); } void fn_blower_read_ei(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, blower_read_ei()); }
void fn_blower_read_ei_adc_raw(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, m_iadc.getCacheVal()); } void fn_blower_read_ei_adc_raw(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, m_iadc.getCacheVal()); }
void fn_blower_is_error(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, blower_is_error()); } void fn_blower_is_error(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, blower_is_error()); }
void fn_blower_is_open(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, isopen); }
private: private:
void mini_pwm_blower_ctrl(int32_t duty) { void mini_pwm_blower_ctrl(int32_t duty) {

4
usrc/module/heater_controller.hpp

@ -24,6 +24,7 @@ class HeaterController {
BIND_FN(HeaterController, this, fn_heater_read_temperature_data); BIND_FN(HeaterController, this, fn_heater_read_temperature_data);
BIND_FN(HeaterController, this, fn_heater_read_ei_adc_raw); BIND_FN(HeaterController, this, fn_heater_read_ei_adc_raw);
BIND_FN(HeaterController, this, fn_heater_read_temperature_data_adc_raw); BIND_FN(HeaterController, this, fn_heater_read_temperature_data_adc_raw);
BIND_FN(HeaterController, this, fn_heater_is_open);
} }
bool isInitialized() { return m_isInitialized; } bool isInitialized() { return m_isInitialized; }
@ -62,6 +63,9 @@ class HeaterController {
auto val = m_tempAdc.getCacheVal(); auto val = m_tempAdc.getCacheVal();
zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val));
} }
void fn_heater_is_open(ProcessContext* cxt) { //
zcanbus_send_ack(cxt->packet, m_ctrlGpio.read());
}
private: private:
void periodTask() { void periodTask() {

29
usrc/module/tmc_motor_group.cpp

@ -48,12 +48,29 @@ static void onMotorMonitorTimer(void const* argument) {
zcanbus_send_emergency_report(kreport_exception_error, (uint8_t*)&data, sizeof(data), 100); zcanbus_send_emergency_report(kreport_exception_error, (uint8_t*)&data, sizeof(data), 100);
} }
} else { } else {
auto gstate = DEVICE->motor(i)->getGState();
bool flag = gstate.reset || gstate.drv_err || gstate.uv_cp;
auto gstate = DEVICE->motor(i)->getGState();
auto gstatus = DEVICE->motor(i)->getDevStatus();
bool flag = gstate.reset || gstate.drv_err || gstate.uv_cp;
if (!flag && estate) { if (!flag && estate) {
motorErrorFlag_set(i, false); motorErrorFlag_set(i, false);
} else if (flag && !estate) { } else if (flag && !estate) {
ZLOGE(TAG, "motor %d error, reset %d, drv_err %d, uv_cp %d", i, gstate.reset, gstate.drv_err, gstate.uv_cp); ZLOGE(TAG, "motor %d error, reset %d, drv_err %d, uv_cp %d", i, gstate.reset, gstate.drv_err, gstate.uv_cp);
ZLOGE(TAG, "motor %d sg_result :%d ", i, gstatus.sg_result);
ZLOGE(TAG, "motor %d reserved0 :%d ", i, gstatus.reserved0);
ZLOGE(TAG, "motor %d fsactive :%d ", i, gstatus.fsactive);
ZLOGE(TAG, "motor %d cs_actual :%d ", i, gstatus.cs_actual);
ZLOGE(TAG, "motor %d reserved1 :%d ", i, gstatus.reserved1);
ZLOGE(TAG, "motor %d stallguard :%d ", i, gstatus.stallguard);
ZLOGE(TAG, "motor %d ot :%d ", i, gstatus.ot);
ZLOGE(TAG, "motor %d otpw :%d ", i, gstatus.otpw);
ZLOGE(TAG, "motor %d s2ga :%d ", i, gstatus.s2ga);
ZLOGE(TAG, "motor %d s2gb :%d ", i, gstatus.s2gb);
ZLOGE(TAG, "motor %d ola :%d ", i, gstatus.ola);
ZLOGE(TAG, "motor %d olb :%d ", i, gstatus.olb);
ZLOGE(TAG, "motor %d stst :%d ", i, gstatus.stst);
DEVICE->motor(i)->setdriErr(true);
if (gstate.reset) { if (gstate.reset) {
data.ecode = kerr_motor_reset_error; data.ecode = kerr_motor_reset_error;
} else if (gstate.uv_cp) { } else if (gstate.uv_cp) {
@ -120,6 +137,7 @@ void TmcMotorGroup::initialize(Pin_t tmcPowerPin, TMC51X0Cfg cfg0, TMC51X0Cfg cf
BIND_FN(TmcMotorGroup, this, fn_pump_set_subic_reg); BIND_FN(TmcMotorGroup, this, fn_pump_set_subic_reg);
BIND_FN(TmcMotorGroup, this, fn_pump_get_subic_reg); BIND_FN(TmcMotorGroup, this, fn_pump_get_subic_reg);
BIND_FN(TmcMotorGroup, this, fn_pump_ping); BIND_FN(TmcMotorGroup, this, fn_pump_ping);
BIND_FN(TmcMotorGroup, this, fn_pump_is_run);
} }
#define MOTOR_CHECK() \ #define MOTOR_CHECK() \
@ -225,3 +243,10 @@ void TmcMotorGroup::fn_pump_ping(ProcessContext* cxt) {
MOTOR_CHECK(); MOTOR_CHECK();
zcanbus_send_ack(cxt->packet, NULL, 0); zcanbus_send_ack(cxt->packet, NULL, 0);
} }
void TmcMotorGroup::fn_pump_is_run(ProcessContext* cxt) {
CHECK_PARAM_LEN(PRAAM_LEN(), 1);
MOTOR_CHECK();
auto state = motor(GET_PARAM(0))->getRampStat();
int32_t isRun = motor(GET_PARAM(0))->isReachTarget(&state);
zcanbus_send_ack(cxt->packet, isRun);
}

1
usrc/module/tmc_motor_group.hpp

@ -32,6 +32,7 @@ class TmcMotorGroup {
void fn_pump_set_subic_reg(ProcessContext* cxt); void fn_pump_set_subic_reg(ProcessContext* cxt);
void fn_pump_get_subic_reg(ProcessContext* cxt); void fn_pump_get_subic_reg(ProcessContext* cxt);
void fn_pump_ping(ProcessContext* cxt); void fn_pump_ping(ProcessContext* cxt);
void fn_pump_is_run(ProcessContext* cxt);
public: public:
}; };

10
usrc/module/warning_light_driver.hpp

@ -19,6 +19,7 @@ class WarningLightDriver {
triLight_BEEP.initAsOutput(beep, kxs_gpio_nopull, false, false); triLight_BEEP.initAsOutput(beep, kxs_gpio_nopull, false, false);
m_isInitialized = true; m_isInitialized = true;
BIND_FN(WarningLightDriver, this, fn_triple_warning_light_ctl); BIND_FN(WarningLightDriver, this, fn_triple_warning_light_ctl);
BIND_FN(WarningLightDriver, this, fn_triple_warning_light_read_state);
} }
bool isInitialized() { return m_isInitialized; } bool isInitialized() { return m_isInitialized; }
@ -57,5 +58,14 @@ class WarningLightDriver {
setRGBW(r, g, b, warning); setRGBW(r, g, b, warning);
zcanbus_send_ack(cxt->packet, NULL, 0); zcanbus_send_ack(cxt->packet, NULL, 0);
} }
// kfn_triple_warning_light_read_state
void fn_triple_warning_light_read_state(ProcessContext* cxt) {
int32_t data[4] = {0};
data[0] = triLight_R.read();
data[1] = triLight_G.read();
data[2] = triLight_B.read();
data[3] = triLight_BEEP.read();
zcanbus_send_ack(cxt->packet, (uint8_t*)&data, sizeof(data));
}
}; };
} // namespace iflytop } // namespace iflytop

2
usrc/protocol_processer_impl/public_cmd_processer.cpp

@ -12,6 +12,7 @@ void PublicCmdProcesser::initialize() {
REG_FN(fn_heart_ping); REG_FN(fn_heart_ping);
REG_FN(fn_clear_reset_flag); REG_FN(fn_clear_reset_flag);
REG_FN(fn_enable_report); REG_FN(fn_enable_report);
REG_FN(fn_reset_board);
} }
void PublicCmdProcesser::fn_read_board_info(ProcessContext* cxt) { void PublicCmdProcesser::fn_read_board_info(ProcessContext* cxt) {
@ -60,3 +61,4 @@ void PublicCmdProcesser::fn_enable_report(ProcessContext* cxt) {
gEnableReportFlag = GET_PARAM(0); gEnableReportFlag = GET_PARAM(0);
zcanbus_send_ack(cxt->packet, NULL, 0); zcanbus_send_ack(cxt->packet, NULL, 0);
} }
void PublicCmdProcesser::fn_reset_board(ProcessContext* cxt) { NVIC_SystemReset(); }

1
usrc/protocol_processer_impl/public_cmd_processer.hpp

@ -26,6 +26,7 @@ class PublicCmdProcesser {
void fn_heart_ping(ProcessContext* cxt); void fn_heart_ping(ProcessContext* cxt);
void fn_clear_reset_flag(ProcessContext* cxt); void fn_clear_reset_flag(ProcessContext* cxt);
void fn_enable_report(ProcessContext* cxt); void fn_enable_report(ProcessContext* cxt);
void fn_reset_board(ProcessContext* cxt);
}; };
} // namespace iflytop } // namespace iflytop

2
zsdk

@ -1 +1 @@
Subproject commit 4b1b1b80df20a5eca96c43f787ac3ee23708065b
Subproject commit 50565f27ea3e0128518c920d6aa8c98e299e1e54
Loading…
Cancel
Save