Gurux.DLMS.GXDLMS.GetWrapperFrame C# (CSharp) Method

GetWrapperFrame() static private method

Split DLMS PDU to wrapper frames.
static private GetWrapperFrame ( GXDLMSSettings settings, GXByteBuffer data ) : byte[]
settings GXDLMSSettings DLMS settings.
data GXByteBuffer Wrapped data.
return byte[]
        internal static byte[] GetWrapperFrame(GXDLMSSettings settings, GXByteBuffer data)
        {
            GXByteBuffer bb = new GXByteBuffer();
            // Add version.
            bb.SetUInt16(1);
            if (settings.IsServer)
            {
                bb.SetUInt16((UInt16)settings.ServerAddress);
                bb.SetUInt16((UInt16)settings.ClientAddress);
            }
            else
            {
                bb.SetUInt16((UInt16)settings.ClientAddress);
                bb.SetUInt16((UInt16)settings.ServerAddress);
            }
            if (data == null)
            {
                // Data length.
                bb.SetUInt16(0);
            }
            else
            {
                // Data length.
                bb.SetUInt16((UInt16)data.Size);
                // Data
                bb.Set(data);
            }
            //Remove sent data in server side.
            if (settings.IsServer)
            {
                if (data.Size == data.Position)
                {
                    data.Clear();
                }
                else
                {
                    data.Move(data.Position, 0, data.Size - data.Position);
                    data.Position = 0;
                }
            }
            return bb.Array();
        }