예제 #1
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     SapAssignmentList.Clear();
     if (reader.IsStartElement("SapAssignmentList", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             UInt16 sap = (UInt16)reader.ReadElementContentAsInt("SAP");
             string ldn = reader.ReadElementContentAsString("LDN");
             SapAssignmentList.Add(new KeyValuePair <UInt16, string>(sap, ldn));
         }
         reader.ReadEndElement("SapAssignmentList");
     }
 }
예제 #2
0
 private void LoadKeyTable(GXXmlReader reader)
 {
     KeyTable.Clear();
     if (reader.IsStartElement("KeyTable", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             byte   k = (byte)reader.ReadElementContentAsInt("Key");
             byte[] d = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Data"));
             KeyTable.Add(new GXKeyValuePair <byte, byte[]>(k, d));
         }
         reader.ReadEndElement("KeyTable");
     }
 }
예제 #3
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     Entries.Clear();
     if (reader.IsStartElement("Entries", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXScheduleEntry it = new GXScheduleEntry();
             it.Index          = (byte)reader.ReadElementContentAsInt("Index");
             it.Enable         = reader.ReadElementContentAsInt("Enable") != 0;
             it.LogicalName    = reader.ReadElementContentAsString("LogicalName");
             it.ScriptSelector = (byte)reader.ReadElementContentAsInt("ScriptSelector");
             it.SwitchTime     = (GXDateTime)reader.ReadElementContentAsObject("SwitchTime", new GXDateTime(), null, 0);
             it.ValidityWindow = (byte)reader.ReadElementContentAsInt("ValidityWindow");
             it.ExecWeekdays   = reader.ReadElementContentAsString("ExecWeekdays");
             it.ExecSpecDays   = reader.ReadElementContentAsString("ExecSpecDays");
             it.BeginDate      = (GXDateTime)reader.ReadElementContentAsObject("BeginDate", new GXDateTime(), null, 0);
             it.EndDate        = (GXDateTime)reader.ReadElementContentAsObject("EndDate", new GXDateTime(), null, 0);
             Entries.Add(it);
         }
         reader.ReadEndElement("Entries");
     }
 }
예제 #4
0
        private void LoadGroupTable(GXXmlReader reader)
        {
            List <ushort> list = new List <ushort>();

            if (reader.IsStartElement("GroupTable", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add((ushort)reader.ReadElementContentAsInt("Value"));
                }
                reader.ReadEndElement("GroupTable");
            }
            GroupTable = list.ToArray();
        }
예제 #5
0
        private Int16[] LoadSwitchTable(GXXmlReader reader)
        {
            List <Int16> list = new List <Int16>();

            if (reader.IsStartElement("SwitchTable", true))
            {
                while (reader.IsStartElement("Item", false))
                {
                    list.Add((Int16)reader.ReadElementContentAsInt("Item"));
                }
                reader.ReadEndElement("SwitchTable");
            }
            return(list.ToArray());
        }
예제 #6
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            if (string.Compare("Time", reader.Name, true) == 0)
            {
                Time = new GXDateTime(reader.ReadElementContentAsString("Time"), CultureInfo.InvariantCulture);
            }
            TimeZone = reader.ReadElementContentAsInt("TimeZone");
            Status   = (ClockStatus)reader.ReadElementContentAsInt("Status");
            string str = reader.ReadElementContentAsString("Begin");

            if (str != null)
            {
                Begin = new GXDateTime(str, CultureInfo.InvariantCulture);
            }
            str = reader.ReadElementContentAsString("End");
            if (str != null)
            {
                End = new GXDateTime(str, CultureInfo.InvariantCulture);
            }
            Deviation = reader.ReadElementContentAsInt("Deviation");
            Enabled   = reader.ReadElementContentAsInt("Enabled") != 0;
            ClockBase = (ClockBase)reader.ReadElementContentAsInt("ClockBase");
        }
