Browse Source

update

master
zhaohe 2 years ago
parent
commit
1eea66eba8
  1. 137
      components/pipette_module/pipette_ctrl_module_v2.cpp
  2. 58
      components/pipette_module/pipette_ctrl_module_v2.hpp
  3. 8
      components/sensors/m3078/m3078_code_scaner.cpp
  4. 9
      components/sensors/m3078/m3078_code_scaner.hpp
  5. 5
      components/zcancmder/zcan_board_module.cpp
  6. 4
      components/zcancmder/zcan_board_module.hpp
  7. 2
      components/zprotocols/zcancmder_v2

137
components/pipette_module/pipette_ctrl_module_v2.cpp

@ -9,15 +9,15 @@ using namespace iflytop;
int exec_ret = ACTION; \ int exec_ret = ACTION; \
if (exec_ret != 0) { \ if (exec_ret != 0) { \
ZLOGE(TAG, "do " infostr "(line:%d) fail, ret = %d", __LINE__, exec_ret); \ ZLOGE(TAG, "do " infostr "(line:%d) fail, ret = %d", __LINE__, exec_ret); \
m_lastexec_status.set_exec_status(exec_ret); \
_module_set_exec_status(exec_ret); \
return; \ return; \
} \ } \
ZLOGI(TAG, "do " infostr " complete"); \ ZLOGI(TAG, "do " infostr " complete"); \
} }
void PipetteModule::initialize(int32_t id, config_t *config, hardward_config_t *hardwaredcfg) { // void PipetteModule::initialize(int32_t id, config_t *config, hardward_config_t *hardwaredcfg) { //
ZASSERT(config != nullptr);
ZASSERT(hardwaredcfg != nullptr);
ZASSERT(config != nullptr);
ZASSERT(hardwaredcfg != nullptr);
m_id = id; m_id = id;
m_config = *config; m_config = *config;
m_smtp2.initialize(hardwaredcfg->uart, hardwaredcfg->hdma_rx, hardwaredcfg->hdma_tx); m_smtp2.initialize(hardwaredcfg->uart, hardwaredcfg->hdma_rx, hardwaredcfg->hdma_tx);
@ -44,41 +44,18 @@ int32_t PipetteModule::module_break() {
return 0; return 0;
} }
int32_t PipetteModule::module_clear_error() { return err::koperation_not_support; }
int32_t PipetteModule::module_readio(int32_t *io) { return 0; }
int32_t PipetteModule::module_factory_reset() { return 0; }
int32_t PipetteModule::module_flush_cfg() { return 0; }
int32_t PipetteModule::module_active_cfg() { return 0; }
#define ACTION_NULL ;
#define REG(param_id, readaction, writeacton) \
case param_id: { \
if (read) { \
readaction; \
} else { \
writeacton; \
} \
}
int32_t PipetteModule::module_process_reg_read_and_write(int32_t param_id, bool read, int32_t &val) {
int32_t PipetteModule::module_xxx_reg(int32_t param_id, bool read, int32_t &val) {
switch (param_id) { switch (param_id) {
REG(kreg_module_version, /* */ val = 0, ACTION_NULL);
REG(kreg_module_type, /* */ val = 0, ACTION_NULL);
REG(kreg_module_status, /* */ val = read_status(), ACTION_NULL);
REG(kreg_module_errorcode, /* */ val = read_error_status(), ACTION_NULL);
REG(kreg_module_initflag, /* */ val = module_get_inited_flag(), ACTION_NULL);
REG(kreg_module_enableflag, /* */ val = 1, ACTION_NULL);
REG(kreg_module_errorbitflag0, /* */ val = 0, ACTION_NULL);
REG(kreg_module_errorbitflag1, /* */ val = 0, ACTION_NULL);
REG(kreg_module_input_state, /* */ val = read_input_status(), ACTION_NULL);
REG(kreg_module_last_cmd_exec_status, /**/ val = m_lastexec_status.exec_status, ACTION_NULL);
REG(kreg_module_last_cmd_exec_val0, /* */ val = m_lastexec_status.exec_val[0], ACTION_NULL);
REG(kreg_module_last_cmd_exec_val1, /* */ val = m_lastexec_status.exec_val[1], ACTION_NULL);
REG(kreg_module_last_cmd_exec_val2, /* */ val = m_lastexec_status.exec_val[2], ACTION_NULL);
REG(kreg_module_last_cmd_exec_val3, /* */ val = m_lastexec_status.exec_val[3], ACTION_NULL);
REG(kreg_module_last_cmd_exec_val4, /* */ val = m_lastexec_status.exec_val[4], ACTION_NULL);
REG(kreg_module_last_cmd_exec_val5, /* */ val = m_lastexec_status.exec_val[5], ACTION_NULL);
REG(kreg_pipette_pos_ul, /* */ val = read_pos_ul(), ACTION_NULL);
REG(kreg_pipette_capactitance_val, /* */ val = read_capactitance(), ACTION_NULL);
REG(kreg_pipette_tip_state, /* */ val = read_tip_state(), ACTION_NULL);
REG(kreg_pipette_limit_ul, /* */ val = read_ul_limit(), write_ul_limit(val));
MODULE_COMMON_PROCESS_REG_CB();
PROCESS_REG(kreg_pipette_pos_ul, /* */ read_pos_ul(&val), ACTION_NONE);
PROCESS_REG(kreg_pipette_capactitance_val, /* */ read_capactitance(&val), ACTION_NONE);
PROCESS_REG(kreg_pipette_tip_state, /* */ read_tip_state(&val), ACTION_NONE);
PROCESS_REG(kreg_pipette_limit_ul, /* */ REG_GET(m_config.limit_ul), REG_SET(m_config.limit_ul));
default: default:
return err::kmodule_not_find_config_index; return err::kmodule_not_find_config_index;
break; break;
@ -86,48 +63,24 @@ int32_t PipetteModule::module_process_reg_read_and_write(int32_t param_id, bool
return 0; return 0;
} }
int32_t PipetteModule::module_set_reg(int32_t param_id, int32_t param_value) {
switch (param_id) {
default:
return err::kmodule_not_find_config_index;
}
return 0;
}
int32_t PipetteModule::module_get_reg(int32_t param_id, int32_t *param_value) { return err::koperation_not_support; }
int32_t PipetteModule::module_readio(int32_t *io) { return err::koperation_not_support; }
int32_t PipetteModule::module_factory_reset() { return err::koperation_not_support; }
int32_t PipetteModule::module_flush_cfg() { return err::koperation_not_support; }
int32_t PipetteModule::module_active_cfg() { return err::koperation_not_support; }
int32_t PipetteModule::read_error_status() {
bool isbusy = false;
err::error_t errorcode = err::ksucc;
int32_t retecode = m_smtp2.getState(isbusy, errorcode);
if (retecode != 0) {
return retecode;
}
if (errorcode != err::ksucc && errorcode != err::kSMTP2_NoError) {
return errorcode;
}
return 0;
}
int32_t PipetteModule::module_get_status(int32_t *status) {
int32_t ecode = 0;
ecode = _read_error_status();
int32_t PipetteModule::read_status() {
if (read_error_status() != 0) {
if (ecode != 0) {
m_com_reg.module_errorcode = ecode;
*status = 3;
m_thread.stop(); m_thread.stop();
return 3;
return 0;
} }
if (m_thread.isworking()) { if (m_thread.isworking()) {
return 1;
*status = 1;
} else { } else {
return 0;
*status = 0;
} }
}
return 0;
};
/******************************************************************************* /*******************************************************************************
* pipette_ctrl * * pipette_ctrl *
*******************************************************************************/ *******************************************************************************/
@ -138,7 +91,7 @@ int32_t PipetteModule::pipette_ctrl_init_device() {
m_thread.stop(); m_thread.stop();
m_thread.start([this]() { m_thread.start([this]() {
DO("init_device_block", m_smtp2.init_device_block()); DO("init_device_block", m_smtp2.init_device_block());
m_lastexec_status.set_exec_status(0);
_module_set_exec_status(0);
}); });
return 0; return 0;
}; };
@ -148,7 +101,7 @@ int32_t PipetteModule::pipette_ctrl_put_tip() {
m_thread.stop(); m_thread.stop();
m_thread.start([this]() { m_thread.start([this]() {
DO("put_tip_block", m_smtp2.put_tip_block()); DO("put_tip_block", m_smtp2.put_tip_block());
m_lastexec_status.set_exec_status(0);
_module_set_exec_status(0);
}); });
return 0; return 0;
}; };
@ -162,24 +115,32 @@ int32_t PipetteModule::pipette_ctrl_move_to_ul(int32_t ul) {
m_thread.stop(); m_thread.stop();
m_thread.start([this, ul]() { m_thread.start([this, ul]() {
DO("move_to_ul_block", m_smtp2.move_to_ul_block(ul)); DO("move_to_ul_block", m_smtp2.move_to_ul_block(ul));
m_lastexec_status.set_exec_status(0);
_module_set_exec_status(0);
}); });
return 0; return 0;
}; };
int32_t PipetteModule::read_input_status() { //
return 0;
}
int32_t PipetteModule::read_pos_ul() { return m_smtp2.read_pos_ul(); }
int32_t PipetteModule::read_capactitance() {
int32_t val = 0;
m_smtp2.read_capacitance_val(val);
return val;
/*******************************************************************************
* PRIVATE *
*******************************************************************************/
int32_t PipetteModule::read_pos_ul(int32_t *val) { return m_smtp2.read_pos_ul(*val); }
int32_t PipetteModule::read_capactitance(int32_t *val) { return m_smtp2.read_capacitance_val(*val); }
int32_t PipetteModule::read_tip_state(int32_t *val) {
bool tipstate = false;
int32_t ecode = m_smtp2.read_tip_state(tipstate);
*val = tipstate ? 1 : 0;
return ecode;
} }
int32_t PipetteModule::_read_error_status() {
bool isbusy = false;
err::error_t errorcode = err::ksucc;
int32_t retecode = m_smtp2.getState(isbusy, errorcode);
if (retecode != 0) {
return retecode;
}
if (errorcode != err::ksucc && errorcode != err::kSMTP2_NoError) {
return errorcode;
}
int32_t PipetteModule::read_tip_state() {
bool tipstate = false;
m_smtp2.read_tip_state(tipstate);
return tipstate;
}
return 0;
}

