Browse Source

update

change_pipette_api
zhaohe 2 years ago
parent
commit
4aed09f7ae
  1. 3
      api/api.hpp
  2. 11
      api/i_cmdparser.hpp
  3. 2
      api/i_zcan_cmder.hpp
  4. 3
      api/i_zcan_cmder_master.hpp
  5. 1
      api/protocol_constant.hpp
  6. 2
      api/zi_module.hpp
  7. 5
      cmdid.hpp
  8. 29
      protocol_parser.cpp
  9. 6
      protocol_parser.hpp
  10. 166
      protocol_proxy.cpp
  11. 2
      protocol_proxy.hpp
  12. 2
      zmodule_device_manager.cpp
  13. 2
      zmodule_device_manager.hpp
  14. 12
      zmodule_device_script_cmder_paser.cpp

3
api/api.hpp

@ -8,4 +8,5 @@
#include "i_zcan_cmder.hpp"
#include "i_zcan_cmder_master.hpp"
#include "i_cmdparser.hpp"
#include "state_index.hpp"
#include "state_index.hpp"
#include "protocol_constant.hpp"

11
api/i_cmdparser.hpp

@ -8,6 +8,7 @@
#include "config_index.hpp"
#include "errorcode.hpp"
#include "packet_interface.hpp"
#include "protocol_constant.hpp"
namespace iflytop {
using namespace zcr;
@ -22,7 +23,7 @@ class ICmdParserACK {
public:
int32_t ecode;
ICmdParserACKType_t acktype;
uint8_t rawdata[512];
uint8_t rawdata[ZCANCMD_READ_BUF_MAX_SIZE + 100];
int32_t rawlen;
public:
@ -34,10 +35,10 @@ class ICmdParserACK {
}
void setNoneAck(int32_t ecode) {
this->ecode = ecode;
acktype = kAckType_none;
rawlen = 0;
rawdata[0] = 0;
this->ecode = ecode;
acktype = kAckType_none;
rawlen = 0;
rawdata[0] = 0;
}
int32_t *getAck(int index) {

2
api/i_zcan_cmder.hpp

@ -18,7 +18,7 @@ class IZCanCmder {
public:
public:
virtual void registerListener(IZcanCmderListener *listener) = 0;
virtual int32_t sendAck(zcr_cmd_header_t *rx_cmd_header, uint8_t *data, int32_t len) = 0;
virtual int32_t sendBufAck(zcr_cmd_header_t *rx_cmd_header, uint8_t *data, int32_t len) = 0;
virtual int32_t sendAck(zcr_cmd_header_t *rx_cmd_header, int32_t *ackvar, int32_t nack) = 0;
virtual int32_t sendErrorAck(zcr_cmd_header_t *rx_cmd_header, int32_t errorcode) = 0;
};

3
api/i_zcan_cmder_master.hpp

@ -15,7 +15,8 @@ using namespace zcr;
class IZcanCmderMaster {
public:
virtual int32_t sendCmd(int32_t cmdid, int32_t moduleid, int32_t *param, size_t npara, int32_t *ack, size_t nack, int overtime_ms) = 0;
virtual int32_t sendCmd(int32_t cmdid, int32_t moduleid, int32_t *param, size_t npara, int32_t *ack, size_t nack, int overtime_ms) = 0;
virtual int32_t sendCmdAndReceiveBuf(int32_t cmdid, int32_t moduleid, int32_t *param, size_t npara, uint8_t *ack, int32_t *rxsize, int overtime_ms) = 0;
};
} // namespace iflytop

1
api/protocol_constant.hpp

@ -0,0 +1 @@
#define ZCANCMD_READ_BUF_MAX_SIZE 512

2
api/zi_module.hpp

@ -33,6 +33,8 @@ class ZIModule {
virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; }
virtual int32_t module_read_raw(int32_t startadd, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
virtual int32_t module_set_inited_flag(int32_t flag) {
m_inited_flag = flag;
return 0;

5
cmdid.hpp

@ -7,6 +7,7 @@ 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; }
virtual int32_t module_read_raw(int32_t startadd, int32_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
kmodule_stop = CMDID(1, 1), // para:{}, ack:{}
@ -27,6 +28,7 @@ typedef enum {
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}
kmodule_read_raw = CMDID(1, 19), // para:{4,4}, ack:{4}
#if 0
virtual int32_t motor_enable(int32_t enable) { return err::koperation_not_support; }
@ -85,6 +87,9 @@ typedef enum {
kxymotor_read_pos = CMDID(3, 6), // para:{}, ack:{4,4}
kxymotor_calculated_pos_by_move_to_zero = CMDID(3, 7), // para:{}, ack:{}
#if 0
#endif
} cmdid_t;
} // namespace zcr

29
protocol_parser.cpp

@ -31,15 +31,35 @@ using namespace std;
return; \
}
#define PROCESS_PACKET_BUF_REQ_XX_END() \
if (ecode == 0) { \
m_cancmder->sendBufAck(rxcmd, ackbuf, readbufsize); \
return; \
} else { \
m_cancmder->sendErrorAck(rxcmd, ecode); \
} \
return; \
}
#define PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, XP, XACK, ...) \
{ \
PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \
CHECK_PARAM_NUM(XP) \
int32_t ack[XACK + 1] = {0}; \
int32_t ecode = mod->var_funcname(__VA_ARGS__); \
int32_t* ack = (int32_t*)&ackbuf[0]; \
static_assert(XACK * sizeof(int32_t) < sizeof(ackbuf)); \
int32_t ecode = mod->var_funcname(__VA_ARGS__); \
PROCESS_PACKET_XX_END(XACK) \
}
#define PROCESS_BUF_REQUEST_X(var_cmdid, var_moduleType, var_funcname, XP, ...) \
{ \
PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \
CHECK_PARAM_NUM(XP) \
int32_t readbufsize = ZCANCMD_READ_BUF_MAX_SIZE; \
int32_t ecode = mod->var_funcname(__VA_ARGS__); \
PROCESS_PACKET_BUF_REQ_XX_END() \
}
#define PROCESS_PACKET_00(var_cmdid, var_moduleType, var_funcname) PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, 0, 0)
#define PROCESS_PACKET_01(var_cmdid, var_moduleType, var_funcname) PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, 0, 1, &ack[0])
#define PROCESS_PACKET_02(var_cmdid, var_moduleType, var_funcname) PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, 0, 2, &ack[0], &ack[1])
@ -65,6 +85,8 @@ using namespace std;
#define PROCESS_PACKET_42(var_cmdid, var_moduleType, var_funcname) PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, 4, 2, param[0], param[1], param[2], param[3], &ack[0], &ack[1])
#define PROCESS_PACKET_43(var_cmdid, var_moduleType, var_funcname) PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, 4, 3, param[0], param[1], param[2], param[3], &ack[0], &ack[1], &ack[2])
#define PROCESS_BUF_REQUEST_1(var_cmdid, var_moduleType, var_funcname) PROCESS_BUF_REQUEST_X(var_cmdid, var_moduleType, var_funcname, 1, param[0], &ackbuf[0], &readbufsize)
void ZIProtocolParser::initialize(IZCanCmder* cancmder) {
m_cancmder = cancmder;
m_cancmder->registerListener(this);
@ -129,6 +151,8 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in
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_read_raw(int32_t startadd, int32_t *data, int32_t *len) { return err::koperation_not_support; }
#endif
PROCESS_PACKET_00(kmodule_stop, ZIModule, module_stop);
PROCESS_PACKET_00(kmodule_break, ZIModule, module_break);
@ -148,6 +172,7 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in
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);
PROCESS_BUF_REQUEST_1(kmodule_read_raw, ZIModule, module_read_raw);
/*******************************************************************************
* motor *

6
protocol_parser.hpp

@ -10,13 +10,15 @@ class ZIProtocolParser : public IZcanCmderListener {
IZCanCmder* m_cancmder = nullptr;
map<uint16_t, ZIModule*> m_modulers;
uint8_t ackbuf[ZCANCMD_READ_BUF_MAX_SIZE + 100];
public:
void initialize(IZCanCmder* cancmder);
virtual void onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, int32_t len);
void registerModule(ZIModule* module);
private:
void _registerModule(uint16_t id, ZIModule* module);
private:
void _registerModule(uint16_t id, ZIModule* module);
};
} // namespace iflytop

166
protocol_proxy.cpp

@ -37,66 +37,72 @@ using namespace iflytop;
PROXY_IMPL_X4_ACK(); \
*ack4 = ack[4];
#define PROXY_IMPL_XX(cmdindex, paramnum, acknum, paraassign, ackassign) \
int32_t param[1 + paramnum] = {0}; \
int32_t ack[1 + acknum] = {0}; \
paraassign; \
int32_t ecode = m_cancmder->sendCmd(cmdindex, m_id, param, paramnum, ack, acknum, 30); \
ackassign; \
#define PROXY_IMPL_XX(cmdindex, paramnum, acknum, paraassign, ackassign, overtime) \
int32_t param[1 + paramnum] = {0}; \
int32_t ack[1 + acknum] = {0}; \
paraassign; \
int32_t ecode = m_cancmder->sendCmd(cmdindex, m_id, param, paramnum, ack, acknum, overtime); \
ackassign; \
return ecode;
#define PROXY_IMPL_00(cmdindex) PROXY_IMPL_XX(cmdindex, 0, 0, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X0_ACK());
#define PROXY_IMPL_01(cmdindex) PROXY_IMPL_XX(cmdindex, 0, 1, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X1_ACK());
#define PROXY_IMPL_02(cmdindex) PROXY_IMPL_XX(cmdindex, 0, 2, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X2_ACK());
#define PROXY_IMPL_03(cmdindex) PROXY_IMPL_XX(cmdindex, 0, 3, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X3_ACK());
#define PROXY_IMPL_04(cmdindex) PROXY_IMPL_XX(cmdindex, 0, 4, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X4_ACK());
#define PROXY_IMPL_10(cmdindex) PROXY_IMPL_XX(cmdindex, 1, 0, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X0_ACK());
#define PROXY_IMPL_11(cmdindex) PROXY_IMPL_XX(cmdindex, 1, 1, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X1_ACK());
#define PROXY_IMPL_12(cmdindex) PROXY_IMPL_XX(cmdindex, 1, 2, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X2_ACK());
#define PROXY_IMPL_13(cmdindex) PROXY_IMPL_XX(cmdindex, 1, 3, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X3_ACK());
#define PROXY_IMPL_14(cmdindex) PROXY_IMPL_XX(cmdindex, 1, 4, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X4_ACK());
#define PROXY_IMPL_20(cmdindex) PROXY_IMPL_XX(cmdindex, 2, 0, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X0_ACK());
#define PROXY_IMPL_21(cmdindex) PROXY_IMPL_XX(cmdindex, 2, 1, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X1_ACK());
#define PROXY_IMPL_22(cmdindex) PROXY_IMPL_XX(cmdindex, 2, 2, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X2_ACK());
#define PROXY_IMPL_23(cmdindex) PROXY_IMPL_XX(cmdindex, 2, 3, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X3_ACK());
#define PROXY_IMPL_24(cmdindex) PROXY_IMPL_XX(cmdindex, 2, 4, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X4_ACK());
#define PROXY_IMPL_30(cmdindex) PROXY_IMPL_XX(cmdindex, 3, 0, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X0_ACK());
#define PROXY_IMPL_31(cmdindex) PROXY_IMPL_XX(cmdindex, 3, 1, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X1_ACK());
#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());
#define PROXY_IMPL_40(cmdindex) PROXY_IMPL_XX(cmdindex, 4, 0, PROXY_IMPL_4X_PARA(), PROXY_IMPL_X0_ACK());
#define PROXY_IMPL_41(cmdindex) PROXY_IMPL_XX(cmdindex, 4, 1, PROXY_IMPL_4X_PARA(), PROXY_IMPL_X1_ACK());
#define PROXY_IMPL_42(cmdindex) PROXY_IMPL_XX(cmdindex, 4, 2, PROXY_IMPL_4X_PARA(), PROXY_IMPL_X2_ACK());
#define PROXY_IMPL_43(cmdindex) PROXY_IMPL_XX(cmdindex, 4, 3, PROXY_IMPL_4X_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::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); }
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); }
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); };
#define PROXY_IMPL_00(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 0, 0, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X0_ACK(), overtime);
#define PROXY_IMPL_01(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 0, 1, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X1_ACK(), overtime);
#define PROXY_IMPL_02(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 0, 2, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X2_ACK(), overtime);
#define PROXY_IMPL_03(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 0, 3, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X3_ACK(), overtime);
#define PROXY_IMPL_04(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 0, 4, PROXY_IMPL_0X_PARA(), PROXY_IMPL_X4_ACK(), overtime);
#define PROXY_IMPL_10(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 1, 0, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X0_ACK(), overtime);
#define PROXY_IMPL_11(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 1, 1, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X1_ACK(), overtime);
#define PROXY_IMPL_12(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 1, 2, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X2_ACK(), overtime);
#define PROXY_IMPL_13(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 1, 3, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X3_ACK(), overtime);
#define PROXY_IMPL_14(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 1, 4, PROXY_IMPL_1X_PARA(), PROXY_IMPL_X4_ACK(), overtime);
#define PROXY_IMPL_20(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 2, 0, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X0_ACK(), overtime);
#define PROXY_IMPL_21(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 2, 1, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X1_ACK(), overtime);
#define PROXY_IMPL_22(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 2, 2, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X2_ACK(), overtime);
#define PROXY_IMPL_23(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 2, 3, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X3_ACK(), overtime);
#define PROXY_IMPL_24(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 2, 4, PROXY_IMPL_2X_PARA(), PROXY_IMPL_X4_ACK(), overtime);
#define PROXY_IMPL_30(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 3, 0, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X0_ACK(), overtime);
#define PROXY_IMPL_31(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 3, 1, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X1_ACK(), overtime);
#define PROXY_IMPL_32(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 3, 2, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X2_ACK(), overtime);
#define PROXY_IMPL_33(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 3, 3, PROXY_IMPL_3X_PARA(), PROXY_IMPL_X3_ACK(), overtime);
#define PROXY_IMPL_40(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 4, 0, PROXY_IMPL_4X_PARA(), PROXY_IMPL_X0_ACK(), overtime);
#define PROXY_IMPL_41(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 4, 1, PROXY_IMPL_4X_PARA(), PROXY_IMPL_X1_ACK(), overtime);
#define PROXY_IMPL_42(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 4, 2, PROXY_IMPL_4X_PARA(), PROXY_IMPL_X2_ACK(), overtime);
#define PROXY_IMPL_43(cmdindex, overtime) PROXY_IMPL_XX(cmdindex, 4, 3, PROXY_IMPL_4X_PARA(), PROXY_IMPL_X3_ACK(), overtime);
int32_t ZIProtocolProxy::module_stop() { PROXY_IMPL_00(kmodule_stop, 30); }
int32_t ZIProtocolProxy::module_break() { PROXY_IMPL_00(kmodule_break, 30); }
int32_t ZIProtocolProxy::module_get_last_exec_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_last_exec_status, 30); }
int32_t ZIProtocolProxy::module_get_status(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_status, 30); }
int32_t ZIProtocolProxy::module_set_param(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmodule_set_param, 30); }
int32_t ZIProtocolProxy::module_get_param(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_get_param, 30); }
int32_t ZIProtocolProxy::module_readio(int32_t *ack0) { PROXY_IMPL_01(kmodule_readio, 30); }
int32_t ZIProtocolProxy::module_writeio(int32_t para0) { PROXY_IMPL_10(kmodule_writeio, 30); }
int32_t ZIProtocolProxy::module_read_adc(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_read_adc, 30); }
int32_t ZIProtocolProxy::module_get_error(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_error, 30); }
int32_t ZIProtocolProxy::module_clear_error() { PROXY_IMPL_00(kmodule_clear_error, 30); }
int32_t ZIProtocolProxy::module_set_inited_flag(int32_t para0) { PROXY_IMPL_10(kmodule_set_inited_flag, 30); };
int32_t ZIProtocolProxy::module_get_inited_flag(int32_t *ack0) { PROXY_IMPL_01(kmodule_get_inited_flag, 30); };
int32_t ZIProtocolProxy::module_factory_reset() { PROXY_IMPL_00(kmodule_factory_reset, 30); }
int32_t ZIProtocolProxy::module_flush_cfg() { PROXY_IMPL_00(kmodule_flush_cfg, 5000); }
int32_t ZIProtocolProxy::module_active_cfg() { PROXY_IMPL_00(kmodule_active_cfg, 30); }
int32_t ZIProtocolProxy::module_set_state(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmodule_set_state, 30); };
int32_t ZIProtocolProxy::module_get_state(int32_t para0, int32_t *ack0) { PROXY_IMPL_11(kmodule_get_state, 30); };
int32_t ZIProtocolProxy::module_read_raw(int32_t startadd, uint8_t *data, int32_t *len) {
int32_t param[1 + 1] = {0};
param[0] = startadd;
int32_t ecode = m_cancmder->sendCmdAndReceiveBuf(kmodule_read_raw, m_id, param, 1, data, len, 100);
return ecode;
}
/*******************************************************************************
* ZIMotor *
@ -125,26 +131,26 @@ int32_t ZIProtocolProxy::module_get_state(int32_t para0, int32_t *ack0) { PROXY_
#endif
int32_t ZIProtocolProxy::motor_enable(int32_t para0) { PROXY_IMPL_10(kmotor_enable); }
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_rotate_with_torque(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_rotate_with_torque); }
int32_t ZIProtocolProxy::motor_enable(int32_t para0) { PROXY_IMPL_10(kmotor_enable, 30); }
int32_t ZIProtocolProxy::motor_rotate(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_rotate, 30); }
int32_t ZIProtocolProxy::motor_move_by(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_by, 30); }
int32_t ZIProtocolProxy::motor_move_to(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to, 30); }
int32_t ZIProtocolProxy::motor_rotate_with_torque(int32_t para0, int32_t para1) { PROXY_IMPL_20(kmotor_rotate_with_torque, 30); }
int32_t ZIProtocolProxy::motor_rotate_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_rotate_acctime); }
int32_t ZIProtocolProxy::motor_move_by_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_by_acctime); }
int32_t ZIProtocolProxy::motor_move_to_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to_acctime); }
int32_t ZIProtocolProxy::motor_rotate_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_rotate_acctime, 30); }
int32_t ZIProtocolProxy::motor_move_by_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_by_acctime, 30); }
int32_t ZIProtocolProxy::motor_move_to_acctime(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to_acctime, 30); }
int32_t ZIProtocolProxy::motor_move_to_zero_forward(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_move_to_zero_forward); }
int32_t ZIProtocolProxy::motor_move_to_zero_backward(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_move_to_zero_backward); }
int32_t ZIProtocolProxy::motor_move_to_zero_forward(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_move_to_zero_forward, 30); }
int32_t ZIProtocolProxy::motor_move_to_zero_backward(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_move_to_zero_backward, 30); }
int32_t ZIProtocolProxy::motor_read_pos(int32_t *ack0) { PROXY_IMPL_01(kmotor_read_pos); }
int32_t ZIProtocolProxy::motor_set_current_pos_by_change_shift(int32_t para0) { PROXY_IMPL_10(kmotor_set_current_pos_by_change_shift); }
int32_t ZIProtocolProxy::motor_read_pos(int32_t *ack0) { PROXY_IMPL_01(kmotor_read_pos, 30); }
int32_t ZIProtocolProxy::motor_set_current_pos_by_change_shift(int32_t para0) { PROXY_IMPL_10(kmotor_set_current_pos_by_change_shift, 30); }
int32_t ZIProtocolProxy::motor_move_to_zero_forward_and_calculated_shift(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_motor_move_to_zero_forward_and_calculated_shift); };
int32_t ZIProtocolProxy::motor_move_to_zero_backward_and_calculated_shift(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_motor_move_to_zero_backward_and_calculated_shift); };
int32_t ZIProtocolProxy::motor_move_to_zero_forward_and_calculated_shift(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_motor_move_to_zero_forward_and_calculated_shift, 30); };
int32_t ZIProtocolProxy::motor_move_to_zero_backward_and_calculated_shift(int32_t para0, int32_t para1, int32_t para2, int32_t para3) { PROXY_IMPL_40(kmotor_motor_move_to_zero_backward_and_calculated_shift, 30); };
int32_t ZIProtocolProxy::motor_move_to_torque(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to_torque); }
int32_t ZIProtocolProxy::motor_move_to_torque(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kmotor_move_to_torque, 30); }
/*******************************************************************************
* ZIXYMotor *
@ -159,10 +165,10 @@ int32_t ZIProtocolProxy::motor_move_to_torque(int32_t para0, int32_t para1, int3
virtual int32_t xymotor_read_pos(int32_t *x, int32_t *y) { return err::koperation_not_support; }
virtual int32_t xymotor_calculated_pos_by_move_to_zero() { return err::koperation_not_support; }
#endif
int32_t ZIProtocolProxy::xymotor_enable(int32_t para0) { PROXY_IMPL_10(kxymotor_enable); }
int32_t ZIProtocolProxy::xymotor_move_by(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kxymotor_move_by); }
int32_t ZIProtocolProxy::xymotor_move_to(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kxymotor_move_to); }
int32_t ZIProtocolProxy::xymotor_move_to_zero() { PROXY_IMPL_00(kxymotor_move_to_zero); }
int32_t ZIProtocolProxy::xymotor_move_to_zero_and_calculated_shift() { PROXY_IMPL_00(kxymotor_move_to_zero_and_calculated_shift); }
int32_t ZIProtocolProxy::xymotor_read_pos(int32_t *ack0, int32_t *ack1) { PROXY_IMPL_02(kxymotor_read_pos); }
int32_t ZIProtocolProxy::xymotor_calculated_pos_by_move_to_zero() { PROXY_IMPL_00(kxymotor_calculated_pos_by_move_to_zero); }
int32_t ZIProtocolProxy::xymotor_enable(int32_t para0) { PROXY_IMPL_10(kxymotor_enable, 30); }
int32_t ZIProtocolProxy::xymotor_move_by(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kxymotor_move_by, 30); }
int32_t ZIProtocolProxy::xymotor_move_to(int32_t para0, int32_t para1, int32_t para2) { PROXY_IMPL_30(kxymotor_move_to, 30); }
int32_t ZIProtocolProxy::xymotor_move_to_zero() { PROXY_IMPL_00(kxymotor_move_to_zero, 30); }
int32_t ZIProtocolProxy::xymotor_move_to_zero_and_calculated_shift() { PROXY_IMPL_00(kxymotor_move_to_zero_and_calculated_shift, 30); }
int32_t ZIProtocolProxy::xymotor_read_pos(int32_t *ack0, int32_t *ack1) { PROXY_IMPL_02(kxymotor_read_pos, 30); }
int32_t ZIProtocolProxy::xymotor_calculated_pos_by_move_to_zero() { PROXY_IMPL_00(kxymotor_calculated_pos_by_move_to_zero, 30); }

2
protocol_proxy.hpp

@ -57,6 +57,8 @@ class ZIProtocolProxy : public ZIMotor, //
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;
virtual int32_t module_read_raw(int32_t startadd, uint8_t *data, int32_t *len) override;
/*******************************************************************************
* ZIMotor *
*******************************************************************************/

2
zmodule_device_manager.cpp

@ -46,6 +46,8 @@ int32_t ZModuleDeviceManager::module_flush_cfg(uint16_t id) { PROXY_IMPL(ZIModul
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); }
int32_t ZModuleDeviceManager::module_read_raw(uint16_t id, int32_t startadd, uint8_t *data, int32_t *len) { PROXY_IMPL(ZIModule, module_read_raw, startadd, data, len); }
/*******************************************************************************
* ZIMotor *
*******************************************************************************/

2
zmodule_device_manager.hpp

@ -84,6 +84,8 @@ class ZModuleDeviceManager {
virtual int32_t module_set_state(uint16_t id, int32_t state_id, int32_t state_value);
virtual int32_t module_get_state(uint16_t id, int32_t state_id, int32_t *state_value);
virtual int32_t module_read_raw(uint16_t id, int32_t startadd, uint8_t *data, int32_t *len);
/*******************************************************************************
* ZIMotor *
*******************************************************************************/

12
zmodule_device_script_cmder_paser.cpp

@ -76,6 +76,8 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi
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);
virtual int32_t module_read_raw(uint16_t id, int32_t startadd, int32_t readlen, uint8_t *data, int32_t *len);
/*******************************************************************************
* ZIMotor *
*******************************************************************************/
@ -114,6 +116,16 @@ void ZModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, ZModuleDevi
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)");
cancmder->regCMD("module_read_raw", "(mid, readsize)", 2, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) {
if (atoi(paraV[2]) > sizeof(ack->rawdata)) {
ack->ecode = err::kbuffer_not_enough;
return;
}
ack->rawlen = sizeof(ack->rawdata);
ack->ecode = m_deviceManager->module_read_raw(atoi(paraV[0]), atoi(paraV[1]), ack->rawdata, &ack->rawlen);
ack->acktype = ICmdParserACK::kAckType_buf;
});
#if 0
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; }

Loading…
Cancel
Save