예제 #7
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            DataLinkLayerReference = reader.ReadElementContentAsString("DataLinkLayerReference");
            IPAddress = reader.ReadElementContentAsString("IPAddress");
            List <UInt32> list = new List <UInt32>();

            if (reader.IsStartElement("MulticastIPAddress", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add((UInt32)reader.ReadElementContentAsInt("Value"));
                }
                reader.ReadEndElement("MulticastIPAddress");
            }
            MulticastIPAddress = list.ToArray();

            List <GXDLMSIp4SetupIpOption> ipOptions = new List <GXDLMSIp4SetupIpOption>();

            if (reader.IsStartElement("IPOptions", true))
            {
                while (reader.IsStartElement("IPOptions", true))
                {
                    GXDLMSIp4SetupIpOption it = new GXDLMSIp4SetupIpOption();
                    it.Type   = (Ip4SetupIpOptionType)reader.ReadElementContentAsInt("Type");
                    it.Length = (byte)reader.ReadElementContentAsInt("Length");
                    it.Data   = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Data"));
                    ipOptions.Add(it);
                }
                reader.ReadEndElement("IPOptions");
            }
            IPOptions           = ipOptions.ToArray();
            SubnetMask          = reader.ReadElementContentAsULong("SubnetMask");
            GatewayIPAddress    = reader.ReadElementContentAsULong("GatewayIPAddress");
            UseDHCP             = reader.ReadElementContentAsInt("UseDHCP") != 0;
            PrimaryDNSAddress   = reader.ReadElementContentAsULong("PrimaryDNSAddress");
            SecondaryDNSAddress = reader.ReadElementContentAsULong("SecondaryDNSAddress");
        }
예제 #8
0
 private static void LoadTokenGatewayConfigurations(GXXmlReader reader, List <GXTokenGatewayConfiguration> list)
 {
     list.Clear();
     if (reader.IsStartElement("TokenGatewayConfigurations", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXTokenGatewayConfiguration it = new GXTokenGatewayConfiguration();
             it.CreditReference = reader.ReadElementContentAsString("Credit");
             it.TokenProportion = (byte)reader.ReadElementContentAsInt("Token");
             list.Add(it);
         }
         reader.ReadEndElement("TokenGatewayConfigurations");
     }
 }
예제 #9
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            PHYReference = reader.ReadElementContentAsString("PHYReference");
            List <GXDLMSPppSetupLcpOption> options = new List <GXDLMSPppSetupLcpOption>();

            if (reader.IsStartElement("LCPOptions", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDLMSPppSetupLcpOption it = new GXDLMSPppSetupLcpOption();
                    it.Type   = (PppSetupLcpOptionType)reader.ReadElementContentAsInt("Type");
                    it.Length = (byte)reader.ReadElementContentAsInt("Length");
                    it.Data   = reader.ReadElementContentAsObject("Data", null);
                }
                reader.ReadEndElement("LCPOptions");
            }
            LCPOptions = options.ToArray();

            List <GXDLMSPppSetupIPCPOption> list = new List <GXDLMSPppSetupIPCPOption>();

            if (reader.IsStartElement("IPCPOptions", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDLMSPppSetupIPCPOption it = new GXDLMSPppSetupIPCPOption();
                    it.Type   = (PppSetupIPCPOptionType)reader.ReadElementContentAsInt("Type");
                    it.Length = (byte)reader.ReadElementContentAsInt("Length");
                    it.Data   = reader.ReadElementContentAsObject("Data", null);
                }
                reader.ReadEndElement("IPCPOptions");
            }
            IPCPOptions = list.ToArray();

            UserName = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("UserName"));
            Password = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Password"));
        }
예제 #10
0
 private static void LoadCreditChargeConfigurations(GXXmlReader reader, List <GXCreditChargeConfiguration> list)
 {
     list.Clear();
     if (reader.IsStartElement("CreditChargeConfigurations", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             GXCreditChargeConfiguration it = new GXCreditChargeConfiguration();
             it.CreditReference         = reader.ReadElementContentAsString("Credit");
             it.ChargeReference         = reader.ReadElementContentAsString("Charge");
             it.CollectionConfiguration = (CreditCollectionConfiguration)reader.ReadElementContentAsInt("Configuration");
             list.Add(it);
         }
         reader.ReadEndElement("CreditChargeConfigurations");
     }
 }
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            Unit   = (Unit)reader.ReadElementContentAsInt("Unit", 0);
            Scaler = reader.ReadElementContentAsDouble("Scaler", 1);
            Value  = reader.ReadElementContentAsObject("Value", null, this, 2);
            Status = reader.ReadElementContentAsObject("Status", null, this, 4);
            GXDateTime dt = reader.ReadElementContentAsDateTime("CaptureTime");

            if (dt == null)
            {
                CaptureTime = DateTime.MinValue;
            }
            else
            {
                CaptureTime = dt.Value.ToLocalTime().LocalDateTime;
            }
        }
