diff --git a/api/module_type_index.hpp b/api/module_type_index.hpp index 9820c57..b2798a4 100644 --- a/api/module_type_index.hpp +++ b/api/module_type_index.hpp @@ -3,10 +3,11 @@ namespace iflytop { typedef enum { - kuniversal_module = 0, - khbot_module = 1, - kmotor_module = 2, - ktemperature_ctrl_module = 3, - kmini_servo_motor_module = 4, + kuniversal_module = 0, // 通用模块 + khbot_module = 1, // hbot模块 + kmotor_module = 2, // 电机控制 + ktemperature_ctrl_module = 3, // 温度控制 + kmini_servo_motor_module = 4, // 舵机 + kfan_ctrl_module = 5, // 风扇控制 } module_type_t; } \ No newline at end of file diff --git a/api/zi_module.hpp b/api/zi_module.hpp index f4d6d51..a2c9b96 100644 --- a/api/zi_module.hpp +++ b/api/zi_module.hpp @@ -42,7 +42,7 @@ using namespace std; PROCESS_REG(kreg_module_errorcode, /* */ REG_GET(m_com_reg.module_errorcode), ACTION_NONE); \ PROCESS_REG(kreg_module_initflag, /* */ REG_GET(m_com_reg.module_initflag), REG_SET(m_com_reg.module_initflag)); \ 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_enableflag, /* */ REG_GET(m_com_reg.module_enable), ACTION_NONE); \ PROCESS_REG(kreg_module_do_action0, /* */ ACTION_NONE, do_action(val)); \ PROCESS_REG(kreg_module_action_param1, /* */ REG_GET(m_com_reg.module_action_param1), REG_SET(m_com_reg.module_action_param1)); \ PROCESS_REG(kreg_module_action_param2, /* */ REG_GET(m_com_reg.module_action_param2), REG_SET(m_com_reg.module_action_param2)); \ @@ -122,8 +122,10 @@ class ZIModule { virtual int32_t module_enable(int32_t enable) { return err::koperation_not_support; } - virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) { return err::koperation_not_support; } - virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value) { return err::koperation_not_support; } + virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::koperation_not_support; } + + virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); } + virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value) { return module_xxx_reg(param_id, true, *param_value); } virtual int32_t module_readio(int32_t *io) { return err::koperation_not_support; } virtual int32_t module_writeio(int32_t idindex, int32_t io) { return err::koperation_not_support; } @@ -173,5 +175,8 @@ class ZIModule { val = regval / precision; return 0; } + + public: + virtual int32_t do_action(int32_t actioncode) { return err::kmodule_not_support_action; }; }; } // namespace iflytop