Gurux.DLMS.GXDLMSTranslator.XmlToPdu C# (CSharp) Method

XmlToPdu() public method

Convert xml to byte array.
public XmlToPdu ( string xml ) : byte[]
xml string Converted xml.
return byte[]
        public byte[] XmlToPdu(string xml)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);
            GXDLMSXmlSettings s = new GXDLMSXmlSettings(OutputType, Hex, ShowStringAsHex, tagsByName);
            ReadAllNodes(doc, s);
            GXByteBuffer bb = new GXByteBuffer();
            GXDLMSLNParameters ln;
            GXDLMSSNParameters sn;
            switch (s.command)
            {
                case Command.InitiateRequest:
                case Command.InitiateResponse:
                    break;
                case Command.ReadRequest:
                case Command.WriteRequest:
                case Command.ReadResponse:
                case Command.WriteResponse:
                    sn = new GXDLMSSNParameters(s.settings, s.command, s.count,
                                                s.requestType, s.attributeDescriptor, s.data);
                    GXDLMS.GetSNPdu(sn, bb);
                    break;
                case Command.GetRequest:
                case Command.GetResponse:
                case Command.SetRequest:
                case Command.SetResponse:
                case Command.MethodRequest:
                case Command.MethodResponse:
                    ln = new GXDLMSLNParameters(s.settings, s.command, s.requestType,
                                                s.attributeDescriptor, s.data, 0xff);
                    GXDLMS.GetLNPdu(ln, bb);
                    break;
                case Command.GloGetRequest:
                case Command.GloGetResponse:
                case Command.GloSetRequest:
                case Command.GloSetResponse:
                case Command.GloMethodRequest:
                case Command.GloMethodResponse:
                case Command.GloReadRequest:
                case Command.GloWriteRequest:
                case Command.GloReadResponse:
                case Command.GloWriteResponse:
                    bb.SetUInt8((byte)s.command);
                    GXCommon.SetObjectCount(s.data.Size, bb);
                    bb.Set(s.data);
                    break;
                case Command.Rejected:
                    break;
                case Command.Snrm:
                    s.settings.IsServer = false;
                    bb.Set(GXDLMS.GetHdlcFrame(s.settings, (byte)Command.Snrm, null));
                    break;
                case Command.Ua:
                    break;
                case Command.Aarq:
                case Command.GloInitiateRequest:
                    GXAPDU.GenerateAarq(s.settings, s.settings.Cipher, s.data, bb);
                    break;
                case Command.Aare:
                case Command.GloInitiateResponse:
                    GXAPDU.GenerateAARE(s.settings, bb, s.result, s.diagnostic, s.settings.Cipher, s.data);
                    break;
                case Command.DisconnectRequest:
                    break;
                case Command.ReleaseRequest:
                    bb.SetUInt8((byte)s.command);
                    bb.SetUInt8(0);
                    break;
                case Command.ReleaseResponse:
                    bb.SetUInt8((byte)s.command);
                    //Len
                    bb.SetUInt8(3);
                    //BerType
                    bb.SetUInt8(BerType.Context);
                    //Len.
                    bb.SetUInt8(1);
                    bb.SetUInt8(s.reason);
                    break;
                case Command.ConfirmedServiceError:
                    break;
                case Command.ExceptionResponse:
                    break;
                case Command.GeneralBlockTransfer:
                    break;
                case Command.AccessRequest:
                    ln = new GXDLMSLNParameters(s.settings, s.command, s.requestType,
                                                s.attributeDescriptor, s.data, 0xff);
                    GXDLMS.GetLNPdu(ln, bb);
                    break;
                case Command.AccessResponse:
                    ln = new GXDLMSLNParameters(s.settings, s.command, s.requestType,
                                                s.attributeDescriptor, s.data, 0xff);
                    GXDLMS.GetLNPdu(ln, bb);
                    break;
                case Command.DataNotification:
                    ln = new GXDLMSLNParameters(s.settings, s.command, s.requestType,
                                                s.attributeDescriptor, s.data, 0xff);
                    ln.time = s.time;
                    GXDLMS.GetLNPdu(ln, bb);
                    break;
                case Command.GloGeneralCiphering:
                    break;
                case Command.GloEventNotificationRequest:
                    break;
                default:
                case Command.None:
                    throw new ArgumentException("Invalid command.");
            }
            return bb.Array();
        }