예제 #12
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            PushObjectList.Clear();
            if (reader.IsStartElement("ObjectList", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    ObjectType ot = (ObjectType)reader.ReadElementContentAsInt("ObjectType");
                    string     ln = reader.ReadElementContentAsString("LN");
                    int        ai = reader.ReadElementContentAsInt("AI");
                    int        di = reader.ReadElementContentAsInt("DI");
                    reader.ReadEndElement("Item");
                    GXDLMSCaptureObject co  = new GXDLMSCaptureObject(ai, di);
                    GXDLMSObject        obj = reader.Objects.FindByLN(ot, ln);
                    if (obj == null)
                    {
                        obj             = GXDLMSClient.CreateObject(ot);
                        obj.LogicalName = ln;
                    }
                    PushObjectList.Add(new KeyValuePair <Objects.GXDLMSObject, Objects.GXDLMSCaptureObject>(obj, co));
                }
                reader.ReadEndElement("ObjectList");
            }

            Service     = (ServiceType)reader.ReadElementContentAsInt("Service");
            Destination = reader.ReadElementContentAsString("Destination");
            Message     = (MessageType)reader.ReadElementContentAsInt("Message");
            CommunicationWindow.Clear();
            if (reader.IsStartElement("CommunicationWindow", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDateTime start = new GXDateTime(reader.ReadElementContentAsString("Start"), CultureInfo.InvariantCulture);
                    GXDateTime end   = new GXDateTime(reader.ReadElementContentAsString("End"), CultureInfo.InvariantCulture);
                    CommunicationWindow.Add(new KeyValuePair <DLMS.GXDateTime, DLMS.GXDateTime>(start, end));
                }
                reader.ReadEndElement("CommunicationWindow");
            }
            RandomisationStartInterval = (ushort)reader.ReadElementContentAsInt("RandomisationStartInterval");
            NumberOfRetries            = (byte)reader.ReadElementContentAsInt("NumberOfRetries");
            RepetitionDelay            = (ushort)reader.ReadElementContentAsInt("RepetitionDelay");
        }
예제 #13
0
        private GXMacPhyCommunication[] LoadCommunications(GXXmlReader reader)
        {
            List <GXMacPhyCommunication> list = new List <GXMacPhyCommunication>();

            if (reader.IsStartElement("Communications", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXMacPhyCommunication it = new GXMacPhyCommunication();
                    list.Add(it);
                    it.Eui              = GXCommon.HexToBytes(reader.ReadElementContentAsString("Eui"));
                    it.TxPower          = (sbyte)reader.ReadElementContentAsInt("TxPower");
                    it.TxCoding         = (sbyte)reader.ReadElementContentAsInt("TxCoding");
                    it.RxCoding         = (sbyte)reader.ReadElementContentAsInt("RxCoding");
                    it.RxLvl            = (sbyte)reader.ReadElementContentAsInt("RxLvl");
                    it.Snr              = (sbyte)reader.ReadElementContentAsInt("Snr");
                    it.TxPowerModified  = (sbyte)reader.ReadElementContentAsInt("TxPowerModified");
                    it.TxCodingModified = (sbyte)reader.ReadElementContentAsInt("TxCodingModified");
                    it.RxCodingModified = (sbyte)reader.ReadElementContentAsInt("RxCodingModified");
                }
                reader.ReadEndElement("Communications");
            }
            return(list.ToArray());
        }
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            TotalAmountPaid = reader.ReadElementContentAsInt("TotalAmountPaid");
            ChargeType      = (ChargeType)reader.ReadElementContentAsInt("ChargeType");
            Priority        = (byte)reader.ReadElementContentAsInt("Priority");
            LoadUnitChargeActive(reader, "UnitChargeActive", UnitChargeActive);
            LoadUnitChargeActive(reader, "UnitChargePassive", UnitChargePassive);
            string tmp = reader.ReadElementContentAsString("UnitChargeActivationTime");

            if (tmp != null)
            {
                UnitChargeActivationTime = new GXDateTime(tmp, System.Globalization.CultureInfo.InvariantCulture);
            }
            Period = (UInt16)reader.ReadElementContentAsInt("Period");
            ChargeConfiguration = (ChargeConfiguration)reader.ReadElementContentAsInt("ChargeConfiguration");
            tmp = reader.ReadElementContentAsString("LastCollectionTime");
            if (tmp != null)
            {
                LastCollectionTime = new GXDateTime(tmp, System.Globalization.CultureInfo.InvariantCulture);
            }
            LastCollectionAmount = reader.ReadElementContentAsInt("LastCollectionAmount");
            TotalAmountRemaining = reader.ReadElementContentAsInt("TotalAmountRemaining");
            Proportion           = (UInt16)reader.ReadElementContentAsInt("Proportion");
        }
