Browse Source

recode

master
zhaohe 1 year ago
parent
commit
3aa4f0838f
  1. 2
      app_protocols/transmit_disfection_protocol
  2. 14
      usrc/base/appthread/app_period_task_mgr.cpp
  3. 9
      usrc/board/large_space_dm_liquid_ctrl_board.hpp
  4. 16
      usrc/board/large_space_dm_power_ctrl_board.hpp
  5. 50
      usrc/board_base/app_share/air_compressor_controller copy.hpp
  6. 8
      usrc/board_base/app_share/air_compressor_controller.hpp
  7. 8
      usrc/board_base/app_share/blower_controller.hpp
  8. 10
      usrc/board_base/app_share/heater_controller.hpp

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit ccb45a79b05794f108c060f146d1f7069686048b
Subproject commit a08705a05778e93df1922ffb42d889231ff09bf3

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

9
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

16
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

50
usrc/board_base/app_share/air_compressor_controller copy.hpp

@ -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

8
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

8
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

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

Loading…
Cancel
Save