/// <summary>
        /// Register a new <see cref="OutputCallbackHandlerBase"/>.
        /// </summary>
        /// <param name="handler">The callback handler.</param>
        public static void RegisterCallback(OutputCallbackHandlerBase handler)
        {
            if (handler?.WorkingPort == null)
            {
                throw new NullReferenceException("Callback handler not configured correctly.");
            }

            if (WorkingHandlers.ContainsKey(handler.WorkingPort))
            {
                WorkingHandlers[handler.WorkingPort] = handler;
            }
            else
            {
                WorkingHandlers.Add(handler.WorkingPort, handler);
            }
        }
Пример #2
0
        /// <summary>
        /// Enables processing on a port.
        /// </summary>
        internal override void EnableControlPort()
        {
            if (!this.Enabled)
            {
                this.ManagedControlCallback = OutputCallbackProvider.FindCallback(this);

                this.NativeCallback = new MMALPort.MMAL_PORT_BH_CB_T(this.NativeControlPortCallback);

                IntPtr ptrCallback = Marshal.GetFunctionPointerForDelegate(this.NativeCallback);

                MMALLog.Logger.Debug("Enabling control port.");

                if (this.ManagedControlCallback == null)
                {
                    MMALLog.Logger.Debug("Callback null");

                    MMALCheck(MMALPort.mmal_port_enable(this.Ptr, IntPtr.Zero), "Unable to enable port.");
                }
                else
                {
                    MMALCheck(MMALPort.mmal_port_enable(this.Ptr, ptrCallback), "Unable to enable port.");
                }
            }
        }
 /// <summary>
 /// Registers a <see cref="OutputCallbackHandlerBase"/>.
 /// </summary>
 /// <param name="handler">The output handler.</param>
 public void RegisterOutputCallback(OutputCallbackHandlerBase handler) => OutputCallbackProvider.RegisterCallback(handler);