# Control API coverage and operational cautions This table follows the comments and delegation structure of the supplied `DobotCtrl` source. The existence of a method on `DobotCtrl` does not guarantee that it is supported by the MG400. ## Public methods versus hardware support | API | Behavior identified in source | Limitations | |---|---|---| | `move()` | P+PTP → MovJ; P+LINE → MovL; J+PTP → JointMovJ | Semantics-preserving support for `path_blend`, `decel`, `pose`, CIRCLE and SPLINE is not established. Review `is_async` and `Sync()`. | | `drive()` | Axis/value input, `relative`, `speed`, `is_async` | No semantics-preserving `path_blend` implementation; MG400 has no J5/J6. | | `dev()` | Addition in x/y/z/rz | A four-axis MG400 cannot represent rx/ry. | | `rotate()` | Method is exposed | Conversion of plane/angle/center into an MG400 trajectory is not implemented. | | `set_path_blend()` | Method is exposed | No safe mapping to the DOBOT CP parameter is defined. | | `halt()` / `stop()` | Methods are exposed | The corresponding common-interface stop behavior cannot be guaranteed on MG400. | | `hand_stop()` | Method is exposed | Requires a defined end-effector model, I/O and communication scheme. | **Safety:** Do not rely on unsupported methods as emergency stopping mechanisms. Emergency stopping must be provided by the equipment safety system. ## Public method signatures extracted from source - `connect()` - `get_version(rel_toml_path)` - `delete()` - `disconnect()` - `halt()` - `task_stop()` - `hand_stop()` - `stop()` - `reset_error()` - `release_arm()` - `motion_complete()` - `get_motion_complete()` - `wait_for_complete()` - `change_work(work_no)` - `get_current_work_no()` - `get_work(work_no)` - `set_work(work_no, work_define, work_attribute)` - `change_tool(work_no)` - `get_current_tool()` - `get_current_tool_no()` - `get_tool_define(tool_no)` - `get_tool(tool_no)` - `set_tool_define(tool_no, tool_define)` - `set_tool(tool_no, tool_define)` - `take_arm()` - `give_arm()` - `coord_type()` - `coord_type(coord_type)` - `set_coord_type(coord_type)` - `get_coord_type()` - `path_blend()` - `path_blend(value)` - `set_path_blend(path_blend)` - `get_path_blend()` - `motion_mode()` - `motion_mode(value)` - `set_motion_mode(mode)` - `get_motion_mode()` - `task()` - `task_state()` - `get_task_status()` - `current_position()` - `current_angle()` - `speed()` - `jspeed()` - `extspeed()` - `accel()` - `decel()` - `extaccel()` - `extdecel()` - `lock()` - `busy_status()` - `is_running()` - `state()` - `servo_on()` - `direct_mode()` - `get_direct_mode()` - `get_current_position()` - `get_current_pose()` - `get_current_angle()` - `error_code()` - `error_description()` - `get_current_error_info()` - `get_error()` - `get_error_code()` - `get_error_count()` - `get_error_info(index)` - `get_error_description(error_code)` - `print_error_info(e)` - `print_error(e)` - `set_speed(speed)` - `get_speed()` - `set_jspeed(speed)` - `get_jspeed()` - `set_accel(accel)` - `get_accel()` - `set_decel(decel)` - `get_decel()` - `set_extspeed(speed)` - `get_extspeed()` - `set_extaccel(extaccel)` - `get_extaccel()` - `set_extdecel(extdecel)` - `get_extdecel()` - `turn_on_motor()` - `turn_off_motor()` - `p2j(p_type_pos)` - `j2p(j_type_pos)` - `dev(base, offset)` - `move(target, *, motion_mode, coord_type, path_blend, offset, pose, speed, accel, decel, is_async)` - `approach(lComp, vntPoseBase, vntPoseLen, bstrOpt)` - `drive(target, *, relative, path_blend, speed, is_async)` - `rotate(plane, angle, center, *, path_blend, speed, is_async)` - `get_IO(id_num)` - `get_digital_input(id_num)` - `set_IO(id_num, value)` - `autocal(origin)` - `get_motion_preparation()` - `run_script()` - `init_hand()` - `open_hand(speed)` - `hand_open(speed)` - `hand(pos, *, position, force, direction, relative, speed, is_async)` - `start_log()` - `stop_log()` - `clear_log()` - `start_servo_log()` - `stop_servo_log()` - `clear_servo_log()` - `get_log_count()` - `get_log_record(index)` Signatures are extracted mechanically from public `DobotCtrl` definitions. Consult method comments and `DobotTcp` for actual implementation status.