From 3144ce2a8f3088e7d2123e2dfb3248ef6857a478 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 23 Oct 2023 13:30:43 +0800 Subject: [PATCH] update --- api/state_index.hpp | 22 ++++++++++++++++++++++ api/zi_module.hpp | 4 ++-- cmdid.hpp | 6 ++++++ protocol_parser.cpp | 7 +++++++ protocol_proxy.cpp | 3 +++ protocol_proxy.hpp | 8 +++++++- zmodule_device_manager.cpp | 2 ++ zmodule_device_manager.hpp | 8 +++++++- zmodule_device_script_cmder_paser.cpp | 5 ++++- 9 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 api/state_index.hpp diff --git a/api/state_index.hpp b/api/state_index.hpp new file mode 100644 index 0000000..89e4d8d --- /dev/null +++ b/api/state_index.hpp @@ -0,0 +1,22 @@ +#pragma once +#include + +namespace iflytop { +using namespace std; + +#define STATE_INDEX(type, subconfigindex) (type + subconfigindex) +typedef enum { + + kstate_module_status = STATE_INDEX(0, 0), // + kstate_module_errorcode = STATE_INDEX(0, 1), // + + kstate_motor_x_pos = STATE_INDEX(100, 0), // x偏移 + kstate_motor_y_pos = STATE_INDEX(100, 1), // y偏移 + kstate_motor_z_pos = STATE_INDEX(100, 2), // z偏移 + + kstate_motor_move = STATE_INDEX(100, 3), // 电机是否移动 + kstate_motor_enable = STATE_INDEX(100, 4), // 电机是否使能 + +} state_index_t; + +} // namespace iflytop \ No newline at end of file diff --git a/api/zi_module.hpp b/api/zi_module.hpp index ba27587..0c2fda1 100644 --- a/api/zi_module.hpp +++ b/api/zi_module.hpp @@ -25,8 +25,8 @@ class ZIModule { 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_set_state(int32_t state_id, int32_t state_value) { return err::koperation_not_support; } - // virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) { return err::koperation_not_support; } + virtual int32_t module_set_state(int32_t state_id, int32_t state_value) { return err::koperation_not_support; } + virtual int32_t module_get_state(int32_t state_id, int32_t *state_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; } diff --git a/cmdid.hpp b/cmdid.hpp index 95c249b..a9eb223 100644 --- a/cmdid.hpp +++ b/cmdid.hpp @@ -4,6 +4,10 @@ namespace iflytop { namespace zcr { typedef enum { +#if 0 + virtual int32_t module_set_state(int32_t state_id, int32_t state_value) { return err::koperation_not_support; } + virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) { return err::koperation_not_support; } +#endif 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} @@ -20,6 +24,8 @@ typedef enum { 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_set_state = CMDID(1, 17), // para:{4,4}, ack:{} + kmodule_get_state = CMDID(1, 18), // para:{4}, ack:{4} 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 949abc0..a656555 100644 --- a/protocol_parser.cpp +++ b/protocol_parser.cpp @@ -129,6 +129,9 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in 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; } + + virtual int32_t module_set_state(int32_t state_id, int32_t state_value) { return err::koperation_not_support; } + virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) { return err::koperation_not_support; } #endif PROCESS_PACKET_00(kmodule_stop, ZIModule, module_stop); PROCESS_PACKET_00(kmodule_break, ZIModule, module_break); @@ -146,6 +149,10 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in 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); + PROCESS_PACKET_20(kmodule_set_state, ZIModule, module_set_state); + PROCESS_PACKET_11(kmodule_get_state, ZIModule, module_get_state); + + /******************************************************************************* * motor * diff --git a/protocol_proxy.cpp b/protocol_proxy.cpp index 83fe234..96a81fb 100644 --- a/protocol_proxy.cpp +++ b/protocol_proxy.cpp @@ -95,6 +95,9 @@ int32_t ZIProtocolProxy::module_factory_reset() { PROXY_IMPL_00(kmodule_factory_ int32_t ZIProtocolProxy::module_flush_cfg() { PROXY_IMPL_00(kmodule_flush_cfg); } int32_t ZIProtocolProxy::module_active_cfg() { PROXY_IMPL_00(kmodule_active_cfg); } +int32_t ZIProtocolProxy::module_set_state(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmodule_set_state); }; +int32_t ZIProtocolProxy::module_get_state(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_get_state); }; + /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/protocol_proxy.hpp b/protocol_proxy.hpp index 0361d59..fdf3536 100644 --- a/protocol_proxy.hpp +++ b/protocol_proxy.hpp @@ -27,7 +27,10 @@ class ZIProtocolProxy : public ZIMotor, // /******************************************************************************* * ZIModule * *******************************************************************************/ - +#if 0 + virtual int32_t module_set_state(int32_t state_id, int32_t state_value) { return err::koperation_not_support; } + virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) { return err::koperation_not_support; } +#endif virtual int32_t module_stop() override; virtual int32_t module_break() override; virtual int32_t module_get_last_exec_status(int32_t *status) override; @@ -51,6 +54,9 @@ class ZIProtocolProxy : public ZIMotor, // virtual int32_t module_flush_cfg() override; virtual int32_t module_active_cfg() override; + virtual int32_t module_set_state(int32_t state_id, int32_t state_value) override; + virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) override; + /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/zmodule_device_manager.cpp b/zmodule_device_manager.cpp index 27ee6ec..fb03799 100644 --- a/zmodule_device_manager.cpp +++ b/zmodule_device_manager.cpp @@ -44,6 +44,8 @@ int32_t ZModuleDeviceManager::module_get_inited_flag(uint16_t id, int32_t *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); } +int32_t ZModuleDeviceManager::module_set_state(uint16_t id, int32_t state_id, int32_t state_value) { PROXY_IMPL(ZIModule, module_set_state, state_id, state_value); } +int32_t ZModuleDeviceManager::module_get_state(uint16_t id, int32_t state_id, int32_t *state_value) { PROXY_IMPL(ZIModule, module_get_state, state_id, state_value); } /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/zmodule_device_manager.hpp b/zmodule_device_manager.hpp index 8709e7c..0c68bbb 100644 --- a/zmodule_device_manager.hpp +++ b/zmodule_device_manager.hpp @@ -18,6 +18,7 @@ class ZModuleDeviceManager { * ZIModule * *******************************************************************************/ + #if 0 virtual ~ZIModule() {} @@ -53,8 +54,10 @@ class ZModuleDeviceManager { 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 + virtual int32_t module_set_state(int32_t state_id, int32_t state_value) { return err::koperation_not_support; } + virtual int32_t module_get_state(int32_t state_id, int32_t *state_value) { return err::koperation_not_support; } +#endif int32_t module_stop(uint16_t id); int32_t module_break(uint16_t id); @@ -79,6 +82,9 @@ class ZModuleDeviceManager { int32_t module_flush_cfg(uint16_t id); int32_t module_active_cfg(uint16_t id); + int32_t module_set_state(uint16_t id, int32_t state_id, int32_t state_value); + int32_t module_get_state(uint16_t id, int32_t state_id, int32_t *state_value); + /******************************************************************************* * ZIMotor * *******************************************************************************/ diff --git a/zmodule_device_script_cmder_paser.cpp b/zmodule_device_script_cmder_paser.cpp index a75bb0f..4295d77 100644 --- a/zmodule_device_script_cmder_paser.cpp +++ b/zmodule_device_script_cmder_paser.cpp @@ -72,7 +72,8 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi int32_t module_flush_cfg(uint16_t id); int32_t module_active_cfg(uint16_t id); - + int32_t module_set_state(uint16_t id, int32_t state_id, int32_t state_value); + int32_t module_get_state(uint16_t id, int32_t state_id, int32_t *state_value); /******************************************************************************* * ZIMotor * *******************************************************************************/ @@ -109,6 +110,8 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi PROCESS_PACKET_10(module_factory_reset, "(mid)"); PROCESS_PACKET_10(module_flush_cfg, "(mid)"); PROCESS_PACKET_10(module_active_cfg, "(mid)"); + PROCESS_PACKET_30(module_set_state, "(mid, state_id, state_value)"); + PROCESS_PACKET_21(module_get_state, "(mid, state_id)"); PROCESS_PACKET_20(motor_enable, "(mid, enable)"); PROCESS_PACKET_40(motor_rotate, "(mid, direction, motor_velocity, acc)");