Ejemplo n.º 1
0
        public MotorRoutes(Webserver.Webserver server, Controllers.NanoDrone drone) : base(server)
        {
            AddRoute(new Route("motors/:side/speed", (Request request) =>
            {
                string side = request.path[1];
                var motors  = drone.MotorController.motorsBySide;
                if (motors.TryGetValue(side, out Motor motor))
                {
                    return(motor.Speed.ToString());
                }
                return("Motor not found");
            }));

            AddRoute(new Route("motors/test", (Request request) =>
            {
                Task.Run(() =>
                {
                    foreach (KeyValuePair <string, Motor> kvPair in drone.MotorController.motorsBySide)
                    {
                        kvPair.Value.Test();
                    }
                });
                return("");
            }));

            AddRoute(new Route("motors/:side/test", (Request request) =>
            {
                string side = request.path[1];
                var motors  = drone.MotorController.motorsBySide;
                if (motors.TryGetValue(side, out Motor motor))
                {
                    Task.Run(() =>
                    {
                        motor.Test();
                    });
                    return("Test ran");
                }
                return("Motor not found");
            }));

            AddRoute(new Route("motors/:side/arm", (Request request) =>
            {
                string side = request.path[1];
                var motors  = drone.MotorController.motorsBySide;
                if (motors.TryGetValue(side, out Motor motor))
                {
                    Task.Run(() =>
                    {
                        motor.Arm();
                    });
                    return("Armed");
                }
                return("Motor not found");
            }));
        }
Ejemplo n.º 2
0
        public FlightRoutes(Webserver.Webserver server, Controllers.NanoDrone drone) : base(server)
        {
            AddRoute(new Route("flight/test/:speed", (Request request) =>
            {
                Task.Run(() =>
                {
                    string speed        = request.path[2];
                    double numericSpeed = double.Parse(speed);

                    for (double i = 0; i < numericSpeed / 100; i += 0.005)
                    {
                        drone.MotorController.Throttle(i);
                        Task.Delay(500).Wait();
                    }
                    for (double i = numericSpeed / 100; i >= 0; i -= 0.005)
                    {
                        drone.MotorController.Throttle(i);
                        Task.Delay(500).Wait();
                    }
                });

                return("");
            }));

            AddRoute(new Route("flight/shutdown", (Request request) =>
            {
                drone.Stop();

                return("");
            }));

            AddRoute(new Route("flight/start", (Request request) =>
            {
                drone.Start();

                return("");
            }));
        }
Ejemplo n.º 3
0
        public OrientationRoutes(Webserver.Webserver server, Controllers.NanoDrone drone) : base(server)
        {
            /* Routes for getting the current orientation */
            AddRoute(new Route("orientation/yaw", (Request request) => {
                return(drone.OrientationController.Yaw.ToString());
            }));
            AddRoute(new Route("orientation/pitch", (Request request) => {
                return(drone.OrientationController.Pitch.ToString());
            }));
            AddRoute(new Route("orientation/roll", (Request request) => {
                return(drone.OrientationController.Roll.ToString());
            }));

            AddRoute(new Route("orientation/all", (Request request) =>
            {
                return(string.Format("{0}|{1}|{2}", drone.OrientationController.Yaw, drone.OrientationController.Pitch, drone.OrientationController.Roll));
            }));

            /* routes for enabling, disabling and getting auto mode */

            AddRoute(new Route("orientation/auto/enable", (Request request) =>
            {
                bool result = drone.OrientationController.Enable();
                return(string.Format("Enabling orientation assist, result: {0}", result));
            }));

            AddRoute(new Route("orientation/auto/disable", (Request request) =>
            {
                bool result = drone.OrientationController.Disable();
                return(string.Format("Disabling orientation assit, result: {0}", result));
            }));

            AddRoute(new Route("orientation/auto", (Request request) =>
            {
                return(drone.OrientationController.Running.ToString());
            }));
        }