in deepracer_offroad_ws/webserver_pkg/webserver_pkg/led_api.py [0:0]
def set_led_color():
"""API to call the service to set the tail light LED color
from the red, green, blue values from front end.
Returns:
dict: Execution status if the API call was successful and
error reason if call fails.
"""
webserver_node = webserver_publisher_node.get_webserver_node()
try:
data = request.json
if int(data["red"]) < 0 or int(data["red"]) > 255 \
or int(data["green"]) < 0 or int(data["green"]) > 255 \
or int(data["blue"]) < 0 or int(data["blue"]) > 255:
return jsonify(success=False, reason="Input is not valid")
# Convert to PWM
red = int(data["red"]) * LED_SCALING_FACTOR
green = int(data["green"]) * LED_SCALING_FACTOR
blue = int(data["blue"]) * LED_SCALING_FACTOR
webserver_node.get_logger().info("Set LED Color: "
f"Red: {red} "
f"Green: {green} "
f"Blue: {blue}")
set_led_color_req = SetLedCtrlSrv.Request()
set_led_color_req.red = red
set_led_color_req.green = green
set_led_color_req.blue = blue
set_led_color_res = call_service_sync(webserver_node.set_led_color_cli,
set_led_color_req)
if set_led_color_res and set_led_color_res.error == 0:
data = {"success": True}
else:
webserver_node.get_logger().error("Set led color service call failed")
data = {
"reason": "Error",
"success": False
}
return jsonify(data)
except Exception as ex:
webserver_node.get_logger().error(f"Unable to reach set led color server: {ex}")
return jsonify(success=False, reason="Error")