Example #1
0
        public CallbackInfo AddCallback(int gpio, Edge edge, GpioCallback callback)
        {
            List <CallbackInfo> callbacks;

            lock (this.m_callbacks)
            {
                if (this.m_callbacks.ContainsKey(gpio))
                {
                    callbacks = this.m_callbacks[gpio];
                }
                else
                {
                    short ret = PiGpioNativeMethods.SetAlertFunc((ushort)gpio, this.GpioAlertCallback);
                    if (ret < 0)
                    {
                        throw new PiGPIOException(ret);
                    }
                    callbacks = new List <CallbackInfo>();
                    this.m_callbacks.Add(gpio, callbacks);
                }
            }

            CallbackInfo cbi = new CallbackInfo((uint)gpio, 0, edge, callback);

            lock (callbacks)
            {
                callbacks.Add(cbi);
            }
            return(cbi);
        }
Example #2
0
        public void RemoveCallback(CallbackInfo callback)
        {
            List <CallbackInfo> callbacks;

            lock (this.m_callbacks)
            {
                if (!this.m_callbacks.ContainsKey(callback.Port))
                {
                    return;
                }
                callbacks = this.m_callbacks[callback.Port];
            }
            lock (callbacks)
            {
                callbacks.Remove(callback);
            }
        }
        public CallbackInfo AddCallback(int userGpio, Edge edge, GpioCallback callback)
        {
            CallbackInfo info;
            uint         bits = 1u << userGpio;

            lock (this.m_callbacks)
            {
                uint newMonitor = this.m_monitor | bits;
                if (this.IsConnected)
                {
                    this.NB(this.m_handle, newMonitor);
                }
                this.m_monitor = newMonitor;
                info           = new CallbackInfo((uint)userGpio, bits, edge, callback);
                this.m_callbacks.Add(info);
            }
            return(info);
        }
        public void RemoveCallback(CallbackInfo callback)
        {
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }
            lock (this.m_callbackLock)
            {
                if (!this.m_callbacks.Contains(callback))
                {
                    return;
                }

                uint newMonitor = 0;
                this.m_callbacks.ForEach(c => newMonitor |= c.Bits);
                if (this.IsConnected && newMonitor != this.m_monitor)
                {
                    this.NB(this.m_handle, newMonitor);
                }
                this.m_monitor = newMonitor;
            }
        }
 void IPiGPIO.RemoveCallback(CallbackInfo callback)
 {
     throw new NotImplementedException();
 }
Example #6
0
 void IPiGPIO.RemoveCallback(CallbackInfo callback)
 {
     throw new NotSupportedException();
 }