예제 #1
0
        private Task <string> OnCommandReceivedAsync(RemoteParameter parameter)
        {
            switch (parameter.Command)
            {
            case RemoteCommands.CameraAdjustBrightness:

                break;

            case RemoteCommands.GoToCameraPage:
                SimpleIoc.Default.GetInstance <INavigationService>().NavigateTo(PageKeys.Main);
                return(null);
            }

            return(Task.FromResult(string.Empty));
        }
예제 #2
0
        public async Task <bool> SendAsync(RemoteParameter parameter)
        {
            if (_connectedRemoteSystem == null)
            {
                Debug.WriteLine("You are using CommandAsync() but you are not connected to a remote system");
                return(false);
            }

            try
            {
                //await _socketService.SendReceiveMessageAsync(_connectedRemoteSystem.EndPoint, JsonConvert.SerializeObject(parameter));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(false);
            }

            return(true);
        }
예제 #3
0
        private async void OnBroadcast(CancellationTokenSource cancellationToken)
        {
            try
            {
                var parameter = new RemoteParameter()
                {
                    Command = RemoteCommands.MiriotDiscovery
                };

                while (!cancellationToken.IsCancellationRequested)
                {
                    var udpClient   = new UdpClient();
                    var requestData = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(parameter));
                    var serverEp    = new IPEndPoint(IPAddress.Any, 0);

                    udpClient.EnableBroadcast = true;
                    udpClient.Send(requestData, requestData.Length, new IPEndPoint(IPAddress.Broadcast, _port));

                    var serverResponseData = udpClient.Receive(ref serverEp);
                    var serverResponse     = Encoding.ASCII.GetString(serverResponseData);

                    var system = JsonConvert.DeserializeObject <RomeRemoteSystem>(serverResponse);
                    system.EndPoint = serverEp;

                    Debug.WriteLine("Received {0} from {1}", system.DisplayName, system.EndPoint.Address + ":" + system.EndPoint.Port);

                    Discovered?.Invoke(system);

                    udpClient.Close();

                    await Task.Delay(1000);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.ToString());
            }
        }
예제 #4
0
        private async Task <string> OnCommandReceivedAsync(RemoteParameter parameter)
        {
            switch (parameter.Command)
            {
            case RemoteCommands.MiriotConfiguring:
                _dispatcherService.Invoke(() =>
                {
                    _vm.HasNoConfiguration = false;
                    _vm.IsConfiguring      = true;
                });
                return(string.Empty);

            case RemoteCommands.LoadUser:
                _dispatcherService.Invoke(async() =>
                {
                    await _vm.LoadUser(_vm.User);
                });
                return(string.Empty);

            case RemoteCommands.GetUser:
                _dispatcherService.Invoke(() =>
                {
                    _vm.HasNoConfiguration = false;
                    _vm.IsConfiguring      = true;
                });
                return(_vm.User.Id.ToString());

            case RemoteCommands.GraphService_Initialize:
                Messenger.Default.Send(new GraphServiceMessage(false));
                return(null);

            case RemoteCommands.GraphService_GetUser:
                Messenger.Default.Send(new GraphServiceMessage(true));

                var _graphService = SimpleIoc.Default.GetInstance <IGraphService>();

                await _graphService.LoginAsync();

                var graphUser = await _graphService.GetUserAsync();

                return(JsonConvert.SerializeObject(graphUser));

            case RemoteCommands.GoToCameraPage:
                SimpleIoc.Default.GetInstance <INavigationService>().NavigateTo(PageKeys.CameraSettings);
                return(null);

            case RemoteCommands.MiriotConnect:
                //_socketService.ListenTcp();
                return(null);

            case RemoteCommands.MiriotDiscovery:
            default:
                // Reply back
                var id  = _platformService.GetSystemIdentifier();
                var sys = new RomeRemoteSystem(null)
                {
                    Id          = id,
                    DisplayName = Environment.MachineName
                };
                return(JsonConvert.SerializeObject(sys));
            }
        }
예제 #5
0
 private T Deserialize <T>(RemoteParameter parameter)
 {
     return(JsonConvert.DeserializeObject <T>(parameter.SerializedData));
 }
예제 #6
0
 /// <summary>
 /// Constructs a command batch that is used to create a model.
 /// </summary>
 public ModelBatch()
 {
     // Initialize the object.
     this.modelIdParameter = null;
 }