Пример #1
0
        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);
        }
Пример #2
0
        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;
        }