예제 #15
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     MBusPortReference = reader.ReadElementContentAsString("MBusPortReference");
     CaptureDefinition.Clear();
     if (reader.IsStartElement("CaptureDefinition", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             string d = reader.ReadElementContentAsString("Data");
             string v = reader.ReadElementContentAsString("Value");
             CaptureDefinition.Add(new KeyValuePair <string, string>(d, v));
         }
         reader.ReadEndElement("CaptureDefinition");
     }
     CapturePeriod        = (UInt16)reader.ReadElementContentAsInt("CapturePeriod");
     PrimaryAddress       = reader.ReadElementContentAsInt("PrimaryAddress");
     IdentificationNumber = (UInt16)reader.ReadElementContentAsInt("IdentificationNumber");
     ManufacturerID       = (UInt16)reader.ReadElementContentAsInt("ManufacturerID");
     DataHeaderVersion    = reader.ReadElementContentAsInt("DataHeaderVersion");
     DeviceType           = reader.ReadElementContentAsInt("DeviceType");
     AccessNumber         = reader.ReadElementContentAsInt("AccessNumber");
 }
 private void LoadRoutingTable(GXXmlReader reader)
 {
     RoutingTable.Clear();
     if (reader.IsStartElement("RoutingTable", true))
     {
         while (reader.IsStartElement("Item", false))
         {
             GXDLMSRoutingTable it = new GXDLMSRoutingTable();
             RoutingTable.Add(it);
             it.DestinationAddress = (UInt16)reader.ReadElementContentAsInt("DestinationAddress");
             it.NextHopAddress     = (UInt16)reader.ReadElementContentAsInt("NextHopAddress");
             it.RouteCost          = (UInt16)reader.ReadElementContentAsInt("RouteCost");
             it.HopCount           = (byte)reader.ReadElementContentAsInt("HopCount");
             it.WeakLinkCount      = (byte)reader.ReadElementContentAsInt("WeakLinkCount");
             it.ValidTime          = (UInt16)reader.ReadElementContentAsInt("ValidTime");
         }
         reader.ReadEndElement("RoutingTable");
     }
 }
        private static GXDLMSWeekProfile[] LoadWeekProfileTable(GXXmlReader reader, string name)
        {
            List <GXDLMSWeekProfile> list = new List <GXDLMSWeekProfile>();

            if (reader.IsStartElement(name, true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDLMSWeekProfile it = new GXDLMSWeekProfile();
                    it.Name      = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Name"));
                    it.Monday    = reader.ReadElementContentAsInt("Monday");
                    it.Tuesday   = reader.ReadElementContentAsInt("Tuesday");
                    it.Wednesday = reader.ReadElementContentAsInt("Wednesday");
                    it.Thursday  = reader.ReadElementContentAsInt("Thursday");
                    it.Friday    = reader.ReadElementContentAsInt("Friday");
                    it.Saturday  = reader.ReadElementContentAsInt("Saturday");
                    it.Sunday    = reader.ReadElementContentAsInt("Sunday");
                    list.Add(it);
                }
                reader.ReadEndElement(name);
            }
            return(list.ToArray());
        }
예제 #18
0
        private GXMacDirectTable[] LoadDirectTable(GXXmlReader reader)
        {
            List <GXMacDirectTable> list = new List <GXMacDirectTable>();

            if (reader.IsStartElement("DirectTable", true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXMacDirectTable it = new GXMacDirectTable();
                    list.Add(it);
                    it.SourceSId       = (Int16)reader.ReadElementContentAsInt("SourceSId");
                    it.SourceLnId      = (Int16)reader.ReadElementContentAsInt("SourceLnId");
                    it.SourceLcId      = (Int16)reader.ReadElementContentAsInt("SourceLcId");
                    it.DestinationSId  = (Int16)reader.ReadElementContentAsInt("DestinationSId");
                    it.DestinationLnId = (Int16)reader.ReadElementContentAsInt("DestinationLnId");
                    it.DestinationLcId = (Int16)reader.ReadElementContentAsInt("DestinationLcId");
                    it.Did             = GXCommon.HexToBytes(reader.ReadElementContentAsString("Did"));
                }
                reader.ReadEndElement("DirectTable");
            }
            return(list.ToArray());
        }
