/// <summary> /// Raises the <see cref="ReceivedHeaderFrame"/> event. /// </summary> /// <param name="frame"><see cref="IHeaderFrame"/> to send to <see cref="ReceivedHeaderFrame"/> event.</param> protected virtual void OnReceivedHeaderFrame(IHeaderFrame frame) { if ((object)ReceivedHeaderFrame != null) { ReceivedHeaderFrame(this, new EventArgs <IHeaderFrame>(frame)); } }
/// <summary> /// Raises the <see cref="FrameParserBase{TypeIndentifier}.ReceivedHeaderFrame"/> event. /// </summary> /// <param name="frame"><see cref="IHeaderFrame"/> to send to <see cref="FrameParserBase{TypeIndentifier}.ReceivedHeaderFrame"/> event.</param> protected override void OnReceivedHeaderFrame(IHeaderFrame frame) { // We override this method so we can cache header frame when it's received base.OnReceivedHeaderFrame(frame); //// Cache new header frame for parsing subsequent configuration frame... HeaderFrame headerFrame = frame as HeaderFrame; if (headerFrame != null) { m_headerFrame = headerFrame; } }
/// <summary> /// Casts the parsed <see cref="IChannelFrame"/> to its specific implementation (i.e., <see cref="IDataFrame"/>, <see cref="IConfigurationFrame"/>, <see cref="ICommandFrame"/> or <see cref="IHeaderFrame"/>). /// </summary> /// <param name="frame"><see cref="IChannelFrame"/> that was parsed by <see cref="FrameImageParserBase{TTypeIdentifier,TOutputType}"/> that implements protocol specific common frame header interface.</param> protected virtual void OnReceivedChannelFrame(IChannelFrame frame) { // Process frame types in order or likely occurrence if ((object)frame != null) { IDataFrame dataFrame = frame as IDataFrame; if ((object)dataFrame != null) { // Frame was a data frame OnReceivedDataFrame(dataFrame); } else { IConfigurationFrame configFrame = frame as IConfigurationFrame; if ((object)configFrame != null) { // Frame was a configuration frame OnReceivedConfigurationFrame(configFrame); } else { IHeaderFrame headerFrame = frame as IHeaderFrame; if ((object)headerFrame != null) { // Frame was a header frame OnReceivedHeaderFrame(headerFrame); } else { ICommandFrame commandFrame = frame as ICommandFrame; if ((object)commandFrame != null) { // Frame was a command frame OnReceivedCommandFrame(commandFrame); } else { // Frame type was undetermined OnReceivedUndeterminedFrame(frame); } } } } } }
/// <summary> /// Raises the <see cref="FrameParserBase{TypeIndentifier}.ReceivedHeaderFrame"/> event. /// </summary> /// <param name="frame"><see cref="IHeaderFrame"/> to send to <see cref="FrameParserBase{TypeIndentifier}.ReceivedHeaderFrame"/> event.</param> protected override void OnReceivedHeaderFrame(IHeaderFrame frame) { // IEEE 1344 header frames can span multiple frame images, so we don't allow base class to raise this event until all frames have been assembled... ISupportFrameImage <FrameType> frameImage = frame as ISupportFrameImage <FrameType>; if (frameImage != null) { CommonFrameHeader commonHeader = frameImage.CommonHeader as CommonFrameHeader; if (commonHeader != null && commonHeader.IsLastFrame) { base.OnReceivedHeaderFrame(frame); } } }
/// <summary> /// Creates a new <see cref="HeaderCell"/> from specified parameters. /// </summary> /// <param name="parent">A reference to the parent <see cref="ICommandFrame"/> for this <see cref="HeaderCell"/>.</param> /// <param name="character">ASCII character as a <see cref="byte"/> that represents this <see cref="HeaderCell"/>.</param> public HeaderCell(IHeaderFrame parent, byte character) : base(parent, 0) { m_character = character; }
/// <summary> /// Creates a new <see cref="HeaderCell"/> from specified parameters. /// </summary> /// <param name="parent">A reference to the parent <see cref="ICommandFrame"/> for this <see cref="HeaderCell"/>.</param> /// <param name="character">ASCII character as a <see cref="Byte"/> that represents this <see cref="HeaderCell"/>.</param> public HeaderCell(IHeaderFrame parent, byte character) : base(parent, 0) { m_character = character; }
/// <summary> /// Raises the <see cref="ReceivedHeaderFrame"/> event. /// </summary> /// <param name="frame"><see cref="IHeaderFrame"/> to send to <see cref="ReceivedHeaderFrame"/> event.</param> protected virtual void OnReceivedHeaderFrame(IHeaderFrame frame) { ReceivedHeaderFrame?.Invoke(this, new EventArgs <IHeaderFrame>(frame)); }