예제 #1
0
        private void MpuHandler(IArdNetSystem sender, RequestResponderStateObject e)
        {
            float accel = 1.0f;
            //gyro data
            //x, y, z
            var xMove = int.Parse(e.RequestArgs[0]);
            var yMove = int.Parse(e.RequestArgs[2]);

            //Console.WriteLine($"[{xMove}, {yMove}]");

            if (Math.Abs(xMove) < 1000)
            {
                xMove = 0;
            }
            else
            {
                xMove = (int)(xMove / 750.0);
            }
            if (Math.Abs(yMove) < 1000)
            {
                yMove = 0;
            }
            else
            {
                yMove = (int)(yMove / 750.0);
            }

            _mouseVector         = new Point(xMove, yMove);
            _mouseVectorLifetime = 0;
        }
        private void Server_TcpCommandResponseReceived(IArdNetSystem Sender, RequestResponseReceivedArgs e)
        {
            if (e is RequestResponseTimeoutArgs)
            {
                Console.WriteLine($"Command Timeout");
            }
            else if (e is RequestResponseCanceledArgs)
            {
                Console.WriteLine($"Command Canceled");
            }
            else if (e is RequestResponseDisconnectedArgs)
            {
                Console.WriteLine($"Command Disconnected");
            }
            else if (e is RequestResponseInvalidTargetArgs)
            {
                Console.WriteLine($"Command Not Delivered");
            }
            else
            {
                Console.WriteLine($"Command Response");
            }

            Console.WriteLine("    IP Address: " + e.Endpoint);
            Console.WriteLine("    Command ID: " + e.RequestID);
            Console.WriteLine("    Response: " + (e.Response ?? "[NULL]"));
            for (int i = 0; i < e.ResponseArgs.Length; ++i)
            {
                Console.WriteLine($"    Arg [{i}]: {e.ResponseArgs[i] ?? "[NULL]"}");
            }
        }
 private void Server_TcpClientDisconnected(IArdNetSystem Sender, ISystemEndpoint e)
 {
     _ = Interlocked.Decrement(ref _tcpConnectionCount);
     Console.WriteLine("Closed TCP Connection");
     Console.WriteLine("    Connection Time: " + ((dynamic)e.UserState).Time);
     Console.WriteLine("    IP Address: " + e.Endpoint);
 }
 private void Server_TcpMessageReceived(IArdNetSystem Sender, MessageReceivedArgs e)
 {
     Console.WriteLine("New TCP Message");
     Console.WriteLine("    Connection Time: " + ((dynamic)e.ConnectedSystem.UserState).Time);
     Console.WriteLine("    IP Address: " + e.Endpoint);
     Console.WriteLine("    Message: " + (e.Message ?? "[NULL]"));
 }
예제 #5
0
 private static void ArdManager_CommandReceived(IArdNetSystem Sender, IConnectedSystemEndpoint ConnectedSystem, TcpRequest Message)
 {
     Debug.WriteLine($"CMD: {Message.Request}");
     if (Message.Request == "VIBE")
     {
         _vibe.Blink(500);
     }
 }
예제 #6
0
        public MouseMover(IArdNetSystem ArdSys)
        {
            if (ArdSys is null)
            {
                throw new ArgumentNullException(nameof(ArdSys));
            }

            _ardSys = ArdSys;
            _ardSys.TcpCommandTable.Register("MPU", MpuHandler);
            _ardSys.TcpCommandTable.Register("LClick", LClickHandler);
            _mouseWorkerThread = new CancelThread <object>(MouseWorkerHandler);
        }
