示例#1
0
        /// <summary>
        /// Adds an Application Framework message listener
        ///
        /// <param name="listener">a class that implements the <see cref="ApplicationFrameworkMessageListener"> interface</param>
        /// <returns>true if the listener was added</returns>
        /// </summary>
        public bool AddAFMessageListener(IApplicationFrameworkMessageListener listener)
        {
            lock (_messageListeners)
            {
                if (_messageListeners.Contains(listener))
                {
                    return(true);
                }
            }
            if (_messageListeners.Count == 0 && IsHardwareReady())
            {
                if (_commandInterface.AddAsynchronousCommandListener(_afMessageListenerFilter))
                {
                    Log.Verbose("Added AsynchrounsCommandListener {} to ZigBeeSerialInterface",
                                _afMessageListenerFilter.GetType().Name);
                }
                else
                {
                    Log.Verbose("Could not add AsynchrounsCommandListener {} to ZigBeeSerialInterface",
                                _afMessageListenerFilter.GetType().Name);
                }
            }
            lock (_messageListeners)
            {
                _messageListeners.Add(listener);
            }

            Log.Verbose("Added ApplicationFrameworkMessageListener {}:{}", listener, listener.GetType().Name);

            return(true);
        }
示例#2
0
        /// <summary>
        /// Removes an Application Framework message listener that was previously added with the addAFMessageListener method
        ///
        /// <param name="listener">a class that implements the <see cref="ApplicationFrameworkMessageListener"> interface</param>
        /// <returns>true if the listener was added</returns>
        /// </summary>
        public bool RemoveAFMessageListener(IApplicationFrameworkMessageListener listener)
        {
            bool result;

            lock (_messageListeners)
            {
                result = _messageListeners.Remove(listener);
            }

            if (_messageListeners.Count == 0 && IsHardwareReady())
            {
                if (_commandInterface.RemoveAsynchronousCommandListener(_afMessageListenerFilter))
                {
                    Log.Verbose("Removed AsynchrounsCommandListener {Type} to ZigBeeSerialInterface",
                                _afMessageListenerFilter.GetType().Name);
                }
                else
                {
                    Log.Warning("Could not remove AsynchrounsCommandListener {} to ZigBeeSerialInterface",
                                _afMessageListenerFilter.GetType().Name);
                }
            }
            if (result)
            {
                Log.Verbose("Removed ApplicationFrameworkMessageListener {}:{}", listener,
                            listener.GetType().Name);
                return(true);
            }
            else
            {
                Log.Warning("Could not remove ApplicationFrameworkMessageListener {}:{}", listener,
                            listener.GetType().Name);
                return(false);
            }
        }