public void Initialize() { if (IsInitialized) { throw new InvalidOperationException($"{nameof(WaterSystem)} is already initialized"); } Logger.LogTrace("Initializing.."); var waterControllerConfigs = new[] { new { Id = "B01", PinId = BcmPin.Gpio26, LitersPerSecond = 0.01 }, new { Id = "B02", PinId = BcmPin.Gpio20, LitersPerSecond = 0.01 }, new { Id = "B03", PinId = BcmPin.Gpio21, LitersPerSecond = 0.01 }, }; foreach (var config in waterControllerConfigs) { IGpioPin pin = GpioPinFactory.CreatePin(config.PinId); pin.Write(WaterController.PIN_OFF); IWaterController waterController = WaterControllerFactory.CreateWaterController(config.Id, pin, config.LitersPerSecond); IdToWaterController.Add(config.Id, waterController); } IsInitialized = true; Logger.LogInformation("Application initialized"); }
public bool TryGet(string id, out IWaterController waterController) => IdToWaterController.TryGetValue(id, out waterController);