Skip to content

exit_flashing_mode

Runs at once FLASHING mode Takes control

End firmware flashing and take the CAN bus back. The robot resumes its CAN traffic and returns to IDLE mode, where the motors hold the arm again. It gives every drive the normal time to answer again, so their silence during the flash latches no lost-connection error; a drive that was flashed is configured again once it answers. When the flasher reports that it flashed a drive, the robot marks the arm not homed: call home() before moving it. With an error still latched, the robot goes to the error state instead.

Syntax

robot.exit_flashing_mode(wait=None)

Arguments

Name Type Default Description
wait bool | None None Wait until the robot reports IDLE mode, up to 10 s. None follows the client's sync setting.

Returns

Nothing.

Examples

robot.exit_flashing_mode(wait=True)
robot.enable(wait=True)
robot.home(wait=True)
Usage restrictions 3 codes

This command runs at once; it is not queued. The robot accepts it only when it is in FLASHING mode, from the client that holds control or when no client does.

It answers with one of these codes when it does not carry the command out:

  • [6010] Command not allowed now — the message names the mode or state it needs
  • [6101] Control held by another client — another client holds control; the message names it
  • [6025] RTI not running or not answering — rTI did not answer within 1 s: it is not running or not responding. The command may still have taken effect

In Python, a code above raises CommandRejected; its number is the code. The call raises:

  • CommandRejected: The robot refused it: it is not in flashing mode, or another client holds control. Or RTI refused it or did not answer within 1 s (Errors:).
  • RobotTimeout: The robot did not answer within 5 s, or, with wait, did not report IDLE mode within 10 s.
  • RobotConnectionError: The client is not connected.

If the connection drops while the call waits for the robot's answer, it raises CommandRejected with the code CONNECTION_LOST (DISCONNECTED after disconnect()); while it waits for the robot's status, RobotConnectionError.

Like every immediate command, it also answers BAD_ARGS when a raw client sends a value the robot cannot read at all, and INTERNAL when it fails inside the robot.

Protocol

A client that does not use robotclient sends this over the TCP command protocol (port 29000) for the example above:

{"id": "c1", "cmd": "exit_flashing_mode", "args": []}

See also