diff --git a/MotorControl/PythonRemoteController.py b/MotorControl/PythonRemoteController.py new file mode 100644 index 0000000..ab4e20d --- /dev/null +++ b/MotorControl/PythonRemoteController.py @@ -0,0 +1,50 @@ +print("Connecting to pi") + +import grpc +from concurrent import futures +from .MotorServer import MotorServicer +from . import motorService_pb2_grpc +import random +from threading import Timer + +throttle = 0 +timer = None + +class ThrottleIterator: + ''' + Class to get the current throttle for the car. + Will return a random throttle between + ''' + def __iter__(self): + return self + + def __next__(self): + if throttle > 1 or throttle < -1: + raise StopIteration + return throttle + + +def serve(): + server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) + motorService_pb2_grpc.add_CarControlServicer_to_server( + MotorServicer(), server) + server.add_insecure_port('[::]:50051') + server.start() + +def resetThrottle(): + global throttle + throttle = random.random() * 2 - 1 + global timer + if timer is not None: + timer.cancel() + timer = Timer(10, resetThrottle) + +serve() + +timer = Timer(10, resetThrottle) + +channel = grpc.insecure_channel('localhost:50051') +stub = motorService_pb2_grpc.CarControlStub(channel) + +stub.SetThrottle(ThrottleIterator()) +