private static ServiceProvider BuildDependencies() { var commandSenderHost = new CommandSenderHostThreadSafe(); var targetAddressHost = new TargetAddressHostThreadSafe(1); var notifySendingEnabled = new NotifySendingEnabledThreadSafe(false); var paramLoggerAndRegPoint = new ParamLoggerRegistrationPointThreadSafe(); var serviceCollection = new ServiceCollection() /*.AddLogging(loggingBuilder => * { * loggingBuilder.SetMinimumLevel(LogLevel.Trace); * loggingBuilder.AddNLog(new NLogProviderOptions * { * CaptureMessageTemplates = true, * CaptureMessageProperties = true * }); * })*/ .AddSingleton <IThreadNotifier, AvaloniaThreadNotifier>() .AddSingleton <IParamLoggerRegistrationPoint>(sp => paramLoggerAndRegPoint) .AddSingleton <IParameterLogger>(sp => paramLoggerAndRegPoint) // Adding services. .AddSingleton <IIOListener>(sp => commandSenderHost) .AddSingleton <ICommandSenderHostSettable>(sp => commandSenderHost) .AddSingleton <ICommandSenderHost>(sp => commandSenderHost) .AddSingleton <ITargetAddressHostSettable>(sp => targetAddressHost) .AddSingleton <ITargetAddressHost>(sp => targetAddressHost) .AddSingleton <INotifySendingEnabledRaisable>(sp => notifySendingEnabled) .AddSingleton <INotifySendingEnabled>(sp => notifySendingEnabled) .AddSingleton <IAinsCounterRaisable>(sp => new AinsCounterThreadSafe(3)) // TODO: need to change interface and to make proper implementation. .AddSingleton <IParameterSetter, ParameterSetterNothing>() // Adding PSN parameters classes. .AddSingleton(sp => new PsnProtocolConfigurationLoaderFromXml("psn.Буровая.АИН1.xml").LoadConfiguration()) .AddSingleton <IPsnParamsList, PsnParamsListSimple>() .AddSingleton <IParamListener, CommandPartAndParamListenerSimple>() .AddSingleton <IParametersPresenterXmlBuilder>(sp => new ParametersPresenterXmlBuilder("params.xml")) .AddSingleton <IParameterVMsHolder, ParameterVMsHolder>() // Adding models. .AddSingleton <IDeviceConnectionModel, DeviceConnectionModel>() // Adding ViewModels. .AddSingleton <IDeviceConnectionViewModel, DeviceConnectionViewModel>() .AddSingleton <IAinsCountSelectionViewModel, AinsCountSelectionViewModel>(); //.AddSingleton<ITelemetry100ViewModel, Telemetry100ViewModel>(); return(serviceCollection.BuildServiceProvider()); }
public SharedAppAbilities(string psnProtocolFileName) { var isFullVersion = File.Exists("FullVersion.txt"); var isHalfOrFullVersion = isFullVersion; if (!isHalfOrFullVersion) { isHalfOrFullVersion = File.Exists("HalfVersion.txt"); } Version = isFullVersion ? AppVersion.Full : isHalfOrFullVersion ? AppVersion.Half : AppVersion.Base; IsHourCountersVisible = File.Exists("HourCounters.txt"); PsnProtocolConfiguration = new PsnProtocolConfigurationLoaderFromXml(Path.Combine(Environment.CurrentDirectory, psnProtocolFileName)).LoadConfiguration(); var allPsnParams = new Dictionary <string, Tuple <IPsnProtocolCommandPartConfiguration, IPsnProtocolParameterConfigurationVariable> >(); foreach (var psnCommandPart in PsnProtocolConfiguration.CommandParts) { foreach (var param in psnCommandPart.VarParams) { allPsnParams.Add(param.Id.IdentyString, new Tuple <IPsnProtocolCommandPartConfiguration, IPsnProtocolParameterConfigurationVariable>(psnCommandPart, param)); } } PsnProtocolConfigurationParams = allPsnParams; RtuParamReceiver = new ModbusRtuParamReceiver(); CmdNotifierStd = new StdNotifier(); CmdNotifierStd.AddListener(RtuParamReceiver); _channels = new Dictionary <string, SerialChannelWithTimeoutMonitorAndSendReplyAbility>(); var paramLoggerAndRegPoint = new ParamLoggerRegistrationPointThreadSafe(); ParameterLogger = paramLoggerAndRegPoint; ParamLoggerRegistrationPoint = paramLoggerAndRegPoint; var paramListener = new CommandPartAndParamListenerSimple(CmdNotifierStd); foreach (var cmdPart in PsnProtocolConfiguration.CommandParts) { paramListener.AddPsnCommandPartConfigurationToListen(cmdPart); } ParamListener = paramListener; CommandPartListener = paramListener; }
private void App_OnStartup(object sender, StartupEventArgs e) { var colorsForGraphics = new List <Color> { Colors.LawnGreen, Colors.Red, Colors.Cyan, Colors.Yellow, Colors.Coral, Colors.LightGreen, Colors.HotPink, Colors.DeepSkyBlue, Colors.Gold, Colors.Orange, Colors.Violet, Colors.White, Colors.Fuchsia, Colors.LightSkyBlue, Colors.LightGray, Colors.Khaki, Colors.SpringGreen, Colors.Tomato, Colors.LightCyan, Colors.Goldenrod, Colors.SlateBlue, Colors.Cornsilk, Colors.MediumPurple, Colors.RoyalBlue, Colors.MediumVioletRed, Colors.MediumTurquoise }; _debugLogger = new RelayMultiLoggerWithStackTraceSimple( new RelayLoggerWithStackTrace( new RelayActionLogger(s => { }), new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")), new RelayLoggerWithStackTrace( new RelayLogger( new ColoredConsoleLogger(ConsoleColor.Red, ConsoleColor.Black), new ChainedFormatter(new List <ITextFormatter> { new ThreadFormatter(" > ", true, false, false), new DateTimeFormatter(" > ") })), new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")), new RelayLoggerWithStackTrace( new RelayLogger( new ColoredConsoleLogger(ConsoleColor.Yellow, ConsoleColor.Black), new ChainedFormatter(new List <ITextFormatter> { new ThreadFormatter(" > ", true, false, false), new DateTimeFormatter(" > ") })), new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")), new RelayLoggerWithStackTrace( new RelayLogger( new ColoredConsoleLogger(ConsoleColor.DarkCyan, ConsoleColor.Black), new ChainedFormatter(new List <ITextFormatter> { new ThreadFormatter(" > ", true, false, false), new DateTimeFormatter(" > ") })), new StackTraceFormatterNothing()), new RelayLoggerWithStackTrace( new RelayLogger( new ColoredConsoleLogger(ConsoleColor.Cyan, ConsoleColor.Black), new ChainedFormatter(new List <ITextFormatter> { new ThreadFormatter(" > ", true, false, false), new DateTimeFormatter(" > ") })), new StackTraceFormatterNothing()), new RelayLoggerWithStackTrace( new RelayLogger( new ColoredConsoleLogger(ConsoleColor.Green, ConsoleColor.Black), new ChainedFormatter(new List <ITextFormatter> { new ThreadFormatter(" > ", false, true, false), new DateTimeFormatter(" > ") })), new StackTraceFormatterWithNullSuport(" > ", string.Empty)), new RelayLoggerWithStackTrace( new RelayLogger( new ColoredConsoleLogger(ConsoleColor.White, ConsoleColor.Black), new ChainedFormatter(new List <ITextFormatter> { new ThreadFormatter(" > ", true, false, false), new DateTimeFormatter(" > ") })), new StackTraceFormatterNothing())); var loggerAndRegPoint = new LoggerRegistrationPointThreadSafe(); _commonLogger = loggerAndRegPoint; _loggerRegPoint = loggerAndRegPoint; var paramLoggerAndRegPoint = new ParamLoggerRegistrationPointThreadSafe(); _commonParamLogger = paramLoggerAndRegPoint; _paramLoggerRegPoint = paramLoggerAndRegPoint; var cmdSenderHost = new CommandSenderHostThreadSafe(); _cmdSenderHostSettable = cmdSenderHost; _cmdSenderHost = cmdSenderHost; var targetAddressHost = new TargetAddressHostThreadSafe(1); _targetAddressHostSettable = targetAddressHost; _targetAddressHost = targetAddressHost; var notifySendingEnabled = new NotifySendingEnabledThreadSafe(false); _notifySendingEnabledRaisable = notifySendingEnabled; _notifySendingEnabled = notifySendingEnabled; var ainsCounter = new AinsCounterThreadSafe(1); _ainsCounterRaisable = ainsCounter; _ainsCounter = ainsCounter; _cycleThreadHolder = new CycleThreadHolderThreadSafe(); var ainSettingsStorage = new AinSettingsStorageThreadSafe(_ainsCounter, _notifySendingEnabled); _ainSettingsStorage = ainSettingsStorage; _ainSettingsStorageSettable = ainSettingsStorage; _ainSettingsStorageUpdatedNotify = ainSettingsStorage; var ainSettingsReader = new AinSettingsReader(_cmdSenderHost, _targetAddressHost, _commonLogger, _ainSettingsStorageSettable, _debugLogger); _ainSettingsReader = ainSettingsReader; _ainSettingsReadNotify = ainSettingsReader; _ainSettingsReadNotifyRaisable = ainSettingsReader; _ainSettingsWriter = new AinSettingsWriter(_cmdSenderHost, _targetAddressHost, _ainsCounterRaisable, _ainSettingsReader); _autoTimeSetter = new AutoTimeSetter(_cmdSenderHost, _notifySendingEnabled, _targetAddressHost, _commonLogger); var engineSettingsStorage = new EngineSettingsStorageThreadSafe(); _engineSettingsStorage = engineSettingsStorage; _engineSettingsStorageSettable = engineSettingsStorage; _engineSettingsStorageUpdatedNotify = engineSettingsStorage; var engineSettingsReader = new EngineSettingsReader(_cmdSenderHost, _targetAddressHost, _commonLogger, _engineSettingsStorageSettable, _debugLogger); _engineSettingsReader = engineSettingsReader; _engineSettingsReadNotify = engineSettingsReader; _engineSettingsReadNotifyRaisable = engineSettingsReader; _engineSettingsWriter = new EngineSettingsWriter(_cmdSenderHost, _targetAddressHost, _engineSettingsReader); _autoSettingsReader = new AutoSettingsReader( _notifySendingEnabled, _ainsCounterRaisable, _ainSettingsReader, _ainSettingsStorageSettable, _commonLogger, _engineSettingsReader, _engineSettingsStorageSettable); _bsEthernetLogsReadCycleModel = new ReadCycleModel(_cmdSenderHost, targetAddressHost, notifySendingEnabled); var uiRoot = new SimpleUiRoot(new WpfUiNotifierAsync(Dispatcher.CurrentDispatcher)); var ainCommandAndCommonTelemetryVm = new AinCommandAndCommonTelemetryViewModel( new AinCommandAndMinimalCommonTelemetryViewModel( _cmdSenderHost, _targetAddressHost, uiRoot, _commonLogger, _notifySendingEnabled, 0, _ainSettingsStorage, _ainSettingsStorageUpdatedNotify), new TelemetryCommonViewModel(), _cmdSenderHost, _targetAddressHost, uiRoot, _notifySendingEnabled); // TODO: Register something but not VM? _cycleThreadHolder.RegisterAsCyclePart(ainCommandAndCommonTelemetryVm); new CommandWindow { DataContext = new CommandWindowViewModel(ainCommandAndCommonTelemetryVm) }.Show(); new BsEthernetLogsWindow { DataContext = new WindowViewModel(uiRoot, _bsEthernetLogsReadCycleModel) }.Show(); var mainViewModel = new MainViewModel( new SimpleUiRoot(new WpfUiNotifierAsync(Dispatcher.CurrentDispatcher)), new WpfWindowSystem(), colorsForGraphics, _cmdSenderHostSettable, _targetAddressHost, _debugLogger, _loggerRegPoint, _notifySendingEnabledRaisable, _commonParamLogger, _ainsCounterRaisable, _cycleThreadHolder, _ainSettingsReader, _ainSettingsReadNotify, _ainSettingsReadNotifyRaisable, _ainSettingsWriter, _ainSettingsStorage, _ainSettingsStorageSettable, _ainSettingsStorageUpdatedNotify, _bsEthernetLogsReadCycleModel, _engineSettingsReader, _engineSettingsWriter, _engineSettingsReadNotify, _engineSettingsReadNotifyRaisable, _engineSettingsStorage, _engineSettingsStorageSettable, _engineSettingsStorageUpdatedNotify); new MainWindow { DataContext = mainViewModel }.Show(); }