using MECF.Framework.Common.Device.Festo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace MECF.Framework.Common.Device.Wago
{
    public class WagoDeviceConfig
    {
        [XmlAttribute(AttributeName = "Module", Form = XmlSchemaForm.Unqualified, DataType = "string")]
        public string Module { get; set; }

        [XmlAttribute(AttributeName = "IpAddress", Form = XmlSchemaForm.Unqualified, DataType = "string")]
        public string IpAddress { get; set; }

        [XmlAttribute(AttributeName = "Port", Form = XmlSchemaForm.Unqualified, DataType = "int")]
        public int Port { get; set; }

        [XmlAttribute(AttributeName = "SendTimeout", Form = XmlSchemaForm.Unqualified, DataType = "int")]
        public int SendTimeout { get; set; }

        [XmlAttribute(AttributeName = "RecvTimeout", Form = XmlSchemaForm.Unqualified, DataType = "int")]
        public int RecvTimeout { get; set; }


        [XmlAttribute(AttributeName = "Channel", Form = XmlSchemaForm.Unqualified, DataType = "int")]
        public int Channel { get; set; }

        [XmlElement(Type = typeof(WagoDigIn), ElementName = "Dig_In", IsNullable = false, Form = XmlSchemaForm.Qualified)]
        public WagoDigIn WagoDigIn { get; set; }
        [XmlElement(Type = typeof(WagoDigOut), ElementName = "Dig_Out", IsNullable = false, Form = XmlSchemaForm.Qualified)]
        public WagoDigOut WagoDigOut { get; set; }

        [XmlElement(Type = typeof(WagoAnoIn), ElementName = "Ano_In", IsNullable = false, Form = XmlSchemaForm.Qualified)]
        public WagoAnoIn WagoAnoIn { get; set; }

        [XmlElement(Type = typeof(WagoAnoOut), ElementName = "Ano_Out", IsNullable = false, Form = XmlSchemaForm.Qualified)]
        public WagoAnoOut WagoAnoOut { get; set; }
    }
}