Пример #1
0
        public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, DateTime value)
        {
            TimeSpan diff    = value.Subtract(_Epoch);
            long     seconds = (long)diff.TotalSeconds;

            Write(typeIdentifier, identifier, seconds);
        }
Пример #2
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, bool value)
 {
     WriteType(typeIdentifier, identifier, 1);
     if (value)
         _Stream.WriteByte((byte)1);
     else
         _Stream.WriteByte((byte)0);
 }
Пример #3
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, string value)
 {
     byte[] buffer = null;
     if (!string.IsNullOrEmpty(value))
     {
         buffer = Encoding.UTF8.GetBytes(value);
     }
     Write(typeIdentifier, identifier, buffer);
 }
Пример #4
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, double value)
 {
     //need IEEE-754 format which C# uses
     byte[] buffer = BitConverter.GetBytes(value);
     if (BitConverter.IsLittleEndian)
     {
         buffer.Reverse();
     }
     Write(typeIdentifier, identifier, buffer);
 }
Пример #5
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, byte[] value)
 {
     if (value == null)
     {
         WriteType(typeIdentifier, identifier, 0);
     }
     else
     {
         WriteType(typeIdentifier, identifier, value.Length);
         _Stream.Write(value, 0, value.Length);
     }
 }
Пример #6
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, bool value)
 {
     WriteType(typeIdentifier, identifier, 1);
     if (value)
     {
         _Stream.WriteByte((byte)1);
     }
     else
     {
         _Stream.WriteByte((byte)0);
     }
 }
Пример #7
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, short value)
 {
     if ((value > 127) || (value < -128)) //16Bit length
     {
         WriteType(typeIdentifier, identifier, 2);
         NetworkByteOrderConverter.WriteInt16(_Stream, (short)value);
     }
     else
     {
         WriteType(typeIdentifier, identifier, 1);
         _Stream.WriteByte((byte)value);
     }
 }
Пример #8
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, short value)
 {
     if ((value > 127) || (value < -128))             //16Bit length
     {
         WriteType(typeIdentifier, identifier, 2);
         NetworkByteOrderConverter.WriteInt16(_Stream, (short)value);
     }
     else
     {
         WriteType(typeIdentifier, identifier, 1);
         _Stream.WriteByte((byte)value);
     }
 }
Пример #9
0
        public void Serialise(TlvWriter writer, bool resourceInstance)
        {
            ushort identifier;

            if (ushort.TryParse(Name, out identifier))
            {
                TTlvTypeIdentifier typeIdentifier = TTlvTypeIdentifier.ResourceWithValue;
                if (resourceInstance)
                {
                    typeIdentifier = TTlvTypeIdentifier.ResourceInstance;
                }
                writer.Write(typeIdentifier, identifier, Value);
            }
        }
Пример #10
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, long value)
 {
     if ((value > int.MaxValue) || (value < int.MinValue))
     {
         WriteType(typeIdentifier, identifier, 8);
         NetworkByteOrderConverter.WriteInt64(_Stream, value);
     }
     else if ((value > short.MaxValue) || (value < short.MinValue))             //32Bit length
     {
         WriteType(typeIdentifier, identifier, 4);
         NetworkByteOrderConverter.WriteInt32(_Stream, (int)value);
     }
     else if ((value > 127) || (value < -128))             //16Bit length
     {
         WriteType(typeIdentifier, identifier, 2);
         NetworkByteOrderConverter.WriteInt16(_Stream, (short)value);
     }
     else
     {
         WriteType(typeIdentifier, identifier, 1);
         _Stream.WriteByte((byte)value);
     }
 }
Пример #11
0
        private void WriteValue(TlvWriter writer, TTlvTypeIdentifier typeIdentifier, TPropertyDataType dataType, string instanceID, string value)
        {
            ushort identifier;

            if (ushort.TryParse(instanceID, out identifier))
            {
                switch (dataType)
                {
                case TPropertyDataType.NotSet:
                    break;

                case TPropertyDataType.String:
                    writer.Write(typeIdentifier, identifier, value);
                    break;

                case TPropertyDataType.Boolean:
                    bool boolValue;
                    if (bool.TryParse(value, out boolValue))
                    {
                        writer.Write(typeIdentifier, identifier, boolValue);
                    }
                    break;

                case TPropertyDataType.Integer:
                    long longValue;
                    if (long.TryParse(value, out longValue))
                    {
                        writer.Write(typeIdentifier, identifier, longValue);
                    }
                    break;

                case TPropertyDataType.Float:
                    double doubleValue;
                    if (double.TryParse(value, out doubleValue))
                    {
                        writer.Write(typeIdentifier, identifier, doubleValue);
                    }
                    break;

                case TPropertyDataType.DateTime:
                    try
                    {
                        DateTime dateTimeValue = System.Xml.XmlConvert.ToDateTime(value, System.Xml.XmlDateTimeSerializationMode.Utc);
                        writer.Write(typeIdentifier, identifier, dateTimeValue);
                    }
                    catch
                    {
                    }
                    break;

                case TPropertyDataType.Opaque:
                    byte[] buffer = Convert.FromBase64String(value);
                    writer.Write(typeIdentifier, identifier, buffer);
                    break;

                case TPropertyDataType.Object:
                    break;

                default:
                    break;
                }
            }
        }
Пример #12
0
        private void WriteValue(TlvWriter writer, TTlvTypeIdentifier typeIdentifier, TPropertyDataType dataType, string instanceID, string value)
        {
            ushort identifier;
            if (ushort.TryParse(instanceID, out identifier))
            {

                switch (dataType)
                {
                    case TPropertyDataType.NotSet:
                        break;
                    case TPropertyDataType.String:
                        writer.Write(typeIdentifier, identifier, value);
                        break;
                    case TPropertyDataType.Boolean:
                        bool boolValue;
                        if (bool.TryParse(value, out boolValue))
                            writer.Write(typeIdentifier, identifier, boolValue);
                        break;
                    case TPropertyDataType.Integer:
                        long longValue;
                        if (long.TryParse(value, out longValue))
                            writer.Write(typeIdentifier, identifier, longValue);
                        break;
                    case TPropertyDataType.Float:
                        double doubleValue;
                        if (double.TryParse(value, out doubleValue))
                            writer.Write(typeIdentifier, identifier, doubleValue);
                        break;
                    case TPropertyDataType.DateTime:
                        try
                        {
                            DateTime dateTimeValue = System.Xml.XmlConvert.ToDateTime(value, System.Xml.XmlDateTimeSerializationMode.Utc);
                            writer.Write(typeIdentifier, identifier, dateTimeValue);
                        }
                        catch
                        {

                        }
                        break;
                    case TPropertyDataType.Opaque:
                        byte[] buffer = Convert.FromBase64String(value);
                        writer.Write(typeIdentifier, identifier, buffer);
                        break;
                    case TPropertyDataType.Object:
                        break;
                    default:
                        break;
                }
            }
        }
Пример #13
0
        public void WriteType(TTlvTypeIdentifier typeIdentifier, ushort identifier, int length)
        {
            int type = 0;

            byte[] tlvHeader    = null;
            int    headerLength = 2;

            switch (typeIdentifier)
            {
            case TTlvTypeIdentifier.NotSet:
                break;

            case TTlvTypeIdentifier.ObjectInstance:
                break;

            case TTlvTypeIdentifier.ResourceWithValue:
                type = type | TlvConstant.RESOURCE_WITH_VALUE;
                break;

            case TTlvTypeIdentifier.MultipleResources:
                type = type | TlvConstant.MULTIPLE_RESOURCES;
                break;

            case TTlvTypeIdentifier.ResourceInstance:
                type = type | TlvConstant.RESOURCE_INSTANCE;
                break;

            default:
                break;
            }
            if (identifier > byte.MaxValue)
            {
                type          = type | TlvConstant.IDENTIFIER_16BITS;
                headerLength += 1;
            }
            if (length > ushort.MaxValue)
            {
                type          = type | TlvConstant.LENGTH_24BIT;
                headerLength += 3;
            }
            else if (length > byte.MaxValue)
            {
                type          = type | TlvConstant.LENGTH_16BIT;
                headerLength += 2;
            }
            else if (length > 7)
            {
                type          = type | TlvConstant.LENGTH_8BIT;
                headerLength += 1;
            }
            else
            {
                type = type | (int)length;
            }

            tlvHeader    = new byte[headerLength];
            tlvHeader[0] = (byte)type;
            int lengthOffset = 2;

            if (identifier > byte.MaxValue)
            {
                NetworkByteOrderConverter.WriteUInt16(tlvHeader, 1, identifier);
                lengthOffset = 3;
            }
            else
            {
                tlvHeader[1] = (byte)identifier;
            }
            if (length > ushort.MaxValue)             //24Bit length
            {
                NetworkByteOrderConverter.WriteUInt24(tlvHeader, lengthOffset, (uint)length);
            }
            else if (length > byte.MaxValue)             //16Bit length
            {
                NetworkByteOrderConverter.WriteUInt16(tlvHeader, lengthOffset, (ushort)length);
            }
            else if (length > 7)             //8Bit length
            {
                tlvHeader[lengthOffset] = (byte)length;
            }
            _Stream.Write(tlvHeader, 0, headerLength);
        }
Пример #14
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, double value)
 {
     //need IEEE-754 format which C# uses
     byte[] buffer = BitConverter.GetBytes(value);
     if (BitConverter.IsLittleEndian) {
         Array.Reverse(buffer);
     }
     Write(typeIdentifier, identifier, buffer);
 }
Пример #15
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, byte[] value)
 {
     if (value == null)
         WriteType(typeIdentifier, identifier, 0);
     else
     {
         WriteType(typeIdentifier, identifier, value.Length);
         _Stream.Write(value, 0, value.Length);
     }
 }
Пример #16
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, string value)
 {
     byte[] buffer = null;
     if (!string.IsNullOrEmpty(value))
     {
         buffer = Encoding.UTF8.GetBytes(value);
     }
     Write(typeIdentifier, identifier, buffer);
 }
Пример #17
0
        public void WriteType(TTlvTypeIdentifier typeIdentifier, ushort identifier, int length)
        {
            int type = 0;
            byte[] tlvHeader = null;
            int headerLength = 2;
            switch (typeIdentifier)
            {
                case TTlvTypeIdentifier.NotSet:
                    break;
                case TTlvTypeIdentifier.ObjectInstance:
                    break;
                case TTlvTypeIdentifier.ResourceWithValue:
                    type = type | TlvConstant.RESOURCE_WITH_VALUE;
                    break;
                case TTlvTypeIdentifier.MultipleResources:
                    type = type | TlvConstant.MULTIPLE_RESOURCES;
                    break;
                case TTlvTypeIdentifier.ResourceInstance:
                    type = type | TlvConstant.RESOURCE_INSTANCE;
                    break;
                default:
                    break;
            }
            if (identifier > byte.MaxValue)
            {
                type = type | TlvConstant.IDENTIFIER_16BITS;
                headerLength += 1;
            }
            if (length > ushort.MaxValue)
            {
                type = type | TlvConstant.LENGTH_24BIT;
                headerLength += 3;
            }
            else if (length > byte.MaxValue)
            {
                type = type | TlvConstant.LENGTH_16BIT;
                headerLength += 2;
            }
            else if (length > 7)
            {
                type = type | TlvConstant.LENGTH_8BIT;
                headerLength += 1;
            }
            else
            {
                type = type | (int)length;
            }

            tlvHeader = new byte[headerLength];
            tlvHeader[0] = (byte)type;
            int lengthOffset = 2;
            if (identifier > byte.MaxValue)
            {
                NetworkByteOrderConverter.WriteUInt16(tlvHeader, 1, identifier);
                lengthOffset = 3;
            }
            else
            {
                tlvHeader[1] = (byte)identifier;
            }
            if (length > ushort.MaxValue) //24Bit length
            {
                NetworkByteOrderConverter.WriteUInt24(tlvHeader,lengthOffset, (uint)length);
            }
            else if (length > byte.MaxValue) //16Bit length
            {
                NetworkByteOrderConverter.WriteUInt16(tlvHeader, lengthOffset, (ushort)length);
            }
            else if (length > 7) //8Bit length
            {
                tlvHeader[lengthOffset] = (byte)length;
            }
            _Stream.Write(tlvHeader, 0, headerLength);
        }
Пример #18
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, long value)
 {
     if ((value > int.MaxValue) || (value < int.MinValue))
     {
         WriteType(typeIdentifier, identifier, 8);
         NetworkByteOrderConverter.WriteInt64(_Stream, value);
     }
     else if ((value > short.MaxValue) || (value < short.MinValue)) //32Bit length
     {
         WriteType(typeIdentifier, identifier, 4);
         NetworkByteOrderConverter.WriteInt32(_Stream, (int)value);
     }
     else if ((value > 127) || (value < -128)) //16Bit length
     {
         WriteType(typeIdentifier, identifier, 2);
         NetworkByteOrderConverter.WriteInt16(_Stream, (short)value);
     }
     else
     {
         WriteType(typeIdentifier, identifier, 1);
         _Stream.WriteByte((byte)value);
     }
 }
Пример #19
0
 public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, DateTime value)
 {
     TimeSpan diff = value.Subtract(_Epoch);
     long seconds = (long)diff.TotalSeconds;
     Write(typeIdentifier, identifier, seconds);
 }