async Task IPortExpanderParent.OutputValueChanged(IPortExpanderPin portExpanderPin) { olat.Set(portExpanderPin.PinNumber, portExpanderPin.DigitalValue); if (AutoFlush) { await FlushAsync().ConfigureAwait(false); } }
/// <summary> /// Called when the output value of any pin has changed and should be written to the port /// </summary> /// <param name="portExpanderPin">The pin whose value changed</param> protected override Task outputValueChanged(IPortExpanderPin portExpanderPin) { if (AutoFlush) { return(FlushAsync()); } return(Task.CompletedTask); }
/// <summary> /// Called when any pin's mode changes /// </summary> /// <param name="portExpanderPin">The pin whose mode has changed</param> protected override Task outputModeChanged(IPortExpanderPin portExpanderPin) { // we set the I/O mode by writing a 1 or 0 to the output port, so just // flush out the data if (AutoFlush) { return(FlushAsync()); } return(Task.CompletedTask); }
async Task IPortExpanderParent.OutputModeChanged(IPortExpanderPin portExpanderPin) { var pinNumber = portExpanderPin.PinNumber; iodir.Set(pinNumber, portExpanderPin.Mode == PortExpanderPinMode.DigitalInput); await dev.WriteByteDataAsync((byte)Registers.IoDirection, iodir.GetBytes()[0]).ConfigureAwait(false); var pin = Pins[pinNumber]; gppu.Set(pinNumber, pin.PullUpEnabled); await dev.WriteByteDataAsync((byte)Registers.GpPullUp, gppu.GetBytes()[0]).ConfigureAwait(false); }
/// <summary> /// Called whenever the mode of a pin changes /// </summary> /// <param name="portExpanderPin">The pin who has a new mode</param> protected abstract Task outputModeChanged(IPortExpanderPin portExpanderPin);
Task IPortExpanderParent.OutputModeChanged(IPortExpanderPin portExpanderPin) { return(outputModeChanged(portExpanderPin)); }