예제 #7
0
 private void LClickHandler(IArdNetSystem sender, RequestResponderStateObject request)
 {
     if (request.RequestArgs[0] == "down")
     {
         uint flags = 0x0002; //left mouse down
         _ = mouse_event(flags, 0, 0, 0, 0);
     }
     else if (request.RequestArgs[0] == "up")
     {
         uint flags = 0x0004; //left mouse up
         _ = mouse_event(flags, 0, 0, 0, 0);
     }
 }
        private void Server_TcpClientConnected(IArdNetSystem Sender, IConnectedSystemEndpoint e)
        {
            _ = Interlocked.Increment(ref _tcpConnectionCount);
            Console.WriteLine("New TCP Connection");
            Console.WriteLine("    IP Address: " + e.Endpoint);

            e.UserState = new
            {
                Name = "Hello",
                Time = DateTime.Now
            };

            if (!ArdServer.NetConfig.TCP.HeartbeatConfig.ExpectHeartbeatResponse)
            {
                ArdServer.SendTcpCommand(e.Endpoint, "set.htbt", new string[] { "respond", "false" });
            }
        }
        private void Server_TcpQueryReceived(IArdNetSystem Sender, RequestReceivedArgs e)
        {
            string answer  = null;
            string QryName = e.Request;

            string[] QryArgs = e.RequestArgs;

            switch (QryName)
            {
            case "name":
            {
                answer = System.Environment.MachineName;
                break;
            }

            case "has.feat":
            {
                if (QryArgs.Length == 0)
                {
                    break;
                }
                if (QryArgs[0] == "messaging")
                {
                    answer = "true";
                }
                if (QryArgs[0] == "topics")
                {
                    answer = "true";
                }
                break;
            }

            default:
            {
                Console.WriteLine(e.Request);
                ArdServer.SendTcpQueryResponse(e, e.Request, e.RequestArgs);
                return;
            }
            }


            ArdServer.SendTcpQueryResponse(e, answer);
        }
        private void Server_TcpCommandReceived(IArdNetSystem Sender, RequestReceivedArgs e)
        {
            string status  = null;
            string CmdName = e.Request;

            string[] CmdArgs = e.RequestArgs;

            switch (CmdName)
            {
            //set heartbeat
            case "set.htbt":
            {
                if (CmdArgs.Length != 2)
                {
                    break;
                }

                var attributeName  = CmdArgs[0];
                var attributeValue = CmdArgs[1];

                //set HeartBeat "respond to heartbeat"
                if (attributeName == "respond")
                {
                    if (bool.TryParse(attributeValue, out var boolVal))
                    {
                        e.ConnectedSystem.HeartbeatConfig.RespondToHeartbeats = boolVal;
                        status = "ok";
                    }
                }
                else if (attributeName == "interval")
                {
                    if (int.TryParse(attributeValue, out var intVal))
                    {
                        e.ConnectedSystem.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMilliseconds(intVal);
                        status = "ok";
                    }
                }
                break;
            }

            //set device parameters
            case "set.device":
            {
                if (CmdArgs.Length != 2)
                {
                    break;
                }

                var attributeName  = CmdArgs[0];
                var attributeValue = CmdArgs[1];

                //set power level
                if (attributeName == "power")
                {
                    if (attributeValue == "high")
                    {
                        //.1 sec htbt
                        e.ConnectedSystem.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMilliseconds(100);
                        status = "ok";
                    }
                    else if (attributeValue == "default")
                    {
                        //.25 sec htbt
                        e.ConnectedSystem.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMilliseconds(250);
                        status = "ok";
                    }
                    else if (attributeValue == "low")
                    {
                        //1 sec htbt
                        e.ConnectedSystem.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMilliseconds(1000);
                        status = "ok";
                    }
                    else if (attributeValue == "xlow")
                    {
                        //10 sec htbt
                        e.ConnectedSystem.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMilliseconds(10000);
                        status = "ok";
                    }
                    else if (attributeValue == "xxlow")
                    {
                        //1 min htbt
                        e.ConnectedSystem.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMinutes(1);
                        status = "ok";
                    }
                    else if (attributeValue == "xxxlow")
                    {
                        //no htbt
                        e.ConnectedSystem.HeartbeatConfig.ForceStrictHeartbeat = false;
                        status = "ok";
                    }
                }

                break;
            }

            //set text color
            case "set.color":
            {
                if (CmdArgs.Length == 0)
                {
                    break;
                }

                if (Enum.TryParse <ConsoleColor>(CmdArgs[0], out var color))
                {
                    Console.ForegroundColor = color;
                    status = "ok";
                }

                break;
            }
            }

            ArdServer.SendTcpCommandResponse(e, status);
        }
예제 #11
0
 /// <summary>
 /// Create instance.
 /// </summary>
 /// <param name="ArdSys"></param>
 public RangeFinderDelegate(IArdNetSystem ArdSys)
     : base(ArdSys, Constants.ChannelNames.TankOperations.RangeFinder)
 {
 }
 private void Server_ServerStarted(IArdNetSystem e)
 {
     Console.WriteLine("Server started @ " + e.NetConfig.LocalAddress);
 }
예제 #13
0
 private static void NanoClient_ServerDisconnected(IArdNetSystem Sender, ISystemEndpoint e)
 {
     _ = _serverMsgHandle.Reset();
     Debug.WriteLine("ArdNet Disconnected");
     _led.Off();
 }
예제 #14
0
 private static void ArdManager_TcpEndpointConnected(IArdNetSystem Sender, IConnectedSystemEndpoint e)
 {
     _ = _serverMsgHandle.Set();
     Debug.WriteLine("ArdNet Connected");
     _led.On();
 }
예제 #15
0
 private static void NanoClient_ServerDisconnected(IArdNetSystem Sender, ISystemEndpoint e)
 {
     _ = _serverMsgHandle.Reset();
 }
예제 #16
0
 /// <summary>
 /// Create instance.
 /// </summary>
 /// <param name="ArdSys"></param>
 public GunLoaderDelegate(IArdNetSystem ArdSys)
     : base(ArdSys, Constants.ChannelNames.TankOperations.GunLoader)
 {
 }
 /// <summary>
 /// Create instance.
 /// </summary>
 /// <param name="ArdSys"></param>
 public FireControlDelegate(IArdNetSystem ArdSys)
     : base(ArdSys, Constants.ChannelNames.TankOperations.FireControl)
 {
 }
예제 #18
0
 /// <summary>
 /// Create instance.
 /// </summary>
 /// <param name="ArdSys"></param>
 public NavigatorDelegate(IArdNetSystem ArdSys)
     : base(ArdSys, Constants.ChannelNames.TankOperations.Navigator)
 {
 }