예제 #19
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     SynchronizationRegister.Clear();
     if (reader.IsStartElement("SynchronizationRegisters", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             UInt16 k = (UInt16)reader.ReadElementContentAsInt("Key");
             UInt32 v = (UInt32)reader.ReadElementContentAsInt("Value");
             SynchronizationRegister.Add(new KeyValuePair <UInt16, UInt32>(k, v));
         }
         reader.ReadEndElement("SynchronizationRegisters");
     }
     PhysicalLayerDesynchronization       = (UInt16)reader.ReadElementContentAsInt("PhysicalLayerDesynchronization");
     TimeOutNotAddressedDesynchronization = (UInt16)reader.ReadElementContentAsInt("TimeOutNotAddressedDesynchronization");
     TimeOutFrameNotOkDesynchronization   = (UInt16)reader.ReadElementContentAsInt("TimeOutFrameNotOkDesynchronization");
     WriteRequestDesynchronization        = (UInt16)reader.ReadElementContentAsInt("WriteRequestDesynchronization");
     WrongInitiatorDesynchronization      = (UInt16)reader.ReadElementContentAsInt("WrongInitiatorDesynchronization");
     BroadcastFramesCounter.Clear();
     if (reader.IsStartElement("BroadcastFramesCounters", true))
     {
         while (reader.IsStartElement("Item", true))
         {
             UInt16 k = (UInt16)reader.ReadElementContentAsInt("Key");
             UInt32 v = (UInt32)reader.ReadElementContentAsInt("Value");
             BroadcastFramesCounter.Add(new KeyValuePair <UInt16, UInt32>(k, v));
         }
         reader.ReadEndElement("BroadcastFramesCounters");
     }
     RepetitionsCounter   = (UInt16)reader.ReadElementContentAsInt("RepetitionsCounter");
     TransmissionsCounter = (UInt16)reader.ReadElementContentAsInt("TransmissionsCounter");
     CrcOkFramesCounter   = (UInt16)reader.ReadElementContentAsInt("CrcOkFramesCounter");
     CrcNOkFramesCounter  = (UInt16)reader.ReadElementContentAsInt("CrcNOkFramesCounter");
 }
 private void LoadRoutingConfiguration(GXXmlReader reader)
 {
     RoutingConfiguration.Clear();
     if (reader.IsStartElement("RoutingConfiguration", true))
     {
         while (reader.IsStartElement("Item", false))
         {
             GXDLMSRoutingConfiguration it = new GXDLMSRoutingConfiguration();
             RoutingConfiguration.Add(it);
             it.NetTraversalTime     = (byte)reader.ReadElementContentAsInt("NetTraversalTime");
             it.RoutingTableEntryTtl = (UInt16)reader.ReadElementContentAsInt("RoutingTableEntryTtl");
             it.Kr                     = (byte)reader.ReadElementContentAsInt("Kr");
             it.Km                     = (byte)reader.ReadElementContentAsInt("Km");
             it.Kc                     = (byte)reader.ReadElementContentAsInt("Kc");
             it.Kq                     = (byte)reader.ReadElementContentAsInt("Kq");
             it.Kh                     = (byte)reader.ReadElementContentAsInt("Kh");
             it.Krt                    = (byte)reader.ReadElementContentAsInt("Krt");
             it.RreqRetries            = (byte)reader.ReadElementContentAsInt("RreqRetries");
             it.RreqRerrWait           = (byte)reader.ReadElementContentAsInt("RreqRerrWait");
             it.BlacklistTableEntryTtl = (UInt16)reader.ReadElementContentAsInt("BlacklistTableEntryTtl");
             it.UnicastRreqGenEnable   = reader.ReadElementContentAsInt("UnicastRreqGenEnable") != 0;
             it.RlcEnabled             = reader.ReadElementContentAsInt("RlcEnabled") != 0;
             it.AddRevLinkCost         = (byte)reader.ReadElementContentAsInt("AddRevLinkCost");
         }
         reader.ReadEndElement("RoutingConfiguration");
     }
 }
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     MaxHops       = (byte)reader.ReadElementContentAsInt("MaxHops");
     WeakLqiValue  = (byte)reader.ReadElementContentAsInt("WeakLqiValue");
     SecurityLevel = (byte)reader.ReadElementContentAsInt("SecurityLevel");
     LoadPrefixTable(reader);
     LoadRoutingConfiguration(reader);
     BroadcastLogTableEntryTtl = (UInt16)reader.ReadElementContentAsInt("BroadcastLogTableEntryTtl");
     LoadRoutingTable(reader);
     LoadContextInformationTable(reader);
     LoadBlacklistTable(reader);
     LoadBroadcastLogTable(reader);
     LoadGroupTable(reader);
     MaxJoinWaitTime       = (UInt16)reader.ReadElementContentAsInt("MaxJoinWaitTime");
     PathDiscoveryTime     = (byte)reader.ReadElementContentAsInt("PathDiscoveryTime");
     ActiveKeyIndex        = (byte)reader.ReadElementContentAsInt("ActiveKeyIndex");
     MetricType            = (byte)reader.ReadElementContentAsInt("MetricType");
     CoordShortAddress     = (UInt16)reader.ReadElementContentAsInt("CoordShortAddress");
     DisableDefaultRouting = reader.ReadElementContentAsInt("DisableDefaultRouting") != 0;
     DeviceType            = (DeviceType)reader.ReadElementContentAsInt("DeviceType");
 }
