From 3aa4f0838f22560f9c31f35e3185d04f5cea1376 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 9 Aug 2024 14:16:21 +0800 Subject: [PATCH] recode --- app_protocols/transmit_disfection_protocol | 2 +- usrc/base/appthread/app_period_task_mgr.cpp | 14 +++--- usrc/board/large_space_dm_liquid_ctrl_board.hpp | 9 ++++ usrc/board/large_space_dm_power_ctrl_board.hpp | 16 +++++++ .../app_share/air_compressor_controller copy.hpp | 50 ---------------------- .../app_share/air_compressor_controller.hpp | 8 ++-- usrc/board_base/app_share/blower_controller.hpp | 8 +--- usrc/board_base/app_share/heater_controller.hpp | 10 ++--- 8 files changed, 43 insertions(+), 74 deletions(-) delete mode 100644 usrc/board_base/app_share/air_compressor_controller copy.hpp diff --git a/app_protocols/transmit_disfection_protocol b/app_protocols/transmit_disfection_protocol index ccb45a7..a08705a 160000 --- a/app_protocols/transmit_disfection_protocol +++ b/app_protocols/transmit_disfection_protocol @@ -1 +1 @@ -Subproject commit ccb45a79b05794f108c060f146d1f7069686048b +Subproject commit a08705a05778e93df1922ffb42d889231ff09bf3 diff --git a/usrc/base/appthread/app_period_task_mgr.cpp b/usrc/base/appthread/app_period_task_mgr.cpp index eacbcfc..a187d12 100644 --- a/usrc/base/appthread/app_period_task_mgr.cpp +++ b/usrc/base/appthread/app_period_task_mgr.cpp @@ -23,18 +23,20 @@ void AppPeriodTaskMgr::regTask(const char* name, task_fn_t fn, void* cxt, int pe task[ntask].cxt = cxt; task[ntask].period = period; task[ntask].lastcalltp = HAL_GetTick(); - ZLOGI(TAG,"reg task %s", name); + ZLOGI(TAG, "reg task %s", name); ntask++; } void AppPeriodTaskMgr::onThreadCB() { - for (int i = 0; i < ntask; i++) { - if (haspassedms(task[i].lastcalltp) >= task[i].period) { - task[i].fn(task[i].cxt); - task[i].lastcalltp = HAL_GetTick(); + while (true) { + for (int i = 0; i < ntask; i++) { + if (haspassedms(task[i].lastcalltp) >= task[i].period) { + task[i].fn(task[i].cxt); + task[i].lastcalltp = HAL_GetTick(); + } } + osDelay(5); } - osDelay(5); } void AppPeriodTaskMgr::startScheduler() { osThreadDef(appPeriodTask, c_onappPeriodTaskThread, osPriorityNormal, 0, 1024); diff --git a/usrc/board/large_space_dm_liquid_ctrl_board.hpp b/usrc/board/large_space_dm_liquid_ctrl_board.hpp index 4287275..c31129c 100644 --- a/usrc/board/large_space_dm_liquid_ctrl_board.hpp +++ b/usrc/board/large_space_dm_liquid_ctrl_board.hpp @@ -27,6 +27,15 @@ class LargeSpaceDmLiquidCtrlBoard { 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 \ No newline at end of file diff --git a/usrc/board/large_space_dm_power_ctrl_board.hpp b/usrc/board/large_space_dm_power_ctrl_board.hpp index ebdc99a..14b8813 100644 --- a/usrc/board/large_space_dm_power_ctrl_board.hpp +++ b/usrc/board/large_space_dm_power_ctrl_board.hpp @@ -7,6 +7,7 @@ namespace iflytop { #define H2O2_SENSOR_TYPE_HMP110 using namespace transmit_disfection_protocol; +#define TAG "LargeSpaceDmPowerCtrlBoard" class LargeSpaceDmPowerCtrlBoard { public: HeaterController heaterCtrler; @@ -27,6 +28,21 @@ class LargeSpaceDmPowerCtrlBoard { blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); h2o2Sensor.initialize(&huart2, &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 \ No newline at end of file diff --git a/usrc/board_base/app_share/air_compressor_controller copy.hpp b/usrc/board_base/app_share/air_compressor_controller copy.hpp deleted file mode 100644 index 65f01f7..0000000 --- a/usrc/board_base/app_share/air_compressor_controller copy.hpp +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once -#include "base/appdep.hpp" - -namespace iflytop { -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -class AirCompressorController { - ZGPIO m_AirCompressor_ctrlGpio; - ZADC m_AirCompressor_iAdc; - - public: - static AirCompressorController* ins() { - static AirCompressorController instance; - return &instance; - } - - 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); - - AppPeriodTaskMgr::ins()->regTask("AirComAdc", AirCompressorController::periodTask, this, 10); - } - - // FN - void air_compressor_ctrl(int32_t val) { m_AirCompressor_ctrlGpio.write(val); } - void air_compressor_ctrl_safe_valve(int32_t val) {} - int32_t air_compressor_read_electric_current() { return airCompressorAdcToCurrent(m_AirCompressor_iAdc.getCacheVal()); } - - // PP - void fn_air_compressor_ctrl(ProcessContext* cxt) { // - air_compressor_ctrl(GET_PARAM(0)); - zcanbus_send_ack(cxt->packet, NULL, 0); - } - void fn_air_compressor_ctrl_safe_valve(ProcessContext* cxt) { // - air_compressor_ctrl_safe_valve(GET_PARAM(0)); - zcanbus_send_ack(cxt->packet, NULL, 0); - } - void fn_air_compressor_read_electric_current(ProcessContext* cxt) { // - auto val = air_compressor_read_electric_current(); - zcanbus_send_ack(cxt->packet, (uint8_t*)val, sizeof(val)); - } - - private: - static void periodTask(void* p) { ((AirCompressorController*)p)->periodTask(); } - void periodTask() { m_AirCompressor_iAdc.updateAdcValToCache(); } -}; -} // namespace iflytop - -#pragma once diff --git a/usrc/board_base/app_share/air_compressor_controller.hpp b/usrc/board_base/app_share/air_compressor_controller.hpp index 65f01f7..df2a62b 100644 --- a/usrc/board_base/app_share/air_compressor_controller.hpp +++ b/usrc/board_base/app_share/air_compressor_controller.hpp @@ -18,8 +18,6 @@ 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); - - AppPeriodTaskMgr::ins()->regTask("AirComAdc", AirCompressorController::periodTask, this, 10); } // FN @@ -27,6 +25,8 @@ class AirCompressorController { void air_compressor_ctrl_safe_valve(int32_t val) {} int32_t air_compressor_read_electric_current() { return airCompressorAdcToCurrent(m_AirCompressor_iAdc.getCacheVal()); } + int32_t air_compressor_read_iadc() { return m_AirCompressor_iAdc.getCacheVal(); } + // PP void fn_air_compressor_ctrl(ProcessContext* cxt) { // air_compressor_ctrl(GET_PARAM(0)); @@ -41,9 +41,7 @@ class AirCompressorController { zcanbus_send_ack(cxt->packet, (uint8_t*)val, sizeof(val)); } - private: - static void periodTask(void* p) { ((AirCompressorController*)p)->periodTask(); } - void periodTask() { m_AirCompressor_iAdc.updateAdcValToCache(); } + void periodTask() { m_AirCompressor_iAdc.updateAdcValToCache(); } }; } // namespace iflytop diff --git a/usrc/board_base/app_share/blower_controller.hpp b/usrc/board_base/app_share/blower_controller.hpp index 3cf9f96..0b16f99 100644 --- a/usrc/board_base/app_share/blower_controller.hpp +++ b/usrc/board_base/app_share/blower_controller.hpp @@ -1,7 +1,6 @@ #pragma once #include "base/appdep.hpp" - namespace iflytop { using namespace transmit_disfection_protocol; @@ -13,14 +12,13 @@ class BlowerController { void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich) { m_Blowser_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false); m_Blowser_electricCurrentAdc.initialize("BlowserCurrentAdc", iadc, ich); - - AppPeriodTaskMgr::ins()->regTask("blowerAdc", BlowerController::periodTask, this, 10); } // FN void blower_ctrl(int32_t val) { m_Blowser_ctrlGpio.write(val); } void blower_ctrl_safe_valve(int32_t val) {} int32_t blower_read_electric_current() { return blowserAdcToCurrent(m_Blowser_electricCurrentAdc.getCacheVal()); } + int32_t blower_read_iadc() { return m_Blowser_electricCurrentAdc.getCacheVal(); } // PP void fn_blower_ctrl(ProcessContext* cxt) { // @@ -36,8 +34,6 @@ class BlowerController { zcanbus_send_ack(cxt->packet, (uint8_t*)val, sizeof(val)); } - private: - static void periodTask(void* p) { ((BlowerController*)p)->periodTask(); } - void periodTask() { m_Blowser_electricCurrentAdc.updateAdcValToCache(); } + void periodTask() { m_Blowser_electricCurrentAdc.updateAdcValToCache(); } }; } // namespace iflytop \ No newline at end of file diff --git a/usrc/board_base/app_share/heater_controller.hpp b/usrc/board_base/app_share/heater_controller.hpp index bfc6d24..bf16fa0 100644 --- a/usrc/board_base/app_share/heater_controller.hpp +++ b/usrc/board_base/app_share/heater_controller.hpp @@ -1,7 +1,6 @@ #pragma once #include "base/appdep.hpp" - namespace iflytop { using namespace transmit_disfection_protocol; @@ -15,14 +14,14 @@ class HeaterController { m_Heater_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false); m_Heater_electricCurrentAdc.initialize("HeaterCurrentAdc", iadc, ich); m_Heater_temperatureAdc.initialize("temperatureAdc", iadc, tch); - - AppPeriodTaskMgr::ins()->regTask("HeaterController", HeaterController::periodTask, this, 10); } 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()); } int32_t heater_read_electric_current() { return hearterAdcToCurrent(m_Heater_electricCurrentAdc.getCacheVal()); } + int32_t heater_read_iadc() { return m_Heater_electricCurrentAdc.getCacheVal(); } + int32_t heater_read_tadc() { return m_Heater_temperatureAdc.getCacheVal(); } // PP void fn_heater_ctrl(ProcessContext* cxt) { // @@ -42,9 +41,8 @@ class HeaterController { zcanbus_send_ack(cxt->packet, (uint8_t*)val, sizeof(val)); } - private: - static void periodTask(void* p) { ((HeaterController*)p)->periodTask(); } - void periodTask() { + public: + void periodTask() { m_Heater_electricCurrentAdc.updateAdcValToCache(); m_Heater_temperatureAdc.updateAdcValToCache(); }