From d3302705937d2bd91698417244897d2780292b9c Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 21 Oct 2023 09:43:29 +0800 Subject: [PATCH] update --- api/errorcode.cpp | 60 +++++++++-------- api/errorcode.hpp | 117 ++++++++++++++++------------------ api/zi_module.hpp | 20 +++--- api/zi_motor.hpp | 10 +-- api/zi_xymotor.hpp | 6 +- cmdid.hpp | 20 +++--- protocol_parser.cpp | 31 +++++---- protocol_proxy.cpp | 29 ++++----- protocol_proxy.hpp | 37 ++++++----- zmodule_device_manager.cpp | 30 +++++---- zmodule_device_manager.hpp | 35 +++++----- zmodule_device_script_cmder_paser.cpp | 43 +++++++------ 12 files changed, 223 insertions(+), 215 deletions(-) diff --git a/api/errorcode.cpp b/api/errorcode.cpp index e06f1de..bb52f98 100644 --- a/api/errorcode.cpp +++ b/api/errorcode.cpp @@ -9,6 +9,20 @@ const char* error2str(int32_t code) { switch (code) { ERR2STR(ksucc); ERR2STR(kfail); + ERR2STR(kparam_out_of_range); + ERR2STR(koperation_not_support); + ERR2STR(kdevice_is_busy); + ERR2STR(kdevice_is_offline); + ERR2STR(kovertime); + ERR2STR(knoack); + ERR2STR(kerrorack); + ERR2STR(kdevice_offline); + ERR2STR(kparse_json_err); + ERR2STR(ksubdevice_overtime); + ERR2STR(kbuffer_not_enough); + ERR2STR(kcmd_not_found); + ERR2STR(kcmd_param_num_error); + ERR2STR(kcheckcode_is_error); ERR2STR(ksys_error); ERR2STR(ksys_create_file_error); ERR2STR(ksys_create_dir_error); @@ -21,36 +35,17 @@ const char* error2str(int32_t code) { ERR2STR(ksys_delete_file_error); ERR2STR(ksys_delete_dir_error); ERR2STR(ksys_copy_file_error); - ERR2STR(kce_device_not_zero); - ERR2STR(kce_over_temperature); - ERR2STR(kce_over_voltage); - ERR2STR(kce_param_out_of_range); - ERR2STR(kce_not_found_zero_point); - ERR2STR(kce_not_found_x_zero_point); - ERR2STR(kce_not_found_y_zero_point); - ERR2STR(kce_x_leave_away_zero_point_fail); - ERR2STR(kce_y_leave_away_zero_point_fail); - ERR2STR(kce_operation_not_support); - ERR2STR(kce_device_is_busy); - ERR2STR(kce_device_is_offline); - ERR2STR(kce_break_by_user); - ERR2STR(kce_overtime); - ERR2STR(kce_noack); - ERR2STR(kce_errorack); - ERR2STR(kce_device_offline); - ERR2STR(kce_parse_json_err); - ERR2STR(kce_subdevice_overtime); - ERR2STR(kdbe_user_not_exist); - ERR2STR(kdbe_catch_exception); - ERR2STR(kharde_unfound); - ERR2STR(kre_catch_exception); - ERR2STR(kinteraction_error_passwd_error); - ERR2STR(kinteraction_error_user_not_exist); - ERR2STR(kce_buffer_not_enough); - ERR2STR(kce_cmd_not_found); - ERR2STR(kce_cmd_param_num_error); - ERR2STR(kce_no_such_module); - + ERR2STR(kmodule_not_inited); + ERR2STR(kmodule_not_found); + ERR2STR(kmodule_opeation_break_by_user); + ERR2STR(kmotor_not_found_zero_point); + ERR2STR(kmotor_did_not_go_zero); + ERR2STR(kmotor_over_temperature); + ERR2STR(kmotor_over_voltage); + ERR2STR(kxymotor_not_found_x_zero_point); + ERR2STR(kxymotor_not_found_y_zero_point); + ERR2STR(kxymotor_x_find_zero_edge_fail); + ERR2STR(kxymotor_y_find_zero_edge_fail); ERR2STR(kSMTP2_NoError); ERR2STR(kSMTP2_InitFail); ERR2STR(kSMTP2_InvalidCmd); @@ -73,8 +68,11 @@ const char* error2str(int32_t code) { ERR2STR(kSMTP2_VolumeError); ERR2STR(kSMTP2_TipAlreadyLoad); ERR2STR(kSMTP2_TipLoadFail); + ERR2STR(kmicro_noErr); + ERR2STR(kmicro_uartSendFail); + ERR2STR(kmicro_uartRecvFail); default: - return "known"; + return "known"; break; } } diff --git a/api/errorcode.hpp b/api/errorcode.hpp index 28c76d6..4676126 100644 --- a/api/errorcode.hpp +++ b/api/errorcode.hpp @@ -8,8 +8,22 @@ using namespace std; #define ERROR_CODE(errortype, suberrorcode) (errortype + suberrorcode) typedef enum { - ksucc = ERROR_CODE(0, 0), - kfail = ERROR_CODE(0, 1), + ksucc = ERROR_CODE(0, 0), + kfail = ERROR_CODE(0, 1), + kparam_out_of_range = ERROR_CODE(0, 2), // 参数超出范围 + koperation_not_support = ERROR_CODE(0, 3), // 操作不支持 + kdevice_is_busy = ERROR_CODE(0, 4), // 设备忙 + kdevice_is_offline = ERROR_CODE(0, 5), // 设备离线 + kovertime = ERROR_CODE(0, 6), + knoack = ERROR_CODE(0, 7), + kerrorack = ERROR_CODE(0, 8), + kdevice_offline = ERROR_CODE(0, 9), + kparse_json_err = ERROR_CODE(0, 10), + ksubdevice_overtime = ERROR_CODE(0, 11), + kbuffer_not_enough = ERROR_CODE(0, 12), + kcmd_not_found = ERROR_CODE(0, 13), + kcmd_param_num_error = ERROR_CODE(0, 14), + kcheckcode_is_error = ERROR_CODE(0, 15), /** * @brief 系统错误 @@ -28,75 +42,56 @@ typedef enum { ksys_copy_file_error = ERROR_CODE(100, 11), /** - * @brief 50000通用 + * @brief module error */ - kce_device_not_zero = ERROR_CODE(10000, 0), // 设备未归零 - kce_over_temperature = ERROR_CODE(10000, 1), // 过温 - kce_over_voltage = ERROR_CODE(10000, 2), // 过压 - kce_param_out_of_range = ERROR_CODE(10000, 3), // 参数超出范围 - kce_not_found_zero_point = ERROR_CODE(10000, 4), // 未找到零点 - kce_not_found_x_zero_point = ERROR_CODE(10000, 5), // 未找到零点 - kce_not_found_y_zero_point = ERROR_CODE(10000, 6), // 未找到零点 - kce_x_leave_away_zero_point_fail = ERROR_CODE(10000, 7), // 离开零点失败 - kce_y_leave_away_zero_point_fail = ERROR_CODE(10000, 8), // 离开零点失败 - kce_operation_not_support = ERROR_CODE(10000, 9), // 操作不支持 - kce_device_is_busy = ERROR_CODE(10000, 10), // 设备忙 - kce_device_is_offline = ERROR_CODE(10000, 11), // 设备离线 - kce_break_by_user = ERROR_CODE(10000, 12), // 用户中断 - kce_overtime = ERROR_CODE(10000, 13), - kce_noack = ERROR_CODE(10000, 14), - kce_errorack = ERROR_CODE(10000, 15), - kce_device_offline = ERROR_CODE(10000, 16), - kce_parse_json_err = ERROR_CODE(10000, 17), - kce_subdevice_overtime = ERROR_CODE(10000, 18), - kdbe_user_not_exist = ERROR_CODE(10000, 19), - kdbe_catch_exception = ERROR_CODE(10000, 20), - kharde_unfound = ERROR_CODE(10000, 21), - kre_catch_exception = ERROR_CODE(10000, 22), - kinteraction_error_passwd_error = ERROR_CODE(10000, 23), // 密码错误 - kinteraction_error_user_not_exist = ERROR_CODE(10000, 24), // 用户不存在 - kce_buffer_not_enough = ERROR_CODE(10000, 25), - kce_cmd_not_found = ERROR_CODE(10000, 26), - kce_cmd_param_num_error = ERROR_CODE(10000, 27), - kce_no_such_module = ERROR_CODE(10000, 28), - kce_modbusCRC16checkfail = ERROR_CODE(10000, 29), + kmodule_not_inited = ERROR_CODE(200, 0), + kmodule_not_found = ERROR_CODE(200, 1), + kmodule_opeation_break_by_user = ERROR_CODE(200, 2), // 用户中断 /** - * @brief STMP2错误 + * @brief motor error */ - kSMTP2_NoError = ERROR_CODE(20000, 0), // 无错误 - kSMTP2_InitFail = ERROR_CODE(20000, 1), // 初始化失败 - kSMTP2_InvalidCmd = ERROR_CODE(20000, 2), // 无效命令 - kSMTP2_InvalidArg = ERROR_CODE(20000, 3), // 无效参数 - kSMTP2_PressureSensorError = ERROR_CODE(20000, 4), // 压力传感器故障 - kSMTP2_OverPressure = ERROR_CODE(20000, 5), // 超过压力 - kSMTP2_LLDError = ERROR_CODE(20000, 6), // LLD 错误 - kSMTP2_DeviceNotInit = ERROR_CODE(20000, 7), // 设备未初始化 - kSMTP2_TipPopError = ERROR_CODE(20000, 8), // Tip 弹出错误 - kSMTP2_PumpOverload = ERROR_CODE(20000, 9), // 泵过载 - kSMTP2_TipDrop = ERROR_CODE(20000, 10), // Tip 脱落 - kSMTP2_CanBusError = ERROR_CODE(20000, 11), // CAN 总线故障 - kSMTP2_InvalidChecksum = ERROR_CODE(20000, 12), // 无效校验和 - kSMTP2_EEPROMError = ERROR_CODE(20000, 13), // EEPROM 故障 - kSMTP2_CmdBufferEmpty = ERROR_CODE(20000, 14), // 命令缓冲区为空 - kSMTP2_CmdBufferOverflow = ERROR_CODE(20000, 15), // 命令溢出 - kSMTP2_TipBlock = ERROR_CODE(20000, 16), // Tip 堵塞 - kSMTP2_AirSuction = ERROR_CODE(20000, 17), // 吸入空气 - kSMTP2_Bubble = ERROR_CODE(20000, 18), // 液体中有气泡/泡沫 - kSMTP2_VolumeError = ERROR_CODE(20000, 19), // 吸取/分配量不准确 - kSMTP2_TipAlreadyLoad = ERROR_CODE(20000, 20), // Tip已经装载 - kSMTP2_TipLoadFail = ERROR_CODE(20000, 21), + kmotor_not_found_zero_point = ERROR_CODE(300, 0), // 未找到零点 + kmotor_did_not_go_zero = ERROR_CODE(300, 1), // 设备未归零 + kmotor_over_temperature = ERROR_CODE(300, 2), // 过温 + kmotor_over_voltage = ERROR_CODE(300, 3), // 过压 + kxymotor_not_found_x_zero_point = ERROR_CODE(300, 4), // 未找到零点 + kxymotor_not_found_y_zero_point = ERROR_CODE(300, 5), // 未找到零点 + kxymotor_x_find_zero_edge_fail = ERROR_CODE(300, 6), // 离开零点失败 + kxymotor_y_find_zero_edge_fail = ERROR_CODE(300, 7), // 离开零点失败 /** - * @brief 单片机硬件错误 + * @brief STMP2错误 */ - kmicro_noErr = ERROR_CODE(20050, 0), // - kmicro_uartSendFail = ERROR_CODE(20050, 1), // - kmicro_uartRecvFail = ERROR_CODE(20050, 2), // + kSMTP2_NoError = ERROR_CODE(400, 0), // 无错误 + kSMTP2_InitFail = ERROR_CODE(400, 1), // 初始化失败 + kSMTP2_InvalidCmd = ERROR_CODE(400, 2), // 无效命令 + kSMTP2_InvalidArg = ERROR_CODE(400, 3), // 无效参数 + kSMTP2_PressureSensorError = ERROR_CODE(400, 4), // 压力传感器故障 + kSMTP2_OverPressure = ERROR_CODE(400, 5), // 超过压力 + kSMTP2_LLDError = ERROR_CODE(400, 6), // LLD 错误 + kSMTP2_DeviceNotInit = ERROR_CODE(400, 7), // 设备未初始化 + kSMTP2_TipPopError = ERROR_CODE(400, 8), // Tip 弹出错误 + kSMTP2_PumpOverload = ERROR_CODE(400, 9), // 泵过载 + kSMTP2_TipDrop = ERROR_CODE(400, 10), // Tip 脱落 + kSMTP2_CanBusError = ERROR_CODE(400, 11), // CAN 总线故障 + kSMTP2_InvalidChecksum = ERROR_CODE(400, 12), // 无效校验和 + kSMTP2_EEPROMError = ERROR_CODE(400, 13), // EEPROM 故障 + kSMTP2_CmdBufferEmpty = ERROR_CODE(400, 14), // 命令缓冲区为空 + kSMTP2_CmdBufferOverflow = ERROR_CODE(400, 15), // 命令溢出 + kSMTP2_TipBlock = ERROR_CODE(400, 16), // Tip 堵塞 + kSMTP2_AirSuction = ERROR_CODE(400, 17), // 吸入空气 + kSMTP2_Bubble = ERROR_CODE(400, 18), // 液体中有气泡/泡沫 + kSMTP2_VolumeError = ERROR_CODE(400, 19), // 吸取/分配量不准确 + kSMTP2_TipAlreadyLoad = ERROR_CODE(400, 20), // Tip已经装载 + kSMTP2_TipLoadFail = ERROR_CODE(400, 21), /** - * @brief modbus错误 + * @brief 单片机硬件错误 */ + kmicro_noErr = ERROR_CODE(500, 0), // + kmicro_uartSendFail = ERROR_CODE(500, 1), // + kmicro_uartRecvFail = ERROR_CODE(500, 2), // } error_t; diff --git a/api/zi_module.hpp b/api/zi_module.hpp index ebf3260..e0d5259 100644 --- a/api/zi_module.hpp +++ b/api/zi_module.hpp @@ -13,17 +13,19 @@ class ZIModule { virtual int32_t getid(int32_t *id) = 0; - virtual int32_t stop() = 0; - virtual int32_t brake() = 0; - virtual int32_t get_last_exec_status(int32_t *status) = 0; - virtual int32_t get_status(int32_t *status) = 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 set_param( int32_t param_id, int32_t param_value) { return err::kce_operation_not_support; } - virtual int32_t get_param( int32_t param_id, int32_t *param_value) { return err::kce_operation_not_support; } + 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 readio(int32_t *io) { return err::kce_operation_not_support; } - virtual int32_t writeio(int32_t io) { return err::kce_operation_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 read_adc(int adcindex, int32_t *adc) { return err::kce_operation_not_support; } + virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; } }; } // namespace iflytop \ No newline at end of file diff --git a/api/zi_motor.hpp b/api/zi_motor.hpp index 006e8c4..61fb57c 100644 --- a/api/zi_motor.hpp +++ b/api/zi_motor.hpp @@ -10,11 +10,11 @@ using namespace std; class ZIMotor { public: virtual ~ZIMotor() {} - virtual int32_t motor_enable(int32_t enable) { return err::kce_operation_not_support; } - virtual int32_t motor_rotate(int32_t direction, int32_t velocitylevel) { return err::kce_operation_not_support; } - virtual int32_t motor_move_by(int32_t distance, int32_t velocitylevel) { return err::kce_operation_not_support; } - virtual int32_t motor_move_to(int32_t position, int32_t velocitylevel) { return err::kce_operation_not_support; } - virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque) { return err::kce_operation_not_support; } + virtual int32_t motor_enable(int32_t enable) { return err::koperation_not_support; } + virtual int32_t motor_rotate(int32_t direction, int32_t motor_velocity, int32_t acc) { return err::koperation_not_support; } + virtual int32_t motor_move_by(int32_t distance, int32_t motor_velocity, int32_t acc) { return err::koperation_not_support; } + virtual int32_t motor_move_to(int32_t position, int32_t motor_velocity, int32_t acc) { return err::koperation_not_support; } + virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque) { return err::koperation_not_support; } // s32 pos, s32 speed, s32 torque, }; diff --git a/api/zi_xymotor.hpp b/api/zi_xymotor.hpp index 5bacfbc..ffbe1ab 100644 --- a/api/zi_xymotor.hpp +++ b/api/zi_xymotor.hpp @@ -10,8 +10,8 @@ using namespace std; class ZIXYMotor { public: virtual ~ZIXYMotor() {} - virtual int32_t xymotor_enable(bool enable) { return err::kce_operation_not_support; } - virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t velocitylevel) { return err::kce_operation_not_support; } - virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t velocitylevel) { return err::kce_operation_not_support; } + virtual int32_t xymotor_enable(int32_t enable) { return err::koperation_not_support; } + virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t motor_velocity) { return err::koperation_not_support; } + virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t motor_velocity) { return err::koperation_not_support; } }; } // namespace iflytop \ No newline at end of file diff --git a/cmdid.hpp b/cmdid.hpp index 20b2d55..10e2355 100644 --- a/cmdid.hpp +++ b/cmdid.hpp @@ -4,15 +4,17 @@ namespace iflytop { namespace zcr { typedef enum { - kmodule_stop = CMDID(1, 1), // para:{}, ack:{} - kmodule_brake = 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_param = CMDID(1, 5), // para:{4,4}, ack:{} - kmodule_get_param = CMDID(1, 6), // para:{4}, ack:{4}I - kmodule_readio = CMDID(1, 7), // para:{}, ack:{4} - kmodule_writeio = CMDID(1, 8), // para:{4}, ack:{} - kmodule_read_adc = CMDID(1, 9), // para:{4}, ack:{4} + 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_param = CMDID(1, 5), // para:{4,4}, ack:{} + kmodule_get_param = CMDID(1, 6), // para:{4}, ack:{4}I + kmodule_readio = CMDID(1, 7), // para:{}, ack:{4} + kmodule_writeio = CMDID(1, 8), // para:{4}, ack:{} + 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:{} 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 d04b568..e74fee5 100644 --- a/protocol_parser.cpp +++ b/protocol_parser.cpp @@ -10,13 +10,13 @@ using namespace std; if (cmdid == var_cmdid) { \ auto* mod = dynamic_cast(module); \ if (mod == nullptr) { \ - m_cancmder->sendErrorAck(rxcmd, err::kce_operation_not_support); \ + m_cancmder->sendErrorAck(rxcmd, err::koperation_not_support); \ return; \ } #define CHECK_PARAM_NUM(num) \ if (paramNum != num) { \ - m_cancmder->sendErrorAck(rxcmd, err::kce_cmd_param_num_error); \ + m_cancmder->sendErrorAck(rxcmd, err::kcmd_param_num_error); \ return; \ } @@ -76,22 +76,25 @@ void ZIProtocolParser::onRceivePacket(cmd_header_t* rxcmd, uint8_t* data, int32_ /******************************************************************************* * module * *******************************************************************************/ - PROCESS_PACKET_00(kmodule_stop, ZIModule, stop); - PROCESS_PACKET_00(kmodule_brake, ZIModule, brake); - PROCESS_PACKET_01(kmodule_get_last_exec_status, ZIModule, get_last_exec_status); - PROCESS_PACKET_01(kmodule_get_status, ZIModule, get_status); - PROCESS_PACKET_20(kmodule_set_param, ZIModule, set_param); - PROCESS_PACKET_11(kmodule_get_param, ZIModule, get_param); - PROCESS_PACKET_01(kmodule_readio, ZIModule, readio); - PROCESS_PACKET_10(kmodule_writeio, ZIModule, writeio); - PROCESS_PACKET_11(kmodule_read_adc, ZIModule, read_adc); + 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); + PROCESS_PACKET_01(kmodule_get_status, ZIModule, module_get_status); + PROCESS_PACKET_20(kmodule_set_param, ZIModule, module_set_param); + PROCESS_PACKET_11(kmodule_get_param, ZIModule, module_get_param); + PROCESS_PACKET_01(kmodule_readio, ZIModule, module_readio); + PROCESS_PACKET_10(kmodule_writeio, ZIModule, module_writeio); + 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); + /******************************************************************************* * motor * *******************************************************************************/ PROCESS_PACKET_10(kmotor_enable, ZIMotor, motor_enable); - PROCESS_PACKET_20(kmotor_rotate, ZIMotor, motor_rotate); - PROCESS_PACKET_20(kmotor_move_by, ZIMotor, motor_move_by); - PROCESS_PACKET_20(kmotor_move_to, ZIMotor, motor_move_to); + PROCESS_PACKET_30(kmotor_rotate, ZIMotor, motor_rotate); + PROCESS_PACKET_30(kmotor_move_by, ZIMotor, motor_move_by); + PROCESS_PACKET_30(kmotor_move_to, ZIMotor, motor_move_to); PROCESS_PACKET_20(kmotor_move_to_with_torque, ZIMotor, motor_move_to_with_torque); /******************************************************************************* * xymotor * diff --git a/protocol_proxy.cpp b/protocol_proxy.cpp index 167b2af..e80cb8e 100644 --- a/protocol_proxy.cpp +++ b/protocol_proxy.cpp @@ -68,29 +68,28 @@ using namespace iflytop; #define PROXY_IMPL_32(cmdindex) PROXY_IMPL_XX(cmdindex, 3, 2, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X2_ACK()); #define PROXY_IMPL_33(cmdindex) PROXY_IMPL_XX(cmdindex, 3, 3, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X3_ACK()); +int32_t ZIProtocolProxy::module_stop() { PROXY_IMPL_00(kmodule_stop); } +int32_t ZIProtocolProxy::module_break() { PROXY_IMPL_00(kmodule_break); } +int32_t ZIProtocolProxy::module_get_last_exec_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_last_exec_status); } +int32_t ZIProtocolProxy::module_get_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_status); } +int32_t ZIProtocolProxy::module_set_param(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmodule_set_param); } +int32_t ZIProtocolProxy::module_get_param(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_get_param); } +int32_t ZIProtocolProxy::module_readio(int32_t *ack0) { PROXY_IMPL_01(kmodule_readio); } +int32_t ZIProtocolProxy::module_writeio(int32_t para0) { PROXY_IMPL_10(kmodule_writeio); } -int32_t ZIProtocolProxy::stop() { PROXY_IMPL_00(kmodule_stop); } -int32_t ZIProtocolProxy::brake() { PROXY_IMPL_00(kmodule_brake); } -int32_t ZIProtocolProxy::get_last_exec_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_last_exec_status); } -int32_t ZIProtocolProxy::get_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_status); } - -int32_t ZIProtocolProxy::set_param(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmodule_set_param); } -int32_t ZIProtocolProxy::get_param(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_get_param); } - -int32_t ZIProtocolProxy::readio(int32_t *ack0) { PROXY_IMPL_01(kmodule_readio); } -int32_t ZIProtocolProxy::writeio(int32_t para0) { PROXY_IMPL_10(kmodule_writeio); } - -int32_t ZIProtocolProxy::read_adc(int para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_read_adc); } +int32_t ZIProtocolProxy::module_read_adc(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_read_adc); } +int32_t ZIProtocolProxy::module_get_error(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_error); } +int32_t ZIProtocolProxy::module_clear_error() { PROXY_IMPL_00(kmodule_clear_error); } /******************************************************************************* * ZIMotor * *******************************************************************************/ int32_t ZIProtocolProxy::motor_enable(int32_t para0) { PROXY_IMPL_10(kmotor_enable); } -int32_t ZIProtocolProxy::motor_rotate(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_rotate); } -int32_t ZIProtocolProxy::motor_move_by(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_move_by); } -int32_t ZIProtocolProxy::motor_move_to(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_move_to); } +int32_t ZIProtocolProxy::motor_rotate(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_rotate); } +int32_t ZIProtocolProxy::motor_move_by(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_by); } +int32_t ZIProtocolProxy::motor_move_to(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to); } int32_t ZIProtocolProxy::motor_move_to_with_torque(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_move_to_with_torque); } /******************************************************************************* diff --git a/protocol_proxy.hpp b/protocol_proxy.hpp index d4e5479..7bdba74 100644 --- a/protocol_proxy.hpp +++ b/protocol_proxy.hpp @@ -24,35 +24,38 @@ class ZIProtocolProxy : public ZIMotor, // /******************************************************************************* * ZIModule * *******************************************************************************/ - virtual int32_t stop(); - virtual int32_t brake(); - virtual int32_t get_last_exec_status(int32_t *status); - virtual int32_t get_status(int32_t *status); + virtual int32_t module_stop() override; + virtual int32_t module_break() override; + virtual int32_t module_get_last_exec_status(int32_t *status) override; + virtual int32_t module_get_status(int32_t *status) override; - virtual int32_t set_param(int32_t param_id, int32_t param_value); - virtual int32_t get_param(int32_t param_id, int32_t *param_value); + virtual int32_t module_set_param(int32_t param_id, int32_t param_value) override; + virtual int32_t module_get_param(int32_t param_id, int32_t *param_value) override; - virtual int32_t readio(int32_t *io); - virtual int32_t writeio(int32_t io); + virtual int32_t module_readio(int32_t *io) override; + virtual int32_t module_writeio(int32_t io) override; - virtual int32_t read_adc(int adcindex, int32_t *adc); + virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) override; + + virtual int32_t module_get_error(int32_t *iserror) override; + virtual int32_t module_clear_error() override; /******************************************************************************* * ZIMotor * *******************************************************************************/ - virtual int32_t motor_enable(int32_t enable); - virtual int32_t motor_rotate(int32_t direction, int32_t velocitylevel); - virtual int32_t motor_move_by(int32_t distance, int32_t velocitylevel); - virtual int32_t motor_move_to(int32_t position, int32_t velocitylevel); - virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque); + virtual int32_t motor_enable(int32_t enable) override; + virtual int32_t motor_rotate(int32_t direction, int32_t motor_velocity, int32_t acc) override; + virtual int32_t motor_move_by(int32_t direction, int32_t motor_velocity, int32_t acc) override; + virtual int32_t motor_move_to(int32_t direction, int32_t motor_velocity, int32_t acc) override; + virtual int32_t motor_move_to_with_torque(int32_t pos, int32_t torque) override; /******************************************************************************* * ZIXYMotor * *******************************************************************************/ - virtual int32_t xymotor_enable(int32_t enable); - virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t velocitylevel); - virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t velocitylevel); + virtual int32_t xymotor_enable(int32_t enable) override; + virtual int32_t xymotor_move_by(int32_t dx, int32_t dy, int32_t motor_velocity) override; + virtual int32_t xymotor_move_to(int32_t x, int32_t y, int32_t motor_velocity) override; }; } // namespace iflytop \ No newline at end of file diff --git a/zmodule_device_manager.cpp b/zmodule_device_manager.cpp index 1233bf0..d073e3a 100644 --- a/zmodule_device_manager.cpp +++ b/zmodule_device_manager.cpp @@ -12,26 +12,28 @@ using namespace std; /******************************************************************************* * ZIModule * *******************************************************************************/ -int32_t ZModuleDeviceManager::stop(uint16_t id) { PROXY_IMPL(ZIModule, stop); } -int32_t ZModuleDeviceManager::brake(uint16_t id) { PROXY_IMPL(ZIModule, brake); } -int32_t ZModuleDeviceManager::get_last_exec_status(uint16_t id, int32_t *ack0) { PROXY_IMPL(ZIModule, get_last_exec_status, ack0); } -int32_t ZModuleDeviceManager::get_status(uint16_t id, int32_t *status) { PROXY_IMPL(ZIModule, get_status, status); } -int32_t ZModuleDeviceManager::set_param(uint16_t id, int32_t param_id, int32_t param_value) { PROXY_IMPL(ZIModule, set_param, param_id, param_value); } -int32_t ZModuleDeviceManager::get_param(uint16_t id, int32_t param_id, int32_t *param_value) { PROXY_IMPL(ZIModule, get_param, param_id, param_value); } -int32_t ZModuleDeviceManager::readio(uint16_t id, int32_t *io) { PROXY_IMPL(ZIModule, readio, io); } -int32_t ZModuleDeviceManager::writeio(uint16_t id, int32_t io) { PROXY_IMPL(ZIModule, writeio, io); } -int32_t ZModuleDeviceManager::read_adc(uint16_t id, int adcindex, int32_t *adc) { PROXY_IMPL(ZIModule, read_adc, adcindex, adc); } +int32_t ZModuleDeviceManager::module_stop(uint16_t id) { PROXY_IMPL(ZIModule, module_stop); } +int32_t ZModuleDeviceManager::module_break(uint16_t id) { PROXY_IMPL(ZIModule, module_break); } +int32_t ZModuleDeviceManager::module_get_last_exec_status(uint16_t id, int32_t *ack0) { PROXY_IMPL(ZIModule, module_get_last_exec_status, ack0); } +int32_t ZModuleDeviceManager::module_get_status(uint16_t id, int32_t *status) { PROXY_IMPL(ZIModule, module_get_status, status); } +int32_t ZModuleDeviceManager::module_set_param(uint16_t id, int32_t param_id, int32_t param_value) { PROXY_IMPL(ZIModule, module_set_param, param_id, param_value); } +int32_t ZModuleDeviceManager::module_get_param(uint16_t id, int32_t param_id, int32_t *param_value) { PROXY_IMPL(ZIModule, module_get_param, param_id, param_value); } +int32_t ZModuleDeviceManager::module_readio(uint16_t id, int32_t *io) { PROXY_IMPL(ZIModule, module_readio, io); } +int32_t ZModuleDeviceManager::module_writeio(uint16_t id, int32_t io) { PROXY_IMPL(ZIModule, module_writeio, io); } +int32_t ZModuleDeviceManager::module_read_adc(uint16_t id, int32_t adcindex, int32_t *adc) { PROXY_IMPL(ZIModule, module_read_adc, adcindex, adc); } +int32_t ZModuleDeviceManager::module_get_error(uint16_t id, int32_t *iserror) { PROXY_IMPL(ZIModule, module_get_error, iserror); } +int32_t ZModuleDeviceManager::module_clear_error(uint16_t id) { PROXY_IMPL(ZIModule, module_clear_error); } /******************************************************************************* * ZIMotor * *******************************************************************************/ int32_t ZModuleDeviceManager::motor_enable(uint16_t id, int32_t enable) { PROXY_IMPL(ZIMotor, motor_enable, enable); } -int32_t ZModuleDeviceManager::motor_rotate(uint16_t id, int32_t direction, int32_t velocitylevel) { PROXY_IMPL(ZIMotor, motor_rotate, direction, velocitylevel); } -int32_t ZModuleDeviceManager::motor_move_by(uint16_t id, int32_t distance, int32_t velocitylevel) { PROXY_IMPL(ZIMotor, motor_move_by, distance, velocitylevel); } -int32_t ZModuleDeviceManager::motor_move_to(uint16_t id, int32_t position, int32_t velocitylevel) { PROXY_IMPL(ZIMotor, motor_move_to, position, velocitylevel); } +int32_t ZModuleDeviceManager::motor_rotate(uint16_t id, int32_t direction, int32_t motor_velocity, int32_t acc) { PROXY_IMPL(ZIMotor, motor_rotate, direction, motor_velocity, acc); } +int32_t ZModuleDeviceManager::motor_move_by(uint16_t id, int32_t distance, int32_t motor_velocity, int32_t acc) { PROXY_IMPL(ZIMotor, motor_move_by, distance, motor_velocity, acc); } +int32_t ZModuleDeviceManager::motor_move_to(uint16_t id, int32_t position, int32_t motor_velocity, int32_t acc) { PROXY_IMPL(ZIMotor, motor_move_to, position, motor_velocity, acc); } int32_t ZModuleDeviceManager::motor_move_to_with_torque(uint16_t id, int32_t pos, int32_t torque) { PROXY_IMPL(ZIMotor, motor_move_to_with_torque, pos, torque); } /******************************************************************************* * ZIXYMotor * *******************************************************************************/ int32_t ZModuleDeviceManager::xymotor_enable(uint16_t id, int32_t enable) { PROXY_IMPL(ZIXYMotor, xymotor_enable, enable); } -int32_t ZModuleDeviceManager::xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t velocitylevel) { PROXY_IMPL(ZIXYMotor, xymotor_move_by, dx, dy, velocitylevel); } -int32_t ZModuleDeviceManager::xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t velocitylevel) { PROXY_IMPL(ZIXYMotor, xymotor_move_to, x, y, velocitylevel); } \ No newline at end of file +int32_t ZModuleDeviceManager::xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t motor_velocity) { PROXY_IMPL(ZIXYMotor, xymotor_move_by, dx, dy, motor_velocity); } +int32_t ZModuleDeviceManager::xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t motor_velocity) { PROXY_IMPL(ZIXYMotor, xymotor_move_to, x, y, motor_velocity); } \ No newline at end of file diff --git a/zmodule_device_manager.hpp b/zmodule_device_manager.hpp index 34be7e7..cd62d49 100644 --- a/zmodule_device_manager.hpp +++ b/zmodule_device_manager.hpp @@ -17,47 +17,50 @@ class ZModuleDeviceManager { /******************************************************************************* * ZIModule * *******************************************************************************/ - int32_t stop(uint16_t id); - int32_t brake(uint16_t id); + int32_t module_stop(uint16_t id); + int32_t module_break(uint16_t id); - int32_t get_last_exec_status(uint16_t id, int32_t *status); - int32_t get_status(uint16_t id, int32_t *status); + int32_t module_get_last_exec_status(uint16_t id, int32_t *status); + int32_t module_get_status(uint16_t id, int32_t *status); - int32_t set_param(uint16_t id, int32_t param_id, int32_t param_value); - int32_t get_param(uint16_t id, int32_t param_id, int32_t *param_value); + int32_t module_set_param(uint16_t id, int32_t param_id, int32_t param_value); + int32_t module_get_param(uint16_t id, int32_t param_id, int32_t *param_value); - int32_t readio(uint16_t id, int32_t *io); - int32_t writeio(uint16_t id, int32_t io); + int32_t module_readio(uint16_t id, int32_t *io); + int32_t module_writeio(uint16_t id, int32_t io); - int32_t read_adc(uint16_t id, int adcindex, int32_t *adc); + int32_t module_read_adc(uint16_t id, int adcindex, int32_t *adc); + + int32_t module_get_error(uint16_t id, int32_t *iserror); + int32_t module_clear_error(uint16_t id); /******************************************************************************* * ZIMotor * *******************************************************************************/ int32_t motor_enable(uint16_t id, int32_t enable); - int32_t motor_rotate(uint16_t id, int32_t direction, int32_t velocitylevel); - int32_t motor_move_by(uint16_t id, int32_t distance, int32_t velocitylevel); - int32_t motor_move_to(uint16_t id, int32_t position, int32_t velocitylevel); + int32_t motor_rotate(uint16_t id, int32_t direction, int32_t motor_velocity, int32_t acc); + int32_t motor_move_by(uint16_t id, int32_t distance, int32_t motor_velocity, int32_t acc); + int32_t motor_move_to(uint16_t id, int32_t position, int32_t motor_velocity, int32_t acc); int32_t motor_move_to_with_torque(uint16_t id, int32_t pos, int32_t torque); /******************************************************************************* * ZIXYMotor * *******************************************************************************/ int32_t xymotor_enable(uint16_t id, int32_t enable); - int32_t xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t velocitylevel); - int32_t xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t velocitylevel); + int32_t xymotor_move_by(uint16_t id, int32_t dx, int32_t dy, int32_t motor_velocity); + int32_t xymotor_move_to(uint16_t id, int32_t x, int32_t y, int32_t motor_velocity); private: template int32_t findModule(uint16_t id, T **module) { auto it = m_modulers.find(id); if (it == m_modulers.end()) { - return err::kce_no_such_module; + return err::kmodule_not_found; } T *_module = dynamic_cast(it->second); if (_module == nullptr) { - return err::kce_operation_not_support; + return err::koperation_not_support; } *module = _module; return 0; diff --git a/zmodule_device_script_cmder_paser.cpp b/zmodule_device_script_cmder_paser.cpp index 38384e0..515640c 100644 --- a/zmodule_device_script_cmder_paser.cpp +++ b/zmodule_device_script_cmder_paser.cpp @@ -1,4 +1,5 @@ #include "zmodule_device_script_cmder_paser.hpp" + #include #include #include @@ -12,8 +13,6 @@ using namespace std; ack->rawlen = XACK * 4; \ }); - - #define PROCESS_PACKET_00(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 0, 0) #define PROCESS_PACKET_01(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 0, 1, ack->getAck(0)) #define PROCESS_PACKET_02(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 0, 2, ack->getAck(0), ack->getAck(1)) @@ -40,23 +39,25 @@ using namespace std; #define PROCESS_PACKET_43(var_funcname, cmdhelp) PROCESS_PACKET_XX(var_funcname, cmdhelp, 4, 3, atoi(paraV[0]), atoi(paraV[1]), atoi(paraV[2]), atoi(paraV[3]), ack->getAck(0), ack->getAck(1), ack->getAck(2)) void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDeviceManager* deviceManager) { - PROCESS_PACKET_10(stop, "stop (id)"); - PROCESS_PACKET_10(brake, "brake (id)"); - PROCESS_PACKET_11(get_last_exec_status, "get_last_exec_status (id)"); - PROCESS_PACKET_11(get_status, "get_status (id)"); - PROCESS_PACKET_30(set_param, "set_param (id, param_id, param_value)"); - PROCESS_PACKET_21(get_param, "get_param (id, param_id)"); - PROCESS_PACKET_11(readio, "readio (id)"); - PROCESS_PACKET_20(writeio, "writeio (id, io)"); - PROCESS_PACKET_21(read_adc, "read_adc (id, adcindex)"); - - PROCESS_PACKET_20(motor_enable, "motor_enable (id, enable)"); - PROCESS_PACKET_30(motor_rotate, "motor_rotate (id, direction, velocitylevel)"); - PROCESS_PACKET_30(motor_move_by, "motor_move_by (id, distance, velocitylevel)"); - PROCESS_PACKET_30(motor_move_to, "motor_move_to (id, position, velocitylevel)"); - PROCESS_PACKET_30(motor_move_to_with_torque, "motor_move_to_with_torque (id, pos, torque)"); - - PROCESS_PACKET_20(xymotor_enable, "xymotor_enable (id, enable)"); - PROCESS_PACKET_40(xymotor_move_by, "xymotor_move_by (id, dx, dy, velocitylevel)"); - PROCESS_PACKET_40(xymotor_move_to, "xymotor_move_to (id, x, y, velocitylevel)"); + PROCESS_PACKET_10(module_stop, "stop (mid)"); + PROCESS_PACKET_10(module_break, "module_break (mid)"); + PROCESS_PACKET_11(module_get_last_exec_status, "get_last_exec_status (mid)"); + PROCESS_PACKET_11(module_get_status, "get_status (mid)"); + PROCESS_PACKET_30(module_set_param, "set_param (mid, param_id, param_value)"); + PROCESS_PACKET_21(module_get_param, "get_param (mid, param_id)"); + PROCESS_PACKET_11(module_readio, "readio (mid)"); + PROCESS_PACKET_20(module_writeio, "writeio (mid, io)"); + PROCESS_PACKET_21(module_read_adc, "read_adc (mid,adc_id, adcindex)"); + PROCESS_PACKET_11(module_get_error, "get_error (mid)"); + PROCESS_PACKET_10(module_clear_error, "clear_error (mid)"); + + PROCESS_PACKET_20(motor_enable, "motor_enable (mid, enable)"); + PROCESS_PACKET_40(motor_rotate, "motor_rotate (mid, direction, motor_velocity, acc)"); + PROCESS_PACKET_40(motor_move_by, "motor_move_by (mid, distance, motor_velocity, acc)"); + PROCESS_PACKET_40(motor_move_to, "motor_move_to (mid, position, motor_velocity, acc)"); + PROCESS_PACKET_30(motor_move_to_with_torque, "motor_move_to_with_torque (mid, pos, torque)"); + + PROCESS_PACKET_20(xymotor_enable, "xymotor_enable (mid, enable)"); + PROCESS_PACKET_40(xymotor_move_by, "xymotor_move_by (mid, dx, dy, motor_velocity)"); + PROCESS_PACKET_40(xymotor_move_to, "xymotor_move_to (mid, x, y, motor_velocity)"); }