58
components/pipette_module/pipette_ctrl_module_v2.hpp

@ -6,14 +6,16 @@
// #include "StepMotorCtrlModule" // #include "StepMotorCtrlModule"
/** /**
* @brief
*
* @brief
*
* ²Î¿¼:https://iflytop1.feishu.cn/wiki/LTilwSyJwi6fJUkiIhzc2oRqnTb ¶ÔÉ豸½øÐгõʼ»¯ * ²Î¿¼:https://iflytop1.feishu.cn/wiki/LTilwSyJwi6fJUkiIhzc2oRqnTb ¶ÔÉ豸½øÐгõʼ»¯
*
*
*/ */
namespace iflytop { namespace iflytop {
class PipetteModule : public ZIModule, public ZIPipetteCtrlModule { class PipetteModule : public ZIModule, public ZIPipetteCtrlModule {
ENABLE_MODULE(PipetteModule, kpipette_ctrl_module, 0x0001);
public: public:
typedef struct { typedef struct {
UART_HandleTypeDef *uart; UART_HandleTypeDef *uart;
@ -30,53 +32,43 @@ class PipetteModule : public ZIModule, public ZIPipetteCtrlModule {
ZThread m_thread; ZThread m_thread;
int32_t m_id = 0; int32_t m_id = 0;
ModuleCMDExecStatus m_lastexec_status;
config_t m_config; config_t m_config;
public: public:
void initialize(int32_t id, config_t* config, hardward_config_t *cfg);
void initialize(int32_t id, config_t *config, hardward_config_t *cfg);
virtual int32_t getid(int32_t *id); virtual int32_t getid(int32_t *id);
/******************************************************************************* /*******************************************************************************
* Module * * Module *
*******************************************************************************/ *******************************************************************************/
virtual int32_t module_ping() { return 0; };
virtual int32_t module_enable(int32_t enable);
virtual int32_t module_stop();
virtual int32_t module_break();
virtual int32_t module_clear_error();
virtual int32_t module_set_reg(int32_t param_id, int32_t param_value);
virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value);
virtual int32_t module_enable(int32_t enable) override;
virtual int32_t module_stop() override;
virtual int32_t module_break() override;
virtual int32_t module_readio(int32_t *io) override;
virtual int32_t module_factory_reset() override;
virtual int32_t module_flush_cfg() override;
virtual int32_t module_active_cfg() override;
virtual int32_t module_readio(int32_t *io);
virtual int32_t module_factory_reset();
virtual int32_t module_flush_cfg();
virtual int32_t module_active_cfg();
virtual int32_t module_get_status(int32_t *status) override;
/******************************************************************************* /*******************************************************************************
* pipette_ctrl * * pipette_ctrl *
*******************************************************************************/ *******************************************************************************/
virtual int32_t pipette_ctrl_init_device();
virtual int32_t pipette_ctrl_put_tip();
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul);
virtual int32_t pipette_ctrl_init_device() override;
virtual int32_t pipette_ctrl_put_tip() override;
virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) override;
private:
int32_t read_pos_ul(int32_t *val);
int32_t read_capactitance(int32_t *val);
int32_t read_tip_state(int32_t *val);
virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val) override;
private: private:
int32_t module_process_reg_read_and_write(int32_t param_id, bool read, int32_t &param_value);
int32_t read_status();
int32_t read_error_status();
int32_t read_input_status();
int32_t read_pos_ul();
int32_t read_capactitance();
int32_t read_tip_state();
int32_t read_ul_limit();
void write_ul_limit(int32_t ul_limit);
int32_t _read_error_status();
}; };
} // namespace iflytop } // namespace iflytop

