public void WriteDigital(DigitalPin pin, bool state) {
if (!Enum.IsDefined(typeof(DigitalPin), pin)) throw new ArgumentException(nameof(pin));
var gpioPin = pin == DigitalPin.DIO16 ? this.dio16 : this.dio26;
if (gpioPin.GetDriveMode() != GpioPinDriveMode.Output)
gpioPin.SetDriveMode(GpioPinDriveMode.Output);
gpioPin.Write(state ? GpioPinValue.High : GpioPinValue.Low);
}