#pragma once #include #include "api/api.hpp" #include "api\i_zcan_cmder_master.hpp" #include "cmdid.hpp" namespace iflytop { class ZIProtocolProxy : public ZIMotor, // public ZIXYMotor, // public ZIModule { private: IZcanCmderMaster *m_cancmder; int32_t m_id = 0; public: void initialize(IZCanCmder *cancmder, int32_t id); virtual int32_t getid(int32_t *id) { *id = m_id; return 0; }; /******************************************************************************* * 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 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 readio(int32_t *io); virtual int32_t writeio(int32_t io); virtual int32_t read_adc(int adcindex, int32_t *adc); /******************************************************************************* * 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); /******************************************************************************* * 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); }; } // namespace iflytop