/// <summary> /// Notifies subscribed explicit data receive listeners that a new XBee explicit data packet has been /// received in form of an <see cref="ExplicitXBeeMessage"/>. /// </summary> /// <param name="explicitXBeeMessage">The XBee message to be sent to subscribed XBee data listeners.</param> /// <seealso cref="ExplicitXBeeMessage"/> private void NotifyExplicitDataReceived(ExplicitXBeeMessage explicitXBeeMessage) { if (ExplicitDataReceived == null) { return; } if (explicitXBeeMessage.IsBroadcast) { logger.InfoFormat(connectionInterface.ToString() + "Broadcast explicit data received from {0} >> {1}.", explicitXBeeMessage.Device.XBee64BitAddr, HexUtils.PrettyHexString(explicitXBeeMessage.Data)); } else { logger.InfoFormat(connectionInterface.ToString() + "Explicit data received from {0} >> {1}.", explicitXBeeMessage.Device.XBee64BitAddr, HexUtils.PrettyHexString(explicitXBeeMessage.Data)); } try { lock (ExplicitDataReceived) { var handler = ExplicitDataReceived; if (handler != null) { var args = new ExplicitDataReceivedEventArgs(explicitXBeeMessage); handler.GetInvocationList().AsParallel().ForAll((action) => { action.DynamicInvoke(this, args); }); } } } catch (Exception e) { logger.Error(e.Message, e); } }
/// <summary> /// Programmatic trigger for ExplicitDataReceived event /// </summary> /// <param name="message">Message containing data received, the sender, the time, and the explicit data message parameters</param> protected virtual void OnExplicitDataReceived(ExplicitXBeeMessage message) { ExplicitDataReceived?.Invoke(this, message); }
/// <summary> /// Instantiates a <see cref="ExplicitDataReceivedEventArgs"/> object with the provided parameters. /// </summary> /// <param name="explicitXBeeMessage">The received Explicit XBee message.</param> public ExplicitDataReceivedEventArgs(ExplicitXBeeMessage explicitXBeeMessage) { ExplicitDataReceived = explicitXBeeMessage; }