From 87d1a547ef95f5739c1177063dfb8b3db6b6df81 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 21 Oct 2023 15:37:08 +0800 Subject: [PATCH] update --- api/config_index.hpp | 22 ++++++++++-------- api/packet_interface.hpp | 4 ++-- api/zi_module.hpp | 7 ++++++ cmdid.hpp | 3 +++ protocol_parser.cpp | 41 ++++++++++++++++++++++++++++++++++ protocol_proxy.cpp | 4 ++++ protocol_proxy.hpp | 7 ++++++ zmodule_device_manager.cpp | 5 ++++- zmodule_device_manager.hpp | 42 +++++++++++++++++++++++++++++++++++ zmodule_device_script_cmder_paser.cpp | 8 +++++++ 10 files changed, 131 insertions(+), 12 deletions(-) diff --git a/api/config_index.hpp b/api/config_index.hpp index 6c0dc98..b6648ed 100644 --- a/api/config_index.hpp +++ b/api/config_index.hpp @@ -7,17 +7,21 @@ using namespace std; #define CONFIG_CODE(type, subconfigindex) (type + subconfigindex) typedef enum { - kmotorcfg_x_shift = CONFIG_CODE(100, 0), // xÆ«ÒÆ - kmotorcfg_y_shift = CONFIG_CODE(100, 1), // yÆ«ÒÆ - kmotorcfg_z_shift = CONFIG_CODE(100, 2), // zÆ«ÒÆ + kcfg_motor_x_shift = CONFIG_CODE(100, 0), // xÆ«ÒÆ + kcfg_motor_y_shift = CONFIG_CODE(100, 1), // yÆ«ÒÆ + kcfg_motor_z_shift = CONFIG_CODE(100, 2), // zÆ«ÒÆ - kmotorcfg_x_shaft = CONFIG_CODE(100, 3), // xÖáÊÇ·ñ·´×ª - kmotorcfg_y_shaft = CONFIG_CODE(100, 4), // yÖáÊÇ·ñ·´×ª - kmotorcfg_z_shaft = CONFIG_CODE(100, 5), // zÖáÊÇ·ñ·´×ª + kcfg_motor_x_shaft = CONFIG_CODE(100, 3), // xÖáÊÇ·ñ·´×ª + kcfg_motor_y_shaft = CONFIG_CODE(100, 4), // yÖáÊÇ·ñ·´×ª + kcfg_motor_z_shaft = CONFIG_CODE(100, 5), // zÖáÊÇ·ñ·´×ª - kmotorcfg_x_one_circle_pulse = CONFIG_CODE(100, 6), // xÖáһȦÂö³åÊý - kmotorcfg_y_one_circle_pulse = CONFIG_CODE(100, 7), // yÖáһȦÂö³åÊý - kmotorcfg_z_one_circle_pulse = CONFIG_CODE(100, 8), // zÖáһȦÂö³åÊý + kcfg_motor_x_one_circle_pulse = CONFIG_CODE(100, 6), // xÖáһȦÂö³åÊý + kcfg_motor_y_one_circle_pulse = CONFIG_CODE(100, 7), // yÖáһȦÂö³åÊý + kcfg_motor_z_one_circle_pulse = CONFIG_CODE(100, 8), // zÖáһȦÂö³åÊý + + k_cfg_stepmotor_ihold = CONFIG_CODE(100, 9), + k_cfg_stepmotor_irun = CONFIG_CODE(100, 10), + k_cfg_stepmotor_iholddelay = CONFIG_CODE(100, 11), } config_index_t; diff --git a/api/packet_interface.hpp b/api/packet_interface.hpp index a1f92e3..b44f1f9 100644 --- a/api/packet_interface.hpp +++ b/api/packet_interface.hpp @@ -27,5 +27,5 @@ typedef enum { #define SUBCMDID(cmdid) (cmdid & 0xff) #define MODULE_CMDID(cmdid) (cmdid >> 8) -#define ZCAN_CMD_PUBLIC_DEVICE_ID_STEP_MOTOR_BOARD_OFFEST 200 -#define ZCAN_CMD_PUBLIC_DEVICE_ID_XY_ROBOT_BOARD_OFFEST 230 +#define STEP_MOTOR_ID_OFF 100 +#define XY_MOTOR_ID_OFF 200 diff --git a/api/zi_module.hpp b/api/zi_module.hpp index afe4927..9cca05c 100644 --- a/api/zi_module.hpp +++ b/api/zi_module.hpp @@ -38,5 +38,12 @@ class ZIModule { *flag = m_inited_flag; return 0; } + // kmodule_factory_reset = CMDID(1, 14), // para:{}, ack:{} + // kmodule_flush_cfg = CMDID(1, 15), // para:{}, ack:{} + // kmodule_active_cfg = CMDID(1, 16), // para:{}, ack:{} + + virtual int32_t module_factory_reset() { return err::koperation_not_support; } + virtual int32_t module_flush_cfg() { return err::koperation_not_support; } + virtual int32_t module_active_cfg() { return err::koperation_not_support; } }; } // namespace iflytop \ No newline at end of file diff --git a/cmdid.hpp b/cmdid.hpp index efeeb01..8f9e50f 100644 --- a/cmdid.hpp +++ b/cmdid.hpp @@ -17,6 +17,9 @@ typedef enum { 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:{} kmotor_enable = CMDID(2, 1), // para:{1}, ack:{} kmotor_rotate = CMDID(2, 2), // para:{1,4}, ack:{} diff --git a/protocol_parser.cpp b/protocol_parser.cpp index 890bd82..4a38dfc 100644 --- a/protocol_parser.cpp +++ b/protocol_parser.cpp @@ -88,6 +88,43 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in /******************************************************************************* * module * *******************************************************************************/ + +#if 0 + virtual ~ZIModule() {} + + virtual int32_t getid(int32_t *id) = 0; + + virtual int32_t module_stop() = 0; + virtual int32_t module_break() = 0; + virtual int32_t module_get_last_exec_status(int32_t *status) = 0; + virtual int32_t module_get_status(int32_t *status) = 0; + virtual int32_t module_get_error(int32_t *iserror) = 0; + virtual int32_t module_clear_error() = 0; + + virtual int32_t module_set_param(int32_t param_id, int32_t param_value) { return err::koperation_not_support; } + virtual int32_t module_get_param(int32_t param_id, int32_t *param_value) { return err::koperation_not_support; } + + virtual int32_t module_readio(int32_t *io) { return err::koperation_not_support; } + virtual int32_t module_writeio(int32_t io) { return err::koperation_not_support; } + + virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; } + + virtual int32_t module_set_inited_flag(int32_t flag) { + m_inited_flag = flag; + return 0; + } + virtual int32_t module_get_inited_flag(int32_t *flag) { + *flag = m_inited_flag; + return 0; + } + // kmodule_factory_reset = CMDID(1, 14), // para:{}, ack:{} + // kmodule_flush_cfg = CMDID(1, 15), // para:{}, ack:{} + // kmodule_active_cfg = CMDID(1, 16), // para:{}, ack:{} + + virtual int32_t module_factory_reset() { return err::koperation_not_support; } + virtual int32_t module_flush_cfg() { return err::koperation_not_support; } + virtual int32_t module_active_cfg() { return err::koperation_not_support; } +#endif PROCESS_PACKET_00(kmodule_stop, ZIModule, module_stop); PROCESS_PACKET_00(kmodule_break, ZIModule, module_break); PROCESS_PACKET_01(kmodule_get_last_exec_status, ZIModule, module_get_last_exec_status); @@ -101,6 +138,10 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in 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); + /******************************************************************************* * motor * *******************************************************************************/ diff --git a/protocol_proxy.cpp b/protocol_proxy.cpp index f5cf287..47c4013 100644 --- a/protocol_proxy.cpp +++ b/protocol_proxy.cpp @@ -91,6 +91,10 @@ int32_t ZIProtocolProxy::module_clear_error() { PROXY_IMPL_00(kmodule_clear_erro int32_t ZIProtocolProxy::module_set_inited_flag(int32_t para0) { PROXY_IMPL_10(kmodule_set_inited_flag); }; int32_t ZIProtocolProxy::module_get_inited_flag(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_inited_flag); }; +int32_t ZIProtocolProxy::module_factory_reset() { PROXY_IMPL_00(kmodule_factory_reset); } +int32_t ZIProtocolProxy::module_flush_cfg() { PROXY_IMPL_00(kmodule_flush_cfg); } +int32_t ZIProtocolProxy::module_active_cfg() { PROXY_IMPL_00(kmodule_active_cfg); } + /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/protocol_proxy.hpp b/protocol_proxy.hpp index 269da52..da22998 100644 --- a/protocol_proxy.hpp +++ b/protocol_proxy.hpp @@ -27,6 +27,7 @@ class ZIProtocolProxy : public ZIMotor, // /******************************************************************************* * ZIModule * *******************************************************************************/ + virtual int32_t module_stop() override; virtual int32_t module_break() override; virtual int32_t module_get_last_exec_status(int32_t *status) override; @@ -46,6 +47,12 @@ class ZIProtocolProxy : public ZIMotor, // virtual int32_t module_set_inited_flag(int32_t flag) override; virtual int32_t module_get_inited_flag(int32_t *flag) override; + virtual int32_t module_factory_reset() override; + virtual int32_t module_flush_cfg() override; + virtual int32_t module_active_cfg() override; + + + /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/zmodule_device_manager.cpp b/zmodule_device_manager.cpp index ff52436..44fdb7f 100644 --- a/zmodule_device_manager.cpp +++ b/zmodule_device_manager.cpp @@ -20,7 +20,7 @@ void ZModuleDeviceManager::registerModule(ZIModule *module) { assert(module != nullptr); int32_t id = 0; module->getid(&id); - uint16_t id16 = id; + uint16_t id16 = id; m_modulers[id16] = module; } @@ -40,6 +40,9 @@ int32_t ZModuleDeviceManager::module_get_error(uint16_t id, int32_t *iserror) { int32_t ZModuleDeviceManager::module_clear_error(uint16_t id) { PROXY_IMPL(ZIModule, module_clear_error); } int32_t ZModuleDeviceManager::module_set_inited_flag(uint16_t id, int32_t flag) { PROXY_IMPL(ZIModule, module_set_inited_flag, flag); } int32_t ZModuleDeviceManager::module_get_inited_flag(uint16_t id, int32_t *flag) { PROXY_IMPL(ZIModule, module_get_inited_flag, flag); } +int32_t ZModuleDeviceManager::module_factory_reset(uint16_t id) { PROXY_IMPL(ZIModule, module_factory_reset); } +int32_t ZModuleDeviceManager::module_flush_cfg(uint16_t id) { PROXY_IMPL(ZIModule, module_flush_cfg); } +int32_t ZModuleDeviceManager::module_active_cfg(uint16_t id) { PROXY_IMPL(ZIModule, module_active_cfg); } /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/zmodule_device_manager.hpp b/zmodule_device_manager.hpp index abfff8a..8756d35 100644 --- a/zmodule_device_manager.hpp +++ b/zmodule_device_manager.hpp @@ -17,6 +17,44 @@ class ZModuleDeviceManager { /******************************************************************************* * ZIModule * *******************************************************************************/ + +#if 0 + virtual ~ZIModule() {} + + virtual int32_t getid(int32_t *id) = 0; + + virtual int32_t module_stop() = 0; + virtual int32_t module_break() = 0; + virtual int32_t module_get_last_exec_status(int32_t *status) = 0; + virtual int32_t module_get_status(int32_t *status) = 0; + virtual int32_t module_get_error(int32_t *iserror) = 0; + virtual int32_t module_clear_error() = 0; + + virtual int32_t module_set_param(int32_t param_id, int32_t param_value) { return err::koperation_not_support; } + virtual int32_t module_get_param(int32_t param_id, int32_t *param_value) { return err::koperation_not_support; } + + virtual int32_t module_readio(int32_t *io) { return err::koperation_not_support; } + virtual int32_t module_writeio(int32_t io) { return err::koperation_not_support; } + + virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; } + + virtual int32_t module_set_inited_flag(int32_t flag) { + m_inited_flag = flag; + return 0; + } + virtual int32_t module_get_inited_flag(int32_t *flag) { + *flag = m_inited_flag; + return 0; + } + // kmodule_factory_reset = CMDID(1, 14), // para:{}, ack:{} + // kmodule_flush_cfg = CMDID(1, 15), // para:{}, ack:{} + // kmodule_active_cfg = CMDID(1, 16), // para:{}, ack:{} + + virtual int32_t module_factory_reset() { return err::koperation_not_support; } + virtual int32_t module_flush_cfg() { return err::koperation_not_support; } + virtual int32_t module_active_cfg() { return err::koperation_not_support; } +#endif + int32_t module_stop(uint16_t id); int32_t module_break(uint16_t id); @@ -37,6 +75,10 @@ class ZModuleDeviceManager { int32_t module_set_inited_flag(uint16_t id, int32_t flag); int32_t module_get_inited_flag(uint16_t id, int32_t *flag); + int32_t module_factory_reset(uint16_t id); + int32_t module_flush_cfg(uint16_t id); + int32_t module_active_cfg(uint16_t id); + /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/zmodule_device_script_cmder_paser.cpp b/zmodule_device_script_cmder_paser.cpp index 5e86d08..279a6a9 100644 --- a/zmodule_device_script_cmder_paser.cpp +++ b/zmodule_device_script_cmder_paser.cpp @@ -68,6 +68,11 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi int32_t module_set_inited_flag(uint16_t id, int32_t flag); int32_t module_get_inited_flag(uint16_t id, int32_t *flag); + int32_t module_factory_reset(uint16_t id); + int32_t module_flush_cfg(uint16_t id); + int32_t module_active_cfg(uint16_t id); + + /******************************************************************************* * ZIMotor * *******************************************************************************/ @@ -106,6 +111,9 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi PROCESS_PACKET_10(module_clear_error, "module_clear_error (mid)"); PROCESS_PACKET_20(module_set_inited_flag, "module_set_inited_flag (mid, flag)"); PROCESS_PACKET_11(module_get_inited_flag, "module_get_inited_flag (mid)"); + PROCESS_PACKET_10(module_factory_reset, "module_factory_reset (mid)"); + PROCESS_PACKET_10(module_flush_cfg, "module_flush_cfg (mid)"); + PROCESS_PACKET_10(module_active_cfg, "module_active_cfg (mid)"); PROCESS_PACKET_20(motor_enable, "motor_enable (mid, enable)"); PROCESS_PACKET_40(motor_rotate, "motor_rotate (mid, direction, motor_velocity, acc)");