From 8c1056e0d3019b754ae57f65c954a69262efa5cd Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 7 Nov 2023 17:24:01 +0800 Subject: [PATCH] update --- api/zi_module.hpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/api/zi_module.hpp b/api/zi_module.hpp index 59dddf7..73d0f98 100644 --- a/api/zi_module.hpp +++ b/api/zi_module.hpp @@ -11,6 +11,9 @@ using namespace std; #define REG_SET(reg, ...) _module_set_reg(param_id, ®, val, ##__VA_ARGS__) #define REG_GET(reg) _module_get_reg(param_id, reg, val) +#define REG_SET_FLOAT(reg, precision, ...) _module_set_reg_float(param_id, ®, val, precision, ##__VA_ARGS__) +#define REG_GET_FLOAT(reg, precision) _module_get_reg_float(param_id, reg, val, precision) + #define ACTION_NONE 0 #define PROCESS_REG(param_id, readaction, writeacton) \ case param_id: { \ @@ -21,6 +24,14 @@ using namespace std; } \ } break; +#define PROCESS_ACTION() \ + PROCESS_REG(kreg_module_do_action0, /* */ ACTION_NONE, do_action(val)); \ + PROCESS_REG(kreg_module_action_param1, /* */ REG_GET(m_reg.module_action_param1), REG_SET(m_reg.module_action_param1)); \ + PROCESS_REG(kreg_module_action_param2, /* */ REG_GET(m_reg.module_action_param2), REG_SET(m_reg.module_action_param2)); \ + PROCESS_REG(kreg_module_action_param3, /* */ REG_GET(m_reg.module_action_param3), REG_SET(m_reg.module_action_param3)); \ + 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); + class ModuleCMDExecStatus { public: int32_t exec_status = 0; @@ -102,5 +113,17 @@ class ZIModule { val = regval; return 0; } + + virtual int32_t _module_set_reg_float(int32_t regoff, float *regval, int32_t val, float precision, int32_t min = INT32_MIN, int32_t max = INT32_MAX) { + if (val < min || val > max) { + return err::kparam_out_of_range; + } + *regval = val * precision; + return 0; + } + virtual int32_t _module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision) { + val = regval / precision; + return 0; + } }; } // namespace iflytop