Browse Source

update

master
zhaohe 1 year ago
parent
commit
df2e60dbda
  1. 2
      app_protocols/transmit_disfection_protocol
  2. 5
      usrc/app_main.cpp
  3. 21
      usrc/protocol_processer_impl/liquid_ctrl_board_cmd_processer.cpp
  4. 10
      usrc/protocol_processer_impl/liquid_ctrl_board_cmd_processer.hpp
  5. 17
      usrc/protocol_processer_impl/public_cmd_processer.cpp
  6. 4
      usrc/protocol_processer_impl/public_cmd_processer.hpp
  7. 41
      usrc/protocol_processer_mgr/i_protocol_processer.hpp
  8. 2
      zsdk

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit 0cbbc25f3b6402ae5e5122ca6e3d2337b985f182
Subproject commit 2793d57d7d94a044240958a8084b345369c1ef7a

5
usrc/app_main.cpp

@ -106,6 +106,11 @@ void umain() {
ZLOGI(TAG, "======================= init processer ================ ");
ProtocolProcesserMgr::ins()->initialize();
ProtocolProcesserMgr::ins()->regProcesser(PublicCmdProcesser::ins());
if (PublicBoard::ins()->getBoardTypeId() == kBoardType_LiquidCtrl) {
ProtocolProcesserMgr::ins()->regProcesser(LiquidCtrlBoardCmdProcesser::ins());
}
ProtocolProcesserMgr::ins()->startSchedule();
ZLOGI(TAG, "=");

21
usrc/protocol_processer_impl/liquid_ctrl_board_cmd_processer.cpp

@ -3,9 +3,9 @@
#include "board/liquid_ctrl_board.hpp"
using namespace iflytop;
#define TAG "LiquidCtrl"
#define TAG "LiquidCtrl"
#define ThisClass LiquidCtrlBoardCmdProcesser
#define DEVICE LiquidCtrlBoard::ins()
#define DEVICE LiquidCtrlBoard::ins()
/***********************************************************************************************************************
* *
@ -93,14 +93,14 @@ void LiquidCtrlBoardCmdProcesser::initialize() {
REG_FN(pump_ping);
REG_FN(triple_warning_light_ctl);
REG_FN(pressure_sensor_bus_read_data);
REG_FN(psbus_read_data);
REG_FN(psbus_scan);
motorErrorFlagCacheLock.init();
osTimerDef(MotorMonitorTimer, onMotorMonitorTimer);
MotorMonitorTimerId = osTimerCreate(osTimer(MotorMonitorTimer), osTimerPeriodic, NULL);
osTimerStart(MotorMonitorTimerId, 1000);
}
bool LiquidCtrlBoardCmdProcesser::isSupportThisCmd(ProcessContext* cxt) { return false; }
/***********************************************************************************************************************
* PUMP *
@ -225,7 +225,7 @@ void LiquidCtrlBoardCmdProcesser::device_bottom_water_sensor_read_state(ProcessC
/***********************************************************************************************************************
* PRESSURE *
***********************************************************************************************************************/
void LiquidCtrlBoardCmdProcesser::pressure_sensor_bus_read_data(ProcessContext* cxt) {
void LiquidCtrlBoardCmdProcesser::psbus_read_data(ProcessContext* cxt) {
CHECK_PARAM_LEN(PRAAM_LEN(), 1);
int32_t index = GET_PARAM(0);
@ -241,6 +241,17 @@ void LiquidCtrlBoardCmdProcesser::pressure_sensor_bus_read_data(ProcessContext*
zcanbus_send_errorack(cxt->packet, kerr_subdevice_offline);
}
}
void LiquidCtrlBoardCmdProcesser::psbus_scan(ProcessContext* cxt) {
auto* sensors = DEVICE->pressureSensorBus()->sensors;
int numSensor = DEVICE->pressureSensorBus()->sensorNum;
ack_psbus_scan_t result = {0};
result.numOnlineId = numSensor;
for (int i = 0; i < numSensor; i++) {
result.onlineId[i] = sensors[i].id;
}
zcanbus_send_ack(cxt->packet, (uint8_t*)&result, sizeof(result));
}
/***********************************************************************************************************************
* WARNING LIGHT *

10
usrc/protocol_processer_impl/liquid_ctrl_board_cmd_processer.hpp

@ -19,10 +19,6 @@ class LiquidCtrlBoardCmdProcesser : public IProtocolProcesser {
virtual void initialize() override;
virtual const char* getName() override { return "LiquidCtrlBoardCmdProcesser"; };
virtual bool isSupportThisCmd(ProcessContext* cxt) override;
virtual void process(ProcessContext* cxt) override;
private:
void evaporation_tank_water_sensor_read_state(ProcessContext* cxt);
void device_bottom_water_sensor_read_state(ProcessContext* cxt);
@ -37,8 +33,10 @@ class LiquidCtrlBoardCmdProcesser : public IProtocolProcesser {
void pump_get_subic_reg(ProcessContext* cxt);
void pump_ping(ProcessContext* cxt);
void triple_warning_light_ctl(ProcessContext* cxt);
void pressure_sensor_bus_read_data(ProcessContext* cxt);
void psbus_read_data(ProcessContext* cxt);
void psbus_scan(ProcessContext* cxt);
};
} // namespace iflytop
} // namespace iflytop

17
usrc/protocol_processer_impl/public_cmd_processer.cpp

@ -12,23 +12,6 @@ void PublicCmdProcesser::initialize() {
REG_FN(heart_ping);
REG_FN(clear_reset_flag);
}
bool PublicCmdProcesser::isSupportThisCmd(ProcessContext* cxt) {
for (auto& cmd : cmdprocesser) {
if (cmd.cmd == cxt->packet->function_id) {
return true;
}
}
return false;
}
void PublicCmdProcesser::process(ProcessContext* cxt) {
for (auto& cmd : cmdprocesser) {
if (cmd.cmd == cxt->packet->function_id) {
cmd.fn(cxt);
return;
}
}
}
void PublicCmdProcesser::read_board_info(ProcessContext* cxt) {
static ack_read_board_info_data_t ack;

4
usrc/protocol_processer_impl/public_cmd_processer.hpp

@ -9,7 +9,6 @@ using namespace transmit_disfection_protocol;
class PublicCmdProcesser : public IProtocolProcesser {
list<CmdProcesser> cmdprocesser;
uint8_t boardResetFlag; // 0: 重启标志
public:
@ -20,9 +19,6 @@ class PublicCmdProcesser : public IProtocolProcesser {
virtual void initialize() override;
virtual const char* getName() override { return "PublicCmdProcesser"; };
virtual bool isSupportThisCmd(ProcessContext* cxt) override;
virtual void process(ProcessContext* cxt) override;
private:
void read_board_info(ProcessContext* cxt);

41
usrc/protocol_processer_mgr/i_protocol_processer.hpp

@ -46,22 +46,41 @@ class ProcessContext {
zcanbus_packet_t* packet;
size_t packetlen;
};
class IProtocolProcesser {
public:
virtual void initialize() = 0;
virtual bool isSupportThisCmd(ProcessContext* cxt) = 0;
virtual void process(ProcessContext* cxt) = 0;
virtual const char* getName() = 0;
virtual ~IProtocolProcesser() {}
};
class CmdProcesser {
public:
int cmd;
cmdprocessfn_t fn;
CmdProcesser(int cmd, cmdprocessfn_t fn) : cmd(cmd), fn(fn) {}
};
class IProtocolProcesser {
public:
list<CmdProcesser> cmdprocesser;
public:
virtual void initialize() = 0;
virtual const char* getName() = 0;
public:
virtual void process(ProcessContext* cxt) {
for (auto& cmd : cmdprocesser) {
if (cmd.cmd == cxt->packet->function_id) {
cmd.fn(cxt);
return;
}
}
}
virtual bool isSupportThisCmd(ProcessContext* cxt) {
for (auto& cmd : cmdprocesser) {
if (cmd.cmd == cxt->packet->function_id) {
return true;
}
}
return false;
}
virtual ~IProtocolProcesser() {}
};
} // namespace iflytop

2
zsdk

@ -1 +1 @@
Subproject commit ad5cb407bff7a885afbef6104cb992a680f8e828
Subproject commit 21ce93cb5aaa9686b147274b08e9d8007cef6334
Loading…
Cancel
Save