예제 #1
0
 /// <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]);
 }
예제 #2
0
        /// <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]);
        }