Example #1
0
        public static async Task Run(ILoggerFactory loggerFactory)
        {
            var appConfig = ApplicationConfiguration.Get();
            var log       = loggerFactory.CreateLogger <Worker>();

            if (appConfig is null)
            {
                log.LogWarning("No configuration detected; creating default config.json");
                ApplicationConfiguration.CreateNewConfiguration();
                log.LogInformation("Edit osc.configLocations and osc.devices in accordance with your setup, and then restart TouchDCS");
                Console.ReadKey(true);
                return;
            }

            var oscSenders    = SetUpOscSenders(appConfig, loggerFactory);
            var biosUdpClient = SetUpBiosUdpClient(appConfig, loggerFactory.CreateLogger <BiosUdpClient>());

            var aircraftBiosConfigs = await AircraftBiosConfiguration.AllConfigurations(appConfig.DcsBios.AliasFileName,
                                                                                        loggerFactory.CreateLogger <AircraftBiosConfiguration>(), appConfig.DcsBios.ConfigLocations.ToArray());

            var translator = new BiosOscTranslator(oscSenders.ToList(), biosUdpClient, aircraftBiosConfigs,
                                                   appConfig.CommonModules ?? new HashSet <string>(), loggerFactory.CreateLogger <BiosOscTranslator>());

            var biosListener = new BiosListener(biosUdpClient, translator, loggerFactory.CreateLogger <BiosListener>());

            foreach (var config in aircraftBiosConfigs)
            {
                biosListener.RegisterConfiguration(config);
            }
            biosListener.Start();

            var _ = SetUpOscReceivers(appConfig, translator, loggerFactory);

            log.LogInformation("Ready!");

            await Task.Delay(-1);
        }