Example #1
0
        private void Allocate(PinConfiguration configuration)
        {
            if (configuration.StatusChangedAction != null)
            {
                var handler = new EventHandler <PinStatusEventArgs>((sender, args) =>
                {
                    if (args.Configuration == configuration)
                    {
                        configuration.StatusChangedAction(args.Enabled);
                    }
                });
                pinEvents[configuration.Pin] = handler;
                PinStatusChanged            += handler;
            }

            Driver.Allocate(configuration.Pin, configuration.Direction);
            var outputConfiguration = configuration as OutputPinConfiguration;

            if (outputConfiguration != null)
            {
                this[configuration.Pin] = outputConfiguration.Enabled;
            }
            else
            {
                var inputConfiguration = (InputPinConfiguration)configuration;
                var pinValue           = Driver.Read(inputConfiguration.Pin);

                var pin = (ProcessorPins)((uint)1 << (int)inputConfiguration.Pin);
                inputPins    = inputPins | pin;
                pinRawValues = Driver.Read(inputPins);

                if (inputConfiguration.Resistor != PinResistor.None)
                {
                    Driver.SetPinResistor(inputConfiguration.Pin, inputConfiguration.Resistor);
                }

                var switchConfiguration = inputConfiguration as SwitchInputPinConfiguration;
                if (switchConfiguration != null)
                {
                    pinValues[inputConfiguration.Pin] = switchConfiguration.Enabled;
                    OnPinStatusChanged(new PinStatusEventArgs {
                        Configuration = inputConfiguration, Enabled = pinValues[inputConfiguration.Pin]
                    });
                }
                else
                {
                    pinValues[inputConfiguration.Pin] = inputConfiguration.GetEffective(pinValue);
                    OnPinStatusChanged(new PinStatusEventArgs {
                        Configuration = inputConfiguration, Enabled = pinValues[inputConfiguration.Pin]
                    });
                }
            }
        }
        private void Allocate(PinConfiguration configuration)
        {
            if (configuration.StatusChangedAction != null)
            {
                var handler = new EventHandler<PinStatusEventArgs>((sender, args) =>
                                                                       {
                                                                           if (args.Configuration == configuration)
                                                                               configuration.StatusChangedAction(args.Enabled);
                                                                       });
                pinEvents[configuration.Pin] = handler;
                PinStatusChanged += handler;
            }

            Driver.Allocate(configuration.Pin, configuration.Direction);
            var outputConfiguration = configuration as OutputPinConfiguration;
            if (outputConfiguration != null)
                this[configuration.Pin] = outputConfiguration.Enabled;
            else
            {
                var inputConfiguration = (InputPinConfiguration) configuration;
                var pinValue = Driver.Read(inputConfiguration.Pin);

                var pin = (ProcessorPins)((uint)1 << (int)inputConfiguration.Pin);
                inputPins = inputPins | pin;
                pinRawValues = Driver.Read(inputPins);

                if (inputConfiguration.Resistor != PinResistor.None)
                    Driver.SetPinResistor(inputConfiguration.Pin, inputConfiguration.Resistor);

                var switchConfiguration = inputConfiguration as SwitchInputPinConfiguration;
                if (switchConfiguration != null)
                {
                    pinValues[inputConfiguration.Pin] = switchConfiguration.Enabled;
                    OnPinStatusChanged(new PinStatusEventArgs { Configuration = inputConfiguration, Enabled = pinValues[inputConfiguration.Pin] });
                }
                else
                {
                    pinValues[inputConfiguration.Pin] = inputConfiguration.GetEffective(pinValue);
                    OnPinStatusChanged(new PinStatusEventArgs { Configuration = inputConfiguration, Enabled = pinValues[inputConfiguration.Pin] });
                }
            }
        }