/// <summary> /// Pack message using temporaty packedBytes, returns new byte array of final result /// </summary> /// <param name="packedBytes"></param> /// <returns></returns> protected byte[] Pack(byte[] packedBytes) { int index = 0; // if there is ISOMessage Header try pack it if (m_isoHeaderPackager != null && m_isoHeader != null) { //start packing the message after the header position index = m_isoHeader.Length(); } // pack the isoMessage - is without message header m_isoMesssagePackager.Pack(m_isoMessageFields, packedBytes, ref index); // if there is ISOMessage Header try pack it if (m_isoHeaderPackager != null && m_isoHeader != null) { // set total message legnth in header m_isoHeader.SetMessageLength(index); // pack the isoHeader of the isoMessage int headerIndex = 0; m_isoHeaderPackager.Pack(m_isoHeader, packedBytes, ref headerIndex); } return(packedBytes.AsSpan(0, index).ToArray()); }
/// <summary> /// /// </summary> /// <param name="isoHeader"></param> /// <param name="packedBytes"></param> /// <param name="index"></param> public override void Pack(ISOHeader isoHeader, byte[] packedBytes, ref int index) { ISOHeaderVisa visaHeader = (ISOHeaderVisa)isoHeader; ISOUtils.Hex2Bytes(isoHeader.Length().ToString("X2"), packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h02_HeaderFlagAndFormat, packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h03_TextFormat, packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h04_TotalMessageLength, packedBytes, ref index); ISOUtils.Ascii2Bcd(visaHeader.h05_DestinationStationId, packedBytes, ref index, ISOFieldPadding.LEFT); ISOUtils.Ascii2Bcd(visaHeader.h06_SourceStationId, packedBytes, ref index, ISOFieldPadding.LEFT); ISOUtils.Hex2Bytes(visaHeader.h07_RoundTripControlInformation, packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h08_BaseIFlag, packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h09_MessageStatusFlag, packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h10_BatchNumber, packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h11_Reserved, packedBytes, ref index); ISOUtils.Hex2Bytes(visaHeader.h12_UserInformation, packedBytes, ref index); }