public IGpioControllerDriver InitDriver(Enums.NumberingScheme scheme) { if (!IsWiringPiInstalled()) { CastDriver <IGpioControllerDriver>(this)?.Logger.Warning("Failed to initialize Gpio Controller Driver. (Driver isn't allowed to execute.)"); return(this); } if (!PiGpioController.IsAllowedToExecute) { CastDriver <IGpioControllerDriver>(this)?.Logger.Warning("Failed to initialize Gpio Controller Driver. (Driver isn't allowed to execute.)"); IsDriverProperlyInitialized = false; return(this); } NumberingScheme = scheme; for (int i = 0; i < PiGpioController.AvailablePins.OutputPins.Length; i++) { SetMode(PiGpioController.AvailablePins.OutputPins[i], Enums.GpioPinMode.Output); Task.Delay(10).Wait(); } for (int i = 0; i < PiGpioController.AvailablePins.InputPins.Length; i++) { SetMode(PiGpioController.AvailablePins.InputPins[i], Enums.GpioPinMode.Input); Task.Delay(10).Wait(); } IsDriverProperlyInitialized = true; return(this); }
public void InitPinController <T>(T driver, Enums.NumberingScheme numberingScheme = Enums.NumberingScheme.Logical) where T : IGpioControllerDriver { if (!PiGpioController.IsAllowedToExecute || IsAlreadyInit) { return; } CurrentDriver = driver.InitDriver(numberingScheme); IsAlreadyInit = true; }