Browse Source

update

master
zhaohe 12 months 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)) {
static ZGPIO airTightnessTestChGpio;
static ZGPIO eValve;
static bool state = false;
airTightnessTestChGpio.initAsOutput(PD15, kxs_gpio_nopull, true, false);
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); // 内管路,气密性测试
eValve.write(0); // 电磁阀闭合
state = true;
zcanbus_send_ack(cxt->packet, NULL, 0);
});
REG_LAMADA_FN(kfn_air_tightness_test_release_ch, [&](ProcessContext* cxt) {
airTightnessTestChGpio.write(0); // 连接空气
eValve.write(1); // 电磁阀打开
state = false;
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 *
***********************************************************************************************************************/

21
usrc/app/ext_ch_selector_app.cpp

@ -7,17 +7,28 @@ ExtChSelector* ExtChSelector::ins() {
static ExtChSelector 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() {
ctrl0.initAsOutput(PinNull, kxs_gpio_nopull, false, false);
ctrl1.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) {
int ch = GET_PARAM(0);
ch = GET_PARAM(0);
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
#include "board/hal/hal.hpp"
#include "board/public_board.hpp"
#include "module/module.hpp"
#include "board/hal/hal.hpp"
/**
* @brief
@ -29,10 +29,12 @@ class ExtChSelector {
ZGPIO ctrl0;
ZGPIO ctrl1;
ZGPIO ctrl2;
int ch = 0;
public:
static ExtChSelector* ins();
void initialize();
void setch(int32_t ch);
};
} // 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_read_ei);
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; }
@ -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_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_is_open(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, m_ctrlGpio.read()); }
private:
void periodTask() { m_iAdc.updateAdcValToCache(); }

6
usrc/module/blower_controller.hpp

@ -29,6 +29,7 @@ class BlowerController {
bool m_iadcIsInit = false;
bool m_isInitialized = false;
bool isopen = false;
public:
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_is_error);
BIND_FN(BlowerController, this, fn_blower_read_ei_adc_raw);
}
BIND_FN(BlowerController, this, fn_blower_is_open);
}
/***********************************************************************************************************************
* FN *
@ -114,6 +116,7 @@ class BlowerController {
void fn_blower_ctrl(ProcessContext* cxt) { //
blower_ctrl(GET_PARAM(0));
zcanbus_send_ack(cxt->packet, NULL, 0);
isopen = GET_PARAM(0) > 0 ? true : false;
}
void fn_blower_ctrl_safe_valve(ProcessContext* cxt) { //
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_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_open(ProcessContext* cxt) { zcanbus_send_ack(cxt->packet, isopen); }
private:
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_ei_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; }
@ -62,6 +63,9 @@ class HeaterController {
auto val = m_tempAdc.getCacheVal();
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:
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);
}
} 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) {
motorErrorFlag_set(i, false);
} 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 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) {
data.ecode = kerr_motor_reset_error;
} 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_get_subic_reg);
BIND_FN(TmcMotorGroup, this, fn_pump_ping);
BIND_FN(TmcMotorGroup, this, fn_pump_is_run);
}
#define MOTOR_CHECK() \
@ -225,3 +243,10 @@ void TmcMotorGroup::fn_pump_ping(ProcessContext* cxt) {
MOTOR_CHECK();
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_get_subic_reg(ProcessContext* cxt);
void fn_pump_ping(ProcessContext* cxt);
void fn_pump_is_run(ProcessContext* cxt);
public:
};

10
usrc/module/warning_light_driver.hpp

@ -19,6 +19,7 @@ class WarningLightDriver {
triLight_BEEP.initAsOutput(beep, kxs_gpio_nopull, false, false);
m_isInitialized = true;
BIND_FN(WarningLightDriver, this, fn_triple_warning_light_ctl);
BIND_FN(WarningLightDriver, this, fn_triple_warning_light_read_state);
}
bool isInitialized() { return m_isInitialized; }
@ -57,5 +58,14 @@ class WarningLightDriver {
setRGBW(r, g, b, warning);
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

2
usrc/protocol_processer_impl/public_cmd_processer.cpp

@ -12,6 +12,7 @@ void PublicCmdProcesser::initialize() {
REG_FN(fn_heart_ping);
REG_FN(fn_clear_reset_flag);
REG_FN(fn_enable_report);
REG_FN(fn_reset_board);
}
void PublicCmdProcesser::fn_read_board_info(ProcessContext* cxt) {
@ -60,3 +61,4 @@ void PublicCmdProcesser::fn_enable_report(ProcessContext* cxt) {
gEnableReportFlag = GET_PARAM(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_clear_reset_flag(ProcessContext* cxt);
void fn_enable_report(ProcessContext* cxt);
void fn_reset_board(ProcessContext* cxt);
};
} // namespace iflytop

2
zsdk

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