From 74fa8a3763d8a4f8da92e477c07ae391d3ffb919 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sun, 2 Jun 2024 19:17:11 +0800 Subject: [PATCH] update --- api/apibasic/cmdid.hpp | 18 ++++++------ api/apibasic/reg_index.hpp | 4 +-- api/zi_module.cpp | 51 ++++++++++++++++++++++++++++++++++ api/zi_module.hpp | 68 +++++++++++----------------------------------- 4 files changed, 78 insertions(+), 63 deletions(-) create mode 100644 api/zi_module.cpp diff --git a/api/apibasic/cmdid.hpp b/api/apibasic/cmdid.hpp index 10c691e..d569f65 100644 --- a/api/apibasic/cmdid.hpp +++ b/api/apibasic/cmdid.hpp @@ -20,8 +20,8 @@ typedef enum { virtual int32_t module_start() { return err::koperation_not_support; } #endif kmodule_ping = CMDID(1, 0), // para:{}, ack:{} - kmodule_stop = CMDID(1, 1), // para:{}, ack:{} - kmodule_break = CMDID(1, 2), // para:{}, ack:{} + // kmodule_stop = CMDID(1, 1), // para:{}, ack:{} + // kmodule_break = CMDID(1, 2), // para:{}, ack:{} // kmodule_get_last_exec_status = CMDID(1, 3), // para:{}, ack:{4} kmodule_get_status = CMDID(1, 4), // para:{}, ack:{4} kmodule_set_reg = CMDID(1, 5), // para:{4,4}, ack:{} @@ -31,13 +31,13 @@ typedef enum { // kmodule_read_adc = CMDID(1, 9), // para:{4}, ack:{4} kmodule_get_error = CMDID(1, 10), // para:{}, ack:{1} kmodule_clear_error = CMDID(1, 11), // para:{}, ack:{} - // kmodule_set_inited_flag = CMDID(1, 12), // para:{4}, ack:{} - // kmodule_get_inited_flag = CMDID(1, 13), // para:{}, ack:{4} - // kmodule_factory_reset = CMDID(1, 14), // para:{}, ack:{} - // kmodule_flush_cfg = CMDID(1, 15), // para:{}, ack:{} - // kmodule_active_cfg = CMDID(1, 16), // para:{}, ack:{} - kmodule_read_raw = CMDID(1, 19), // para:{4,4}, ack:{4} - kmodule_enable = CMDID(1, 20), // para:{4}, ack:{} +// kmodule_set_inited_flag = CMDID(1, 12), // para:{4}, ack:{} +// kmodule_get_inited_flag = CMDID(1, 13), // para:{}, ack:{4} +// kmodule_factory_reset = CMDID(1, 14), // para:{}, ack:{} +// kmodule_flush_cfg = CMDID(1, 15), // para:{}, ack:{} +// kmodule_active_cfg = CMDID(1, 16), // para:{}, ack:{} +// kmodule_read_raw = CMDID(1, 19), // para:{4,4}, ack:{4} +// kmodule_enable = CMDID(1, 20), // para:{4}, ack:{} // kmodule_start = CMDID(1, 21), // para:{4}, ack:{} #if 0 diff --git a/api/apibasic/reg_index.hpp b/api/apibasic/reg_index.hpp index 952245e..2c86e55 100644 --- a/api/apibasic/reg_index.hpp +++ b/api/apibasic/reg_index.hpp @@ -13,8 +13,8 @@ typedef enum { kreg_module_type = REG_INDEX(0, 0, 1), // 模块类型 kreg_module_status = REG_INDEX(0, 0, 2), // 0idle,1busy,2error kreg_module_errorcode = REG_INDEX(0, 0, 3), // inited_flag - kreg_module_raw_sector_size = REG_INDEX(0, 0, 10), // sector_size - kreg_module_raw_sector_num = REG_INDEX(0, 0, 11), // + // kreg_module_raw_sector_size = REG_INDEX(0, 0, 10), // sector_size + // kreg_module_raw_sector_num = REG_INDEX(0, 0, 11), // /******************************************************************************* * SENSOR * diff --git a/api/zi_module.cpp b/api/zi_module.cpp new file mode 100644 index 0000000..43a0442 --- /dev/null +++ b/api/zi_module.cpp @@ -0,0 +1,51 @@ +#pragma once +#include "zi_module.hpp" + +#include + +#include + +using namespace iflytop; + +int32_t ZIModule::getid() { + int32_t id = 0; + getid(&id); + return id; +}; + +int32_t ZIModule::module_ping() { return 0; }; + +int32_t ZIModule::module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); } +int32_t ZIModule::module_get_reg(int32_t param_id, int32_t *param_value) { return module_xxx_reg(param_id, true, *param_value); } +int32_t ZIModule::_module_set_reg(int32_t regoff, int32_t *regval, int32_t val, int32_t min, int32_t max) { + if (val < min || val > max) { + return err::kparam_out_of_range; + } + *regval = val; + return 0; +} +int32_t ZIModule::_module_get_reg(int32_t regoff, int32_t regval, int32_t &val) { + val = regval; + return 0; +} +int32_t ZIModule::_module_set_reg_float(int32_t regoff, float *regval, int32_t val, float precision, int32_t min, int32_t max) { + if (val < min || val > max) { + return err::kparam_out_of_range; + } + *regval = val * precision; + return 0; +} +int32_t ZIModule::_module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision) { + val = regval / precision; + return 0; +} + +int32_t ZIModule::module_get_error(int32_t *iserror) { + *iserror = creg.module_errorcode; + return 0; +} +int32_t ZIModule::module_clear_error() { + creg.module_errorcode = 0; + creg.module_errorbitflag0 = 0; + return 0; +} diff --git a/api/zi_module.hpp b/api/zi_module.hpp index 6fea657..19df600 100644 --- a/api/zi_module.hpp +++ b/api/zi_module.hpp @@ -38,7 +38,6 @@ using namespace std; typedef struct { int32_t module_errorcode; int32_t module_errorbitflag0; - int32_t module_enable; } module_common_reg_t; class ZIModule { @@ -50,62 +49,27 @@ class ZIModule { public: virtual ~ZIModule() {} - virtual int32_t getid(int32_t *id) = 0; - virtual int32_t getid() { - int32_t id = 0; - getid(&id); - return id; - }; - - virtual int32_t module_ping() { return 0; }; - - 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_set_reg(int32_t regoff, int32_t *regval, int32_t val, int32_t min = INT32_MIN, int32_t max = INT32_MAX) { - if (val < min || val > max) { - return err::kparam_out_of_range; - } - *regval = val; - return 0; - } - virtual int32_t _module_get_reg(int32_t regoff, int32_t regval, int32_t &val) { - 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; - } - - virtual int32_t module_get_error(int32_t *iserror) { - *iserror = creg.module_errorcode; - return 0; - } - virtual int32_t module_clear_error() { - creg.module_errorcode = 0; - creg.module_errorbitflag0 = 0; - return 0; - } - public: + virtual int32_t getid(); + virtual int32_t module_ping(); + virtual int32_t module_get_error(int32_t *iserror); + 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_get_status(int32_t *status) = 0; - virtual int32_t module_stop() { return err::koperation_not_support; } - virtual int32_t module_break() { return module_stop(); } - // virtual int32_t module_start() { return err::koperation_not_support; } - virtual int32_t module_enable(int32_t enable) { 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_read_raw(int32_t index, uint8_t *data, int32_t *len) { return err::koperation_not_support; } + virtual int32_t getid(int32_t *id) = 0; + virtual int32_t module_get_status(int32_t *status) = 0; + virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val) = 0; + protected: + virtual int32_t _module_set_reg(int32_t regoff, int32_t *regval, int32_t val, int32_t min = INT32_MIN, int32_t max = INT32_MAX); + virtual int32_t _module_get_reg(int32_t regoff, int32_t regval, int32_t &val); + 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); + virtual int32_t _module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision); + + public: public: }; } // namespace iflytop