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; } }
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) { // } }
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(); })); }