8
components/sensors/m3078/m3078_code_scaner.cpp

@ -30,7 +30,7 @@ void M3078CodeScanner::initialize(int moduleid, hardware_config_t* hardwareconfi
m_com_reg.module_enable = 1; m_com_reg.module_enable = 1;
} }
void M3078CodeScanner::trigger() { void M3078CodeScanner::trigger() {
m_codeisready = false;
clearIdinfo();
m_triggerGpio.setState(0); m_triggerGpio.setState(0);
zos_delay(3); zos_delay(3);
m_uart.clearRxData(); m_uart.clearRxData();
@ -59,6 +59,12 @@ int32_t M3078CodeScanner::module_start() {
trigger(); trigger();
return 0; return 0;
} }
int32_t M3078CodeScanner::module_get_status(int32_t* status) {
*status = read_status();
return 0;
}
int32_t M3078CodeScanner::module_read_raw(int32_t startadd, uint8_t* data, int32_t* len) { int32_t M3078CodeScanner::module_read_raw(int32_t startadd, uint8_t* data, int32_t* len) {
ZLOGI(TAG, "module_read_raw"); ZLOGI(TAG, "module_read_raw");
if (codecachelen > *len) { if (codecachelen > *len) {

9
components/sensors/m3078/m3078_code_scaner.hpp

@ -85,10 +85,11 @@ class M3078CodeScanner : public ZIModule {
*id = this->id; *id = this->id;
return 0; return 0;
} }
virtual int32_t module_stop();
virtual int32_t module_break();
virtual int32_t module_start();
virtual int32_t module_read_raw(int32_t index, uint8_t* data, int32_t* len);
virtual int32_t module_stop() override;
virtual int32_t module_break() override;
virtual int32_t module_start() override;
virtual int32_t module_read_raw(int32_t index, uint8_t* data, int32_t* len) override;
virtual int32_t module_get_status(int32_t* status) override;
private: private:
virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t& val) override; virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t& val) override;

5
components/zcancmder/zcan_board_module.cpp

@ -54,6 +54,11 @@ int32_t ZCanBoardModule::module_xxx_reg(int32_t param_id, bool read, int32_t &va
return 0; return 0;
} }
int32_t ZCanBoardModule::module_get_status(int32_t *status) {
*status = 0;
return 0;
}
int32_t ZCanBoardModule::module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); } int32_t ZCanBoardModule::module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); }
int32_t ZCanBoardModule::module_get_reg(int32_t param_id, int32_t *param_value) { return module_xxx_reg(param_id, true, *param_value); } int32_t ZCanBoardModule::module_get_reg(int32_t param_id, int32_t *param_value) { return module_xxx_reg(param_id, true, *param_value); }

4
components/zcancmder/zcan_board_module.hpp

@ -45,7 +45,7 @@ class ZCanBoardModule : public ZIModule {
public: public:
virtual ~ZCanBoardModule() {} virtual ~ZCanBoardModule() {}
void initialize(int32_t moduleId, hardware_config_t *cfg);
void initialize(int32_t moduleId, hardware_config_t *cfg);
virtual int32_t module_ping() { return 0; }; virtual int32_t module_ping() { return 0; };
virtual int32_t getid(int32_t *id) override; virtual int32_t getid(int32_t *id) override;
@ -55,6 +55,8 @@ class ZCanBoardModule : public ZIModule {
virtual int32_t module_set_reg(int32_t param_id, int32_t param_value); virtual int32_t module_set_reg(int32_t param_id, int32_t param_value);
virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value); virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value);
virtual int32_t module_get_status(int32_t *status);
private: private:
int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &param_value); int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &param_value);
int32_t readinput(); int32_t readinput();

2
components/zprotocols/zcancmder_v2

@ -1 +1 @@
Subproject commit f20a0f5affb28e0f4ae6c6dddfea7c54b493fe54
Subproject commit 87d2bfa20a22003f1731511b6c50f925330a5ebd
Loading…
Cancel
Save