diff --git a/components/zcancmder/zcan_protocol_parser.cpp b/components/zcancmder/zcan_protocol_parser.cpp index d135f8e..0b60472 100644 --- a/components/zcancmder/zcan_protocol_parser.cpp +++ b/components/zcancmder/zcan_protocol_parser.cpp @@ -33,6 +33,18 @@ void ZCanProtocolParser::initialize(IZCanReceiver* cancmder) { REGFN(step_motor_stop); REGFN(step_motor_read_io_state); + REGFN(mini_servo_enable); + REGFN(mini_servo_read_pos); + REGFN(mini_servo_active_cfg); + REGFN(mini_servo_stop); + REGFN(mini_servo_rotate); + REGFN(mini_servo_move_to); + REGFN(mini_servo_set_mid_point); + REGFN(mini_servo_read_io_state); + + REGFN(board_read_ext_io); + REGFN(board_write_ext_io); + #if 0 REGFN(xymotor_enable); REGFN(xymotor_move_by); @@ -143,7 +155,6 @@ int32_t ZCanProtocolParser::module_get_reg(cmdcontxt_t* cxt) { CHECK_AND_GET_MODULE(1); int32_t* ack = (int32_t*)cxt->ackbuf; cxt->acklen = 4; - ZLOGI(TAG, "module_get_reg %d", cxt->params[0]); return module->module_get_reg(cxt->params[0], &ack[0]); } @@ -274,6 +285,20 @@ int32_t ZCanProtocolParser::mini_servo_read_io_state(cmdcontxt_t* cxt) { cxt->acklen = 4; return module->mini_servo_read_io_state(cxt->params[0], ack); } +#undef MODULE_CLASS + +#define MODULE_CLASS ZIBoard +int32_t ZCanProtocolParser::board_read_ext_io(cmdcontxt_t* cxt) { + CHECK_AND_GET_MODULE(1); + int32_t* ack = (int32_t*)cxt->ackbuf; + cxt->acklen = 4; + return module->board_read_ext_io(cxt->params[0], ack); +} +int32_t ZCanProtocolParser::board_write_ext_io(cmdcontxt_t* cxt) { + CHECK_AND_GET_MODULE(2); + return module->board_write_ext_io(cxt->params[0], cxt->params[1]); +} +#undef MODULE_CLASS #if 0 diff --git a/components/zcancmder/zcan_protocol_parser.hpp b/components/zcancmder/zcan_protocol_parser.hpp index 9014f4e..cd8afac 100644 --- a/components/zcancmder/zcan_protocol_parser.hpp +++ b/components/zcancmder/zcan_protocol_parser.hpp @@ -77,6 +77,12 @@ class ZCanProtocolParser : public IZCanReceiverListener { static int32_t mini_servo_set_mid_point(cmdcontxt_t* cxt); static int32_t mini_servo_read_io_state(cmdcontxt_t* cxt); + // virtual int32_t board_read_ext_io(int32_t ioindex, int32_t *val) = 0; + // virtual int32_t board_write_ext_io(int32_t ioindex, int32_t val) = 0; + + static int32_t board_read_ext_io(cmdcontxt_t* cxt); + static int32_t board_write_ext_io(cmdcontxt_t* cxt); + #if 0 static int32_t xymotor_enable(cmdcontxt_t* cxt); static int32_t xymotor_move_by(cmdcontxt_t* cxt);