예제 #22
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     SystemTitle  = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("SystemTitle"));
     MacAddress   = (UInt16)reader.ReadElementContentAsInt("MacAddress");
     LSapSelector = (byte)reader.ReadElementContentAsInt("LSapSelector");
 }
예제 #23
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            InitiatorElectricalPhase = (InitiatorElectricalPhase)reader.ReadElementContentAsInt("InitiatorElectricalPhase");
            DeltaElectricalPhase     = (DeltaElectricalPhase)reader.ReadElementContentAsInt("DeltaElectricalPhase");
            MaxReceivingGain         = (byte)reader.ReadElementContentAsInt("MaxReceivingGain");
            MaxTransmittingGain      = (byte)reader.ReadElementContentAsInt("MaxTransmittingGain");
            SearchInitiatorThreshold = (byte)reader.ReadElementContentAsInt("SearchInitiatorThreshold");
            MarkFrequency            = (UInt32)reader.ReadElementContentAsInt("MarkFrequency");
            SpaceFrequency           = (UInt32)reader.ReadElementContentAsInt("SpaceFrequency");
            MacAddress = (UInt16)reader.ReadElementContentAsInt("MacAddress");
            List <UInt16> list = new List <ushort>();

            if (reader.IsStartElement("MacGroupAddresses", true))
            {
                while (reader.IsStartElement("Value", false))
                {
                    list.Add((UInt16)reader.ReadElementContentAsInt("Value"));
                }
                reader.ReadEndElement("MacGroupAddresses");
            }
            MacGroupAddresses     = list.ToArray();
            Repeater              = (Repeater)reader.ReadElementContentAsInt("Repeater");
            RepeaterStatus        = reader.ReadElementContentAsInt("RepeaterStatus") != 0;
            MinDeltaCredit        = (byte)reader.ReadElementContentAsInt("MinDeltaCredit");
            InitiatorMacAddress   = (UInt16)reader.ReadElementContentAsInt("InitiatorMacAddress");
            SynchronizationLocked = reader.ReadElementContentAsInt("SynchronizationLocked") != 0;
            TransmissionSpeed     = (BaudRate)reader.ReadElementContentAsInt("TransmissionSpeed");
        }
예제 #24
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     ShortAddress = (ushort)reader.ReadElementContentAsInt("ShortAddress");
     RcCoord      = (ushort)reader.ReadElementContentAsInt("RcCoord");
     PANId        = (ushort)reader.ReadElementContentAsInt("PANId");
     LoadKeyTable(reader);
     FrameCounter           = (ushort)reader.ReadElementContentAsInt("FrameCounter");
     ToneMask               = reader.ReadElementContentAsString("ToneMask");
     TmrTtl                 = (byte)reader.ReadElementContentAsInt("TmrTtl");
     MaxFrameRetries        = (byte)reader.ReadElementContentAsInt("MaxFrameRetries");
     NeighbourTableEntryTtl = (byte)reader.ReadElementContentAsInt("NeighbourTableEntryTtl");
     LoadNeighbourTable(reader);
     HighPriorityWindowSize          = (byte)reader.ReadElementContentAsInt("HighPriorityWindowSize");
     CscmFairnessLimit               = (byte)reader.ReadElementContentAsInt("CscmFairnessLimit");
     BeaconRandomizationWindowLength = (byte)reader.ReadElementContentAsInt("BeaconRandomizationWindowLength");
     A                 = (byte)reader.ReadElementContentAsInt("A");
     K                 = (byte)reader.ReadElementContentAsInt("K");
     MinCwAttempts     = (byte)reader.ReadElementContentAsInt("MinCwAttempts");
     CenelecLegacyMode = (byte)reader.ReadElementContentAsInt("CenelecLegacyMode");
     FccLegacyMode     = (byte)reader.ReadElementContentAsInt("FccLegacyMode");
     MaxBe             = (byte)reader.ReadElementContentAsInt("MaxBe");
     MaxCsmaBackoffs   = (byte)reader.ReadElementContentAsInt("MaxCsmaBackoffs");
     MinBe             = (byte)reader.ReadElementContentAsInt("MinBe");
 }
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     CommSpeed = (BaudRate)reader.ReadElementContentAsInt("CommSpeed");
 }
