From e66a40b850f1a3a09d1e6d585e277da27d558699 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 6 Apr 2024 18:58:24 +0800 Subject: [PATCH] update --- components/zcancmder/zimodule_impl_v2.cpp | 46 ++++++++++++ components/zcancmder/zimodule_impl_v2.hpp | 86 ++++++++++++++++++++++ .../zprotocols/zcancmder_v2/api/reg_index.hpp | 2 +- .../zprotocols/zcancmder_v2/api/zi_module.hpp | 3 - .../zprotocols/zcancmder_v2/protocol_parser.cpp | 2 - 5 files changed, 133 insertions(+), 6 deletions(-) create mode 100644 components/zcancmder/zimodule_impl_v2.cpp create mode 100644 components/zcancmder/zimodule_impl_v2.hpp diff --git a/components/zcancmder/zimodule_impl_v2.cpp b/components/zcancmder/zimodule_impl_v2.cpp new file mode 100644 index 0000000..c6647bd --- /dev/null +++ b/components/zcancmder/zimodule_impl_v2.cpp @@ -0,0 +1,46 @@ +#include "zimodule_impl_v2.hpp" + +#include + +#include + +#include "sdk\components\zprotocols\zcancmder_v2\api\reg_index.hpp" +#include "sdk\components\zprotocols\zcancmder_v2\api\zi_module.hpp" + +using namespace iflytop; + +ZIModuleImplV2::ZIModuleImplV2(int32_t id) { m_id = id; } + +int32_t ZIModuleImplV2::getid(int32_t *id) { + *id = m_id; + return 0; +} +int32_t ZIModuleImplV2::getid() { return m_id; } +int32_t ZIModuleImplV2::module_ping() { return 0; } +int32_t ZIModuleImplV2::module_get_status(int32_t *status) { return module_get_reg(kreg_module_status, status); } +int32_t ZIModuleImplV2::module_get_error(int32_t *iserror) { return module_get_reg(kreg_module_errorcode, iserror); } +int32_t ZIModuleImplV2::module_clear_error() { return module_set_reg(kreg_module_errorcode, 0); } +int32_t ZIModuleImplV2::module_enable(int32_t enable) { return module_set_reg(kreg_module_enableflag, enable); } +// int32_t ZIModuleImplV2::module_readio(int32_t *io) { return module_get_reg(kreg_module_input_state, io); } +// int32_t ZIModuleImplV2::module_writeio(int32_t idindex, int32_t io) { return module_set_reg(kreg_module_output_state, io); } +int32_t ZIModuleImplV2::module_factory_reset() { return 0; } +int32_t ZIModuleImplV2::module_flush_cfg() { return 0; } +int32_t ZIModuleImplV2::module_active_cfg() { return 0; } + +int32_t ZIModuleImplV2::module_set_reg(int32_t param_id, int32_t param_value) { + int32_t retVal = 0; + // if (m_reg_change_listener) { + // m_reg_change_listener(param_id, param_value); + // } + return 0; +} +int32_t ZIModuleImplV2::module_get_reg(int32_t param_id, int32_t *param_value) { + +} +int32_t ZIModuleImplV2::module_get_regbit(int32_t param_id, int32_t bitoffset, int32_t *param_value) {} +int32_t ZIModuleImplV2::module_set_regbit(int32_t param_id, int32_t bitoffset, int32_t bitval) {} + +void ZIModuleImplV2::_regRegChangeListener(reg_change_listener_t onregchange) { // + m_reg_change_listener = onregchange; +} +void ZIModuleImplV2::_allocRegTable(int32_t regNum) {} \ No newline at end of file diff --git a/components/zcancmder/zimodule_impl_v2.hpp b/components/zcancmder/zimodule_impl_v2.hpp new file mode 100644 index 0000000..f843c70 --- /dev/null +++ b/components/zcancmder/zimodule_impl_v2.hpp @@ -0,0 +1,86 @@ +#pragma once +#include + +#include + +#include "sdk\components\zprotocols\zcancmder_v2\api\zi_module.hpp" + +namespace iflytop { +using namespace std; + +class ZIModuleImplV2 : public ZIModule { + public: + private: + /******************************************************************************* + * 结构定义 * + *******************************************************************************/ + typedef struct { + int32_t index; + int32_t value; + // limit + bool enablelimit; + int32_t minval; + int32_t maxval; + } reg_iterm_t; + + typedef enum { + kon_reg_write, + kon_reg_read, + } reg_change_event_t; + + typedef function reg_change_listener_t; + + private: + /******************************************************************************* + * 成员变量 * + *******************************************************************************/ + int32_t m_id = 0; + reg_iterm_t *m_regtable = NULL; + int32_t m_regNum = 0; + + reg_iterm_t *m_internal_regtable = NULL; + int32_t m_internal_regNum = 0; + + reg_change_listener_t m_reg_change_listener; + + public: + virtual ~ZIModuleImplV2() {} + + ZIModuleImplV2(int32_t id); + + /******************************************************************************* + * ZIModuleImpl * + *******************************************************************************/ + + virtual int32_t getid(int32_t *id) override final; + virtual int32_t getid() override final; + virtual int32_t module_ping() override final; + + virtual int32_t module_get_status(int32_t *status) override final; + virtual int32_t module_get_error(int32_t *iserror) override final; + virtual int32_t module_clear_error() override final; + virtual int32_t module_enable(int32_t enable) override final; + virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) override final; + virtual int32_t module_set_regbit(int32_t param_id, int32_t bitoffset, int32_t bitval) final; + virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value) final; + virtual int32_t module_get_regbit(int32_t param_id, int32_t bitoffset, int32_t *param_value) final; + + virtual int32_t module_factory_reset() override final; + virtual int32_t module_flush_cfg() override final; + virtual int32_t module_active_cfg() override final; + + // virtual int32_t module_stop() = 0; + // virtual int32_t module_break() = 0; + // virtual int32_t module_start() = 0; + // virtual int32_t module_read_raw(int32_t index, uint8_t *data, int32_t *len) override final; + + /******************************************************************************* + * 工具方法 * + *******************************************************************************/ + + void _regRegChangeListener(reg_change_listener_t onregchange); + void _allocRegTable(int32_t regNum); + + public: +}; +} // namespace iflytop diff --git a/components/zprotocols/zcancmder_v2/api/reg_index.hpp b/components/zprotocols/zcancmder_v2/api/reg_index.hpp index 16af9f1..7b34187 100644 --- a/components/zprotocols/zcancmder_v2/api/reg_index.hpp +++ b/components/zprotocols/zcancmder_v2/api/reg_index.hpp @@ -14,7 +14,7 @@ typedef enum { kreg_module_status = REG_INDEX(0, 0, 2), // 0idle,1busy,2error kreg_module_errorcode = REG_INDEX(0, 0, 3), // inited_flag kreg_module_initflag = REG_INDEX(0, 0, 4), // inited_flag - kreg_module_enableflag = REG_INDEX(0, 0, 5), // 0idle,1busy,2error + kreg_module_enableflag = REG_INDEX(0, 0, 5), // kreg_module_errorbitflag0 = REG_INDEX(0, 0, 6), // 模块异常标志,bit,每个模块自定义 kreg_module_errorbitflag1 = REG_INDEX(0, 0, 7), // kreg_module_input_state = REG_INDEX(0, 0, 8), // diff --git a/components/zprotocols/zcancmder_v2/api/zi_module.hpp b/components/zprotocols/zcancmder_v2/api/zi_module.hpp index aa6f128..44c3e6e 100644 --- a/components/zprotocols/zcancmder_v2/api/zi_module.hpp +++ b/components/zprotocols/zcancmder_v2/api/zi_module.hpp @@ -29,9 +29,6 @@ class ZIModule { virtual int32_t module_writeio(int32_t idindex, int32_t io) = 0; virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) = 0; virtual int32_t module_read_raw(int32_t index, uint8_t *data, int32_t *len) = 0; - virtual int32_t module_set_inited_flag(int32_t flag) = 0; - virtual int32_t module_get_inited_flag(int32_t *flag) = 0; - virtual int32_t module_get_inited_flag() = 0; virtual int32_t module_factory_reset() = 0; virtual int32_t module_flush_cfg() = 0; virtual int32_t module_active_cfg() = 0; diff --git a/components/zprotocols/zcancmder_v2/protocol_parser.cpp b/components/zprotocols/zcancmder_v2/protocol_parser.cpp index 97cc9b8..6adc15a 100644 --- a/components/zprotocols/zcancmder_v2/protocol_parser.cpp +++ b/components/zprotocols/zcancmder_v2/protocol_parser.cpp @@ -124,8 +124,6 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in PROCESS_PACKET_11(kmodule_read_adc, ZIModule, module_read_adc); PROCESS_PACKET_01(kmodule_get_error, ZIModule, module_get_error); PROCESS_PACKET_00(kmodule_clear_error, ZIModule, module_clear_error); - PROCESS_PACKET_10(kmodule_set_inited_flag, ZIModule, module_set_inited_flag); - PROCESS_PACKET_01(kmodule_get_inited_flag, ZIModule, module_get_inited_flag); PROCESS_PACKET_00(kmodule_factory_reset, ZIModule, module_factory_reset); PROCESS_PACKET_00(kmodule_flush_cfg, ZIModule, module_flush_cfg); PROCESS_PACKET_00(kmodule_active_cfg, ZIModule, module_active_cfg);