in webserver_pkg/webserver_pkg/device_info_api.py [0:0]
def get_sensor_status():
"""API to call the service to get the sensor data status for camera and
LiDAR sensors connected to the vehicle.
Returns:
dict: Execution status if the API call was successful, sensor status
information and error reason if call fails.
"""
webserver_node = webserver_publisher_node.get_webserver_node()
data = {
"camera_status": "checking",
"stereo_status": "checking",
"lidar_status": "checking",
"success": True
}
try:
sensor_status_req = SensorStatusCheckSrv.Request()
sensor_status_res = call_service_sync(webserver_node.sensor_status_cli, sensor_status_req)
if sensor_status_res and sensor_status_res.error == 0:
data["camera_status"] = \
"not_connected" if sensor_status_res.single_camera_status == 1 else "connected"
data["stereo_status"] = \
"not_connected" if sensor_status_res.stereo_camera_status == 1 else "connected"
data["lidar_status"] = \
"not_connected" if sensor_status_res.lidar_status == 1 else "connected"
else:
webserver_node.get_logger().error("Get sensor status service call failed")
data["camera_status"] = "error"
data["stereo_status"] = "error"
data["lidar_status"] = "error"
except Exception as ex:
webserver_node.get_logger().error("Unable to reach sensor status server: {ex}")
data["camera_status"] = "error"
data["stereo_status"] = "error"
data["lidar_status"] = "error"
finally:
webserver_node.get_logger().info(f"Camera status: {data['camera_status']}, "
f"Stereo status: {data['stereo_status']}, "
f"Lidar status: {data['lidar_status']}")
return jsonify(data)