# Status, errors, and I/O ```python print(robot.get_current_position()) print(robot.get_current_angle()) print(robot.get_motion_complete()) print(robot.servo_on) print(robot.busy_status) print(robot.get_error_code()) ``` Status is obtained from TCP port 30004 feedback and Dashboard responses. The public interface includes `get_IO(id_num)`, `get_digital_input(id_num)`, and `set_IO(id_num, value)`. Verify wiring and I/O assignments before writing outputs. `reset_error()` maps to `ClearError()`, but it does not resolve the underlying cause of an error. See the [I/O, status and error source audit](../reference/io_state_error_audit.md) for implementation caveats. For return values and communication-failure ambiguity, see [return-value and failure audit](../reference/return_failure_contract_audit.md). See the [return/failure quick reference](../reference/return_failure_quick_reference.md) for per-API return semantics and communication-failure ambiguity. Detailed error retrieval paths: [multi-level call-chain audit](../reference/error_call_chain_resolution.md).