in webserver_pkg/webserver_pkg/vehicle_control.py [0:0]
def api_set_drive_mode():
"""API to toggle the drive mode between Autonomous/Manual mode.
Returns:
dict: Execution status if the API call was successful and error
reason if failed.
"""
webserver_node = webserver_publisher_node.get_webserver_node()
drive_mode = request.json.get("drive_mode")
if drive_mode is None:
return jsonify({"success": False, "reason": "drive_mode must be set."})
webserver_node.get_logger().info(f"Changed the vehicle state to {drive_mode}")
drive_mode_state = 0 if drive_mode == "manual" else 1
try:
vehicle_state_req = ActiveStateSrv.Request()
vehicle_state_req.state = drive_mode_state
vehicle_state_res = call_service_sync(webserver_node.vehicle_state_cli,
vehicle_state_req)
if vehicle_state_res and (vehicle_state_res.error == 0):
return jsonify(success=True)
else:
webserver_node.get_logger().error("Vehicle state service call failed")
return jsonify(success=False, reason="Error")
except Exception as ex:
webserver_node.get_logger().error(f"Unable to reach vehicle state server: {ex}")
return jsonify({"success": False,
"reason": "Unable to reach vehicle state server."})