예제 #26
0
        void IGXDLMSBase.Load(GXXmlReader reader)
        {
            ClientSAP = (byte)reader.ReadElementContentAsInt("ClientSAP");
            ServerSAP = (byte)reader.ReadElementContentAsInt("ServerSAP");
            if (reader.IsStartElement("ApplicationContextName", true))
            {
                ApplicationContextName.JointIsoCtt            = (byte)reader.ReadElementContentAsInt("JointIsoCtt");
                ApplicationContextName.Country                = (byte)reader.ReadElementContentAsInt("Country");
                ApplicationContextName.CountryName            = (UInt16)reader.ReadElementContentAsInt("CountryName");
                ApplicationContextName.IdentifiedOrganization = (byte)reader.ReadElementContentAsInt("IdentifiedOrganization");
                ApplicationContextName.DlmsUA             = (byte)reader.ReadElementContentAsInt("DlmsUA");
                ApplicationContextName.ApplicationContext = (byte)reader.ReadElementContentAsInt("ApplicationContext");
                ApplicationContextName.ContextId          = (ApplicationContextName)reader.ReadElementContentAsInt("ContextId");
                reader.ReadEndElement("ApplicationContextName");
            }

            if (reader.IsStartElement("XDLMSContextInfo", true))
            {
                XDLMSContextInfo.Conformance       = (Conformance)reader.ReadElementContentAsInt("Conformance");
                XDLMSContextInfo.MaxReceivePduSize = (UInt16)reader.ReadElementContentAsInt("MaxReceivePduSize");
                XDLMSContextInfo.MaxSendPduSize    = (UInt16)reader.ReadElementContentAsInt("MaxSendPduSize");
                XDLMSContextInfo.DlmsVersionNumber = (byte)reader.ReadElementContentAsInt("DlmsVersionNumber");
                XDLMSContextInfo.QualityOfService  = (sbyte)reader.ReadElementContentAsInt("QualityOfService");
                XDLMSContextInfo.CypheringInfo     = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("CypheringInfo"));
                reader.ReadEndElement("XDLMSContextInfo");
            }
            if (reader.IsStartElement("XDLMSContextInfo", true))
            {
                AuthenticationMechanismName.JointIsoCtt            = (byte)reader.ReadElementContentAsInt("JointIsoCtt");
                AuthenticationMechanismName.Country                = (byte)reader.ReadElementContentAsInt("Country");
                AuthenticationMechanismName.CountryName            = (UInt16)reader.ReadElementContentAsInt("CountryName");
                AuthenticationMechanismName.IdentifiedOrganization = (byte)reader.ReadElementContentAsInt("IdentifiedOrganization");
                AuthenticationMechanismName.DlmsUA = (byte)reader.ReadElementContentAsInt("DlmsUA");
                AuthenticationMechanismName.AuthenticationMechanismName = (byte)reader.ReadElementContentAsInt("AuthenticationMechanismName");
                AuthenticationMechanismName.MechanismId = (Authentication)reader.ReadElementContentAsInt("MechanismId");
                reader.ReadEndElement("XDLMSContextInfo");
            }
            string str = reader.ReadElementContentAsString("Secret");

            if (str == null)
            {
                Secret = null;
            }
            else
            {
                Secret = GXDLMSTranslator.HexToBytes(str);
            }
            AssociationStatus      = (AssociationStatus)reader.ReadElementContentAsInt("AssociationStatus");
            SecuritySetupReference = reader.ReadElementContentAsString("SecuritySetupReference");
        }
예제 #27
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     Unit   = (Unit)reader.ReadElementContentAsInt("Unit", 0);
     Scaler = reader.ReadElementContentAsDouble("Scaler", 1);
     Value  = reader.ReadElementContentAsObject("Value", null);
 }
        /// <summary>
        ///  Load COSEM objects from the file.
        /// </summary>
        /// <param name="stream">Stream.</param>
        /// <param name="objects">Collection of COSEM objects.</param>
        public static void Load(Stream stream, GXDLMSObjectCollection objects)
        {
            GXDLMSObject obj = null;
            String       target;
            ObjectType   type;

            using (GXXmlReader reader = new GXXmlReader(stream))
            {
                reader.Objects = objects;
                while (!reader.EOF)
                {
                    if (reader.IsStartElement())
                    {
                        target = reader.Name;
                        if (string.Compare("Objects", target, true) == 0)
                        {
                            //Skip.
                            reader.Read();
                        }
                        else if (target.StartsWith("GXDLMS"))
                        {
                            string str = target.Substring(6);
                            reader.Read();
                            type = (ObjectType)Enum.Parse(typeof(ObjectType), str);
                            obj  = GXDLMSClient.CreateObject(type);
                            reader.Objects.Add(obj);
                        }
                        else if (string.Compare("Object", target, true) == 0)
                        {
                            int    r   = 0;
                            string str = reader.GetAttribute(0);
                            if (int.TryParse(str, out r))
                            {
                                type = (ObjectType)r;
                            }
                            else
                            {
                                type = (ObjectType)Enum.Parse(typeof(ObjectType), str);
                            }
                            reader.Read();
                            obj = GXDLMSClient.CreateObject(type);
                            reader.Objects.Add(obj);
                        }
                        else if (string.Compare("SN", target, true) == 0)
                        {
                            obj.ShortName = (UInt16)reader.ReadElementContentAsInt("SN");
                        }
                        else if (string.Compare("LN", target, true) == 0)
                        {
                            obj.LogicalName = reader.ReadElementContentAsString("LN");
                        }
                        else if (string.Compare("Description", target, true) == 0)
                        {
                            obj.Description = reader.ReadElementContentAsString("Description");
                        }
                        else
                        {
                            (obj as IGXDLMSBase).Load(reader);
                            obj = null;
                        }
                    }
                    else
                    {
                        reader.Read();
                    }
                }
            }
        }
