From 87d2bfa20a22003f1731511b6c50f925330a5ebd Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 17 Nov 2023 12:26:13 +0800 Subject: [PATCH] update --- api/module_type_index.hpp | 1 + api/zi_module.hpp | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/api/module_type_index.hpp b/api/module_type_index.hpp index 0844f43..e141ff0 100644 --- a/api/module_type_index.hpp +++ b/api/module_type_index.hpp @@ -10,5 +10,6 @@ typedef enum { kmini_servo_motor_module = 4, // 舵机 kfan_ctrl_module = 5, // 风扇控制 kcode_scaner = 6, // 风扇控制 + kpipette_ctrl_module = 7, // 移液体枪控制 } module_type_t; } \ No newline at end of file diff --git a/api/zi_module.hpp b/api/zi_module.hpp index af08a53..0796d77 100644 --- a/api/zi_module.hpp +++ b/api/zi_module.hpp @@ -33,14 +33,17 @@ using namespace std; PROCESS_REG(kreg_module_action_ack1, /* */ REG_GET(m_reg.module_action_ack1), ACTION_NONE); \ PROCESS_REG(kreg_module_action_ack2, /* */ REG_GET(m_reg.module_action_ack2), ACTION_NONE); -#define ENABLE_MODULE(name, type, version) module_common_reg_t m_com_reg = {.module_version = version, .module_type = type}; +#define ENABLE_MODULE(name, type, version) \ + const char *module_name = #name; \ + int32_t module_version = version; \ + int32_t module_type = type; #define MODULE_COMMON_PROCESS_REG_CB() \ - PROCESS_REG(kreg_module_version, /* */ REG_GET(m_com_reg.module_version), ACTION_NONE); \ - PROCESS_REG(kreg_module_type, /* */ REG_GET(m_com_reg.module_type), ACTION_NONE); \ + PROCESS_REG(kreg_module_version, /* */ REG_GET(module_version), ACTION_NONE); \ + PROCESS_REG(kreg_module_type, /* */ REG_GET(module_type), ACTION_NONE); \ PROCESS_REG(kreg_module_status, /* */ module_get_status(&val), ACTION_NONE); \ PROCESS_REG(kreg_module_errorcode, /* */ REG_GET(m_com_reg.module_errorcode), ACTION_NONE); \ - PROCESS_REG(kreg_module_initflag, /* */ module_get_inited_flag(&val), module_set_inited_flag(val)); \ + PROCESS_REG(kreg_module_initflag, /* */ module_get_inited_flag(&val), module_set_inited_flag(val)); \ PROCESS_REG(kreg_module_errorbitflag0, /* */ REG_GET(m_com_reg.module_errorbitflag0), ACTION_NONE); \ PROCESS_REG(kreg_module_enableflag, /* */ REG_GET(m_com_reg.module_enable), ACTION_NONE); \ PROCESS_REG(kreg_module_do_action0, /* */ ACTION_NONE, do_action(val)); \ @@ -57,8 +60,8 @@ using namespace std; PROCESS_REG(kreg_module_last_cmd_exec_val4, /* */ REG_GET(m_com_reg.module_last_cmd_exec_val4), ACTION_NONE); typedef struct { - int32_t module_version; - int32_t module_type; + // int32_t module_version; + // int32_t module_type; int32_t module_errorcode; int32_t module_errorbitflag0; int32_t module_enable; @@ -98,6 +101,9 @@ class ModuleCMDExecStatus { class ZIModule { int32_t m_inited_flag = 0; + protected: + module_common_reg_t m_com_reg; + public: virtual ~ZIModule() {} @@ -115,9 +121,16 @@ class ZIModule { virtual int32_t module_start() { return err::koperation_not_support; } virtual int32_t module_get_last_exec_status(int32_t *status) { return err::koperation_not_support; } - virtual int32_t module_get_status(int32_t *status) { return err::koperation_not_support; } - virtual int32_t module_get_error(int32_t *iserror) { return err::koperation_not_support; } - virtual int32_t module_clear_error() { return err::koperation_not_support; } + virtual int32_t module_get_status(int32_t *status) = 0; + virtual int32_t module_get_error(int32_t *iserror) { + *iserror = m_com_reg.module_errorcode; + return 0; + } + virtual int32_t module_clear_error() { + m_com_reg.module_errorcode = 0; + m_com_reg.module_errorbitflag0 = 0; + return 0; + } virtual int32_t module_enable(int32_t enable) { return err::koperation_not_support; } @@ -175,6 +188,16 @@ class ZIModule { return 0; } + virtual int32_t _module_set_exec_status(int32_t status, int32_t val0 = 0, int32_t val1 = 0, int32_t val2 = 0, int32_t val3 = 0, int32_t val4 = 0) { + m_com_reg.module_last_cmd_exec_status = status; + m_com_reg.module_last_cmd_exec_val0 = val0; + m_com_reg.module_last_cmd_exec_val1 = val1; + m_com_reg.module_last_cmd_exec_val2 = val2; + m_com_reg.module_last_cmd_exec_val3 = val3; + m_com_reg.module_last_cmd_exec_val4 = val4; + return 0; + } + public: virtual int32_t do_action(int32_t actioncode) { return err::kmodule_not_support_action; }; };