|
|
@ -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
|