private GXNeighborDiscoverySetup[] LoadNeighborDiscoverySetup(GXXmlReader reader, string name) { List <GXNeighborDiscoverySetup> list = new List <GXNeighborDiscoverySetup>(); if (reader.IsStartElement(name, true)) { while (reader.IsStartElement("Item", true)) { GXNeighborDiscoverySetup it = new GXNeighborDiscoverySetup(); list.Add(it); it.MaxRetry = (byte)reader.ReadElementContentAsInt("MaxRetry"); it.RetryWaitTime = (UInt16)reader.ReadElementContentAsInt("RetryWaitTime"); it.SendPeriod = (UInt32)reader.ReadElementContentAsInt("SendPeriod"); } reader.ReadEndElement(name); } return(list.ToArray()); }
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) { if (e.Value is string) { this.DataLinkLayerReference = e.Value.ToString(); } else { this.DataLinkLayerReference = GXDLMSClient.ChangeType((byte[])e.Value, DataType.OctetString).ToString(); } } else if (e.Index == 3) { AddressConfigMode = (AddressConfigMode)Convert.ToInt32(e.Value); } else if (e.Index == 4) { List <IPAddress> data = new List <IPAddress>(); if (e.Value != null) { foreach (object it in (Object[])e.Value) { data.Add(new IPAddress((byte[])it)); } } UnicastIPAddress = data.ToArray(); } else if (e.Index == 5) { List <IPAddress> data = new List <IPAddress>(); if (e.Value != null) { foreach (object it in (Object[])e.Value) { data.Add(new IPAddress((byte[])it)); } } MulticastIPAddress = data.ToArray(); } else if (e.Index == 6) { List <IPAddress> data = new List <IPAddress>(); if (e.Value != null) { foreach (object it in (Object[])e.Value) { data.Add(new IPAddress((byte[])it)); } } GatewayIPAddress = data.ToArray(); } else if (e.Index == 7) { if (e.Value == null) { PrimaryDNSAddress = null; } else { PrimaryDNSAddress = new IPAddress((byte[])e.Value); } } else if (e.Index == 8) { if (e.Value == null) { SecondaryDNSAddress = null; } else { SecondaryDNSAddress = new IPAddress((byte[])e.Value); } } else if (e.Index == 9) { TrafficClass = Convert.ToByte(e.Value); } else if (e.Index == 10) { List <GXNeighborDiscoverySetup> data = new List <GXNeighborDiscoverySetup>(); if (e.Value != null) { foreach (object it in (Object[])e.Value) { object[] tmp = (object[])it; GXNeighborDiscoverySetup v = new GXNeighborDiscoverySetup(); v.MaxRetry = Convert.ToByte(tmp[0]); v.RetryWaitTime = Convert.ToUInt16(tmp[1]); v.SendPeriod = Convert.ToUInt32(tmp[2]); data.Add(v); } } NeighborDiscoverySetup = data.ToArray(); } else { e.Error = ErrorCode.ReadWriteDenied; } }
void IGXDLMSBase.SetValue(GXDLMSSettings settings, ValueEventArgs e) { if (e.Index == 1) { LogicalName = GXCommon.ToLogicalName(e.Value); } else if (e.Index == 2) { if (e.Value is string) { DataLinkLayerReference = e.Value.ToString(); } else { DataLinkLayerReference = GXCommon.ToLogicalName(e.Value); } } else if (e.Index == 3) { AddressConfigMode = (AddressConfigMode)Convert.ToInt32(e.Value); } else if (e.Index == 4) { List <IPAddress> data = new List <IPAddress>(); if (e.Value != null) { foreach (object it in (IEnumerable <object>)e.Value) { data.Add(new IPAddress((byte[])it)); } } UnicastIPAddress = data.ToArray(); } else if (e.Index == 5) { List <IPAddress> data = new List <IPAddress>(); if (e.Value != null) { foreach (object it in (IEnumerable <object>)e.Value) { data.Add(new IPAddress((byte[])it)); } } MulticastIPAddress = data.ToArray(); } else if (e.Index == 6) { List <IPAddress> data = new List <IPAddress>(); if (e.Value != null) { foreach (object it in (IEnumerable <object>)e.Value) { data.Add(new IPAddress((byte[])it)); } } GatewayIPAddress = data.ToArray(); } else if (e.Index == 7) { if (e.Value == null || ((byte[])e.Value).Length == 0) { PrimaryDNSAddress = null; } else { PrimaryDNSAddress = new IPAddress((byte[])e.Value); } } else if (e.Index == 8) { if (e.Value == null || ((byte[])e.Value).Length == 0) { SecondaryDNSAddress = null; } else { SecondaryDNSAddress = new IPAddress((byte[])e.Value); } } else if (e.Index == 9) { TrafficClass = Convert.ToByte(e.Value); } else if (e.Index == 10) { List <GXNeighborDiscoverySetup> data = new List <GXNeighborDiscoverySetup>(); if (e.Value != null) { foreach (object tmp in (IEnumerable <object>)e.Value) { List <object> it; if (tmp is List <object> ) { it = (List <object>)tmp; } else { it = new List <object>((object[])tmp); } GXNeighborDiscoverySetup v = new GXNeighborDiscoverySetup(); v.MaxRetry = Convert.ToByte(it[0]); v.RetryWaitTime = Convert.ToUInt16(it[1]); v.SendPeriod = Convert.ToUInt32(it[2]); data.Add(v); } } NeighborDiscoverySetup = data.ToArray(); } else { e.Error = ErrorCode.ReadWriteDenied; } }