示例#1
0
        private void OnDeviceInitialized()
        {
            try
            {
                DispatchService.Invoke(() =>
                {
                    StarterViewModels.Clear();

                    for (int i = 1; i <= 3; i++)
                    {
                        if ((_model as IRuntimeDevice).StartersOnDevice.Any((starter => starter.StarterNumber == i)))
                        {
                            StarterViewModels.Add(_starterViewModelFactory.CreateStarterViewModel(
                                                      (_model as IRuntimeDevice).StartersOnDevice.First(
                                                          (starter => starter.StarterNumber == i))));
                        }
                        else
                        {
                            StarterViewModels.Add(new StarterViewModel());
                        }
                    }
                    _outgoingLinesViewModel = _outgoingLinesViewModelFactory.CreateOutgoingLinesViewModel(Model);
                    RaisePropertyChanged(nameof(OutgoingLinesViewModel));
                    _customItemsViewModel =
                        _customItemsViewModelFactory.CreateCustomItemsViewModel((_model as IRuntimeDevice).DeviceCustomItems);
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
示例#2
0
        private async void OnDeviceValuesUpdated()

        {
            StarterViewModels.ForEach(model => model?.Update());
            DefectStateViewModel.Update();
            DeviceSignature = (_model as IRuntimeDevice).DeviceSignature;
            _outgoingLinesViewModel?.Update();
            _customItemsViewModel?.Update();
            if (StarterViewModels.Any((model => model.IsInRepairState == true)))
            {
                StateWidget = WidgetState.Repair;
            }
            //TODO: check widget going into repair mode
            else if (DefectStateViewModel.HasAnyDefect)
            {
                StateWidget = WidgetState.Crash;
            }
            else
            {
                StateWidget = WidgetState.Norm;
            }

            try
            {
                await _deviceCommandService.TryExecuteCommandOnDevice(this);
            }
            catch (Exception e)
            {
                //
            }
        }
示例#3
0
 private async void OnConnectionLost()
 {
     if (StateWidget == WidgetState.NoConnection)
     {
         return;
     }
     await Task.Run((() =>
     {
         StateWidget = WidgetState.NoConnection;
         StarterViewModels.ForEach((model => model?.SetLostConnection()));
         DefectStateViewModel.SetLostConnection();
         OutgoingLinesViewModel?.SetConnectionLost();
         CustomItemsViewModel?.SetLostConnection();
     }));
 }