import SlamController_pb2_grpc import slam_streamer as slam from threading import Thread class SlamServicer(SlamController_pb2_grpc.SlamControlServicer): def __init__(self, lidar_connection): print('Servicer initialised') self.slam = slam.SlamStreamer(lidar_connection=lidar_connection) def start_map_streaming(self, request, context): if not hasattr(self, 'slamThread'): # Don't bother creating and starting slam more than once. self.slam.port = request.port self.slam.map_pixels = request.map_size_pixels self.slam.map_meters = request.map_size_meters slamThread = Thread(target=self.slam.start) slamThread.start() def stop_streaming(self, request, context): if hasattr(self, 'slamThread'): self.slam.stop_scanning()