Source audit: I/O, state and error handling
This page records static findings from source_reference/dobot_core/dobot_ctrl.py and dobot_tcp.py. It does not establish hardware behavior.
I/O
get_digital_input(id_num)delegates toDobotTcp.get_digital_input(index), which calls DashboardDI(index)and converts a valid response tobool.get_digital_input()also returnsFalseon protocol errors, malformed replies, and exceptions. AFalseresult cannot distinguish a low input from a failed read. Do not treat it as a validated safety interlock.get_IO(id_num)is a DO readback, not a DI read. It inspects the feedbackdigital_outputsbit atid_num - 1; values below 1 raiseValueError.set_IO(id_num, value)sendsDO(int(id_num), int(bool(value)))and reports whether the first reply code is zero. It does not verify the physical output after the command.
Status and completion
servo_onconverts feedbackEnableStatusto a Boolean; it is not a motion-running indicator.get_motion_complete()returnsFalsewhenbusy_statusisNone, otherwise the negation of that status. It does not prove successful arrival or absence of alarms.wait_for_complete()issues Motion APISync()and checks its response and motion errors. Backendtimeoutandintervalare unused; publicDobotCtrl.wait_for_complete()takes no arguments.
Errors
reset_error()sends DashboardClearError(). It does not establish that the root cause has been removed or the system is safe to resume.get_error(),get_error_code(),get_error_count(), andget_error_info()delegate toDobotErrorManager. Their complete return/exception contracts require review of that class.
Not yet verified
Hardware DI/DO mapping, feedback freshness, disconnect behavior, alarm recovery, and Sphinx HTML output have not been verified.