예제 #29
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     APN     = reader.ReadElementContentAsString("APN");
     PINCode = (UInt16)reader.ReadElementContentAsInt("PINCode");
     if (reader.IsStartElement("DefaultQualityOfService", true))
     {
         DefaultQualityOfService.Precedence     = (byte)reader.ReadElementContentAsInt("Precedence");
         DefaultQualityOfService.Delay          = (byte)reader.ReadElementContentAsInt("Delay");
         DefaultQualityOfService.Reliability    = (byte)reader.ReadElementContentAsInt("Reliability");
         DefaultQualityOfService.PeakThroughput = (byte)reader.ReadElementContentAsInt("PeakThroughput");
         DefaultQualityOfService.MeanThroughput = (byte)reader.ReadElementContentAsInt("MeanThroughput");
         reader.ReadEndElement("DefaultQualityOfService");
     }
     if (reader.IsStartElement("RequestedQualityOfService", true))
     {
         RequestedQualityOfService.Precedence     = (byte)reader.ReadElementContentAsInt("Precedence");
         RequestedQualityOfService.Delay          = (byte)reader.ReadElementContentAsInt("Delay");
         RequestedQualityOfService.Reliability    = (byte)reader.ReadElementContentAsInt("Reliability");
         RequestedQualityOfService.PeakThroughput = (byte)reader.ReadElementContentAsInt("PeakThroughput");
         RequestedQualityOfService.MeanThroughput = (byte)reader.ReadElementContentAsInt("MeanThroughput");
         reader.ReadEndElement("DefaultQualityOfService");
     }
 }
예제 #30
0
 void IGXDLMSBase.Load(GXXmlReader reader)
 {
     PaymentMode         = (PaymentMode)reader.ReadElementContentAsInt("PaymentMode");
     AccountStatus       = (AccountStatus)reader.ReadElementContentAsInt("AccountStatus");
     CurrentCreditInUse  = (byte)reader.ReadElementContentAsInt("CurrentCreditInUse");
     CurrentCreditStatus = (AccountCreditStatus)reader.ReadElementContentAsInt("CurrentCreditStatus");
     AvailableCredit     = reader.ReadElementContentAsInt("AvailableCredit");
     AmountToClear       = reader.ReadElementContentAsInt("AmountToClear");
     ClearanceThreshold  = reader.ReadElementContentAsInt("ClearanceThreshold");
     AggregatedDebt      = reader.ReadElementContentAsInt("AggregatedDebt");
     LoadReferences(reader, "CreditReferences", CreditReferences);
     LoadReferences(reader, "ChargeReferences", ChargeReferences);
     LoadCreditChargeConfigurations(reader, CreditChargeConfigurations);
     LoadTokenGatewayConfigurations(reader, TokenGatewayConfigurations);
     AccountActivationTime        = reader.ReadElementContentAsDateTime("AccountActivationTime");
     AccountClosureTime           = reader.ReadElementContentAsDateTime("AccountClosureTime");
     Currency.Name                = reader.ReadElementContentAsString("CurrencyName");
     Currency.Scale               = (sbyte)reader.ReadElementContentAsInt("CurrencyScale");
     Currency.Unit                = (Currency)reader.ReadElementContentAsInt("CurrencyUnit");
     LowCreditThreshold           = reader.ReadElementContentAsInt("LowCreditThreshold");
     NextCreditAvailableThreshold = reader.ReadElementContentAsInt("NextCreditAvailableThreshold");
     MaxProvision       = (UInt16)reader.ReadElementContentAsInt("MaxProvision");
     MaxProvisionPeriod = reader.ReadElementContentAsInt("MaxProvisionPeriod");
 }