/// <summary>
        /// Initializes a new instance of the <see cref="GpioConnection"/> class.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="pins">The pins.</param>
        public GpioConnection(GpioConnectionSettings settings, IEnumerable <PinConfiguration> pins)
        {
            this.settings = settings ?? new GpioConnectionSettings();
            Pins          = new ConnectedPins(this);

            var pinList = pins.ToList();

            pinConfigurations = pinList.ToDictionary(p => p.Pin);

            namedPins = pinList.Where(p => !string.IsNullOrEmpty(p.Name)).ToDictionary(p => p.Name);

            timer = Timer.Create();

            timer.Interval = this.settings.PollInterval;
            timer.Action   = CheckInputPins;

            if (this.settings.Opened)
            {
                Open();
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="GpioConnection"/> class.
 /// </summary>
 /// <param name="settings">The settings.</param>
 /// <param name="pins">The pins.</param>
 public GpioConnection(GpioConnectionSettings settings, params PinConfiguration[] pins) : this(settings, (IEnumerable <PinConfiguration>)pins)
 {
 }