Пример #1
0
        public DroneApi()
        {
            this.webserver = new HttpServer("http", "*", 6606);
            this.drone     = new Drone();

            drone.ThrottleChanged    += (value) => webserver.Broadcast(WebSocketMessageFactory.CreateThrottlesMessage(value));
            drone.PositionChanged    += (value) => webserver.Broadcast(WebSocketMessageFactory.CreatePositionMessage(value));
            drone.OrientationChanged += (value) => webserver.Broadcast(WebSocketMessageFactory.CreateOrientationMessage(value));

            this.webserver.SocketConnected += HandleSocketConnect;

            Task.Run(async() =>
            {
                try
                {
                    AddActions();

                    await drone.Init();
                    drone.StartOrientationThread();

                    webserver.AddAuthorizationMethod(new TimeBasedHmacAuthorizationHandler("mySecret", new TimeSpan(0, 0, 3), 2));
                    webserver.Start();
                }
                catch (Exception exception)
                {
                    Console.WriteLine($"{exception.Message}\n{exception.StackTrace}");
                }
            });
        }
Пример #2
0
 private async void HandleSocketConnect(WebSocket socket)
 {
     await Task.WhenAll(new Task[]
     {
         socket.SendAsync(WebSocketMessageFactory.CreateAuthorizedMessage(), System.Net.WebSockets.WebSocketMessageType.Binary, true, new CancellationToken()),
         socket.SendAsync(WebSocketMessageFactory.CreateFlagsMessage(
                              (drone.AreMotorsEnabled ? DroneFlags.MotorsEnabled : 0) |
                              (drone.IsGpsEnabled ? DroneFlags.GpsEnabled : 0) |
                              (drone.IsOrientationSensorEnabled ? DroneFlags.OrientationSensorEnabled : 0) |
                              (drone.IsOrientationAssistEnabled ? DroneFlags.OrientationAssistEnabled : 0)
                              ), System.Net.WebSockets.WebSocketMessageType.Binary, true, new CancellationToken())
     });
 }