From 605fcbf13bc903a4ee52a4cba262de7ef91dddee Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 10 Aug 2024 23:22:48 +0800 Subject: [PATCH] update --- app_protocols/transmit_disfection_protocol | 2 +- usrc/app/dmapp.cpp | 9 ++++--- usrc/app/ext_ch_selector_app.cpp | 21 ++++++++++++---- usrc/app/ext_ch_selector_app.hpp | 4 ++- usrc/module/air_compressor_controller.hpp | 2 ++ usrc/module/blower_controller.hpp | 6 ++++- usrc/module/heater_controller.hpp | 4 +++ usrc/module/tmc_motor_group.cpp | 29 ++++++++++++++++++++-- usrc/module/tmc_motor_group.hpp | 1 + usrc/module/warning_light_driver.hpp | 10 ++++++++ .../public_cmd_processer.cpp | 2 ++ .../public_cmd_processer.hpp | 1 + zsdk | 2 +- 13 files changed, 79 insertions(+), 14 deletions(-) diff --git a/app_protocols/transmit_disfection_protocol b/app_protocols/transmit_disfection_protocol index 3cb7df4..efcd6e0 160000 --- a/app_protocols/transmit_disfection_protocol +++ b/app_protocols/transmit_disfection_protocol @@ -1 +1 @@ -Subproject commit 3cb7df42d6b6d1a3528def1efb837f4b3af3b60f +Subproject commit efcd6e0f0e8a2494886d59305738738c68bb930b diff --git a/usrc/app/dmapp.cpp b/usrc/app/dmapp.cpp index 7ddf4b4..69f3113 100644 --- a/usrc/app/dmapp.cpp +++ b/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 * ***********************************************************************************************************************/ - - diff --git a/usrc/app/ext_ch_selector_app.cpp b/usrc/app/ext_ch_selector_app.cpp index 533508e..5009336 100644 --- a/usrc/app/ext_ch_selector_app.cpp +++ b/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 } \ No newline at end of file diff --git a/usrc/app/ext_ch_selector_app.hpp b/usrc/app/ext_ch_selector_app.hpp index 91ee8cc..35aac71 100644 --- a/usrc/app/ext_ch_selector_app.hpp +++ b/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 \ No newline at end of file diff --git a/usrc/module/air_compressor_controller.hpp b/usrc/module/air_compressor_controller.hpp index 1c16e17..9bf20af 100644 --- a/usrc/module/air_compressor_controller.hpp +++ b/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(); } diff --git a/usrc/module/blower_controller.hpp b/usrc/module/blower_controller.hpp index 1589de8..58c3038 100644 --- a/usrc/module/blower_controller.hpp +++ b/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) { diff --git a/usrc/module/heater_controller.hpp b/usrc/module/heater_controller.hpp index 321f461..673237e 100644 --- a/usrc/module/heater_controller.hpp +++ b/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() { diff --git a/usrc/module/tmc_motor_group.cpp b/usrc/module/tmc_motor_group.cpp index 2eb1557..45625fd 100644 --- a/usrc/module/tmc_motor_group.cpp +++ b/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); +} diff --git a/usrc/module/tmc_motor_group.hpp b/usrc/module/tmc_motor_group.hpp index 582b45c..6509d90 100644 --- a/usrc/module/tmc_motor_group.hpp +++ b/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: }; diff --git a/usrc/module/warning_light_driver.hpp b/usrc/module/warning_light_driver.hpp index b0d456e..f1e1222 100644 --- a/usrc/module/warning_light_driver.hpp +++ b/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 \ No newline at end of file diff --git a/usrc/protocol_processer_impl/public_cmd_processer.cpp b/usrc/protocol_processer_impl/public_cmd_processer.cpp index ca35519..4990952 100644 --- a/usrc/protocol_processer_impl/public_cmd_processer.cpp +++ b/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(); } diff --git a/usrc/protocol_processer_impl/public_cmd_processer.hpp b/usrc/protocol_processer_impl/public_cmd_processer.hpp index e3e5cf6..b7a9728 100644 --- a/usrc/protocol_processer_impl/public_cmd_processer.hpp +++ b/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 \ No newline at end of file diff --git a/zsdk b/zsdk index 4b1b1b8..50565f2 160000 --- a/zsdk +++ b/zsdk @@ -1 +1 @@ -Subproject commit 4b1b1b80df20a5eca96c43f787ac3ee23708065b +Subproject commit 50565f27ea3e0128518c920d6aa8c98e299e1e54