void IGXDLMSBase.SetValue(GXDLMSSettings settings, ValueEventArgs e)
{
if (e.Index == 1)
{
if (e.Value is string)
{
LogicalName = e.Value.ToString();
}
else
{
LogicalName = GXDLMSClient.ChangeType((byte[])e.Value, DataType.OctetString).ToString();
}
}
else if (e.Index == 2)
{
PushObjectList.Clear();
if (e.Value is Object[])
{
foreach (object it in e.Value as Object[])
{
Object[] tmp = it as Object[];
ObjectType type = (ObjectType)Convert.ToUInt16(tmp[0]);
String ln = GXDLMSClient.ChangeType((byte[])tmp[1], DataType.OctetString).ToString();
GXDLMSObject obj = settings.Objects.FindByLN(type, ln);
if (obj == null)
{
obj = GXDLMSClient.CreateObject(type);
obj.LogicalName = ln;
}
GXDLMSCaptureObject co = new GXDLMSCaptureObject(Convert.ToInt32(tmp[2]), Convert.ToInt32(tmp[3]));
PushObjectList.Add(new KeyValuePair<GXDLMSObject, GXDLMSCaptureObject>(obj, co));
}
}
}
else if (e.Index == 3)
{
object[] tmp = e.Value as object[];
if (tmp != null)
{
Service = (ServiceType)Convert.ToInt32(tmp[0]);
Destination = (string)GXDLMSClient.ChangeType((byte[])tmp[1], DataType.OctetString);
Message = (MessageType)Convert.ToInt32(tmp[2]);
}
}
else if (e.Index == 4)
{
CommunicationWindow.Clear();
if (e.Value is Object[])
{
foreach (object it in e.Value as Object[])
{
Object[] tmp = it as Object[];
GXDateTime start = GXDLMSClient.ChangeType((byte[])tmp[0], DataType.DateTime) as GXDateTime;
GXDateTime end = GXDLMSClient.ChangeType((byte[])tmp[1], DataType.DateTime) as GXDateTime;
CommunicationWindow.Add(new KeyValuePair<GXDateTime, GXDateTime>(start, end));
}
}
}
else if (e.Index == 5)
{
RandomisationStartInterval = (UInt16)e.Value;
}
else if (e.Index == 6)
{
NumberOfRetries = (byte)e.Value;
}
else if (e.Index == 7)
{
RepetitionDelay = (UInt16)e.Value;
}
else
{
e.Error = ErrorCode.ReadWriteDenied;
}
}
#endregion