/// <inheritdoc/> protected override void RemoveCallbackForPinValueChangedEvent(int pinNumber, PinChangeEventHandler callback) { _pinFallingHandlers[pinNumber] -= callback; _pinRisingHandlers[pinNumber] -= callback; if (_pinFallingHandlers == null) { _gpioTriggers[pinNumber] &= ~GpioTrigger.Falling; } if (_pinRisingHandlers == null) { _gpioTriggers[pinNumber] &= ~GpioTrigger.Rising; } FtFunction.FT4222_GPIO_SetInputTrigger(_ftHandle, (GpioPort)pinNumber, _gpioTriggers[pinNumber]); }
/// <inheritdoc/> protected override void AddCallbackForPinValueChangedEvent(int pinNumber, PinEventTypes eventTypes, PinChangeEventHandler callback) { if (eventTypes == PinEventTypes.None) { throw new ArgumentException($"{PinEventTypes.None} is an invalid value.", nameof(eventTypes)); } if (eventTypes.HasFlag(PinEventTypes.Falling)) { _gpioTriggers[pinNumber] |= GpioTrigger.Falling; _pinFallingHandlers[pinNumber] += callback; } if (eventTypes.HasFlag(PinEventTypes.Rising)) { _gpioTriggers[pinNumber] |= GpioTrigger.Rising; _pinRisingHandlers[pinNumber] += callback; } FtFunction.FT4222_GPIO_SetInputTrigger(_ftHandle, (GpioPort)pinNumber, _gpioTriggers[pinNumber]); }