public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, DateTime value) { TimeSpan diff = value.Subtract(_Epoch); long seconds = (long)diff.TotalSeconds; Write(typeIdentifier, identifier, seconds); }
public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, bool value) { WriteType(typeIdentifier, identifier, 1); if (value) _Stream.WriteByte((byte)1); else _Stream.WriteByte((byte)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); }
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); }
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); } }
public void Write(TTlvTypeIdentifier typeIdentifier, ushort identifier, bool value) { WriteType(typeIdentifier, identifier, 1); if (value) { _Stream.WriteByte((byte)1); } else { _Stream.WriteByte((byte)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); } }
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); } }
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); } }
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; } } }
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; } } }
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); }
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); }
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); } }
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); }