<?xml version="1.0" encoding="UTF-8"?>
<DeviceDescription xmlns="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd" xmlns:ts="http://www.3s-software.com/schemas/TargetSettings-0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Types namespace="local">
    <BitfieldType basetype="std:DWORD" name="FLAGS_SupportedFunctions">
      <Component identifier="DHCP_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:DHCP_Supported">DHCP</VisibleName>
      </Component>
      <Component identifier="BOOTP_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:BOOTP_Supported">BOOTP</VisibleName>
      </Component>
      <Component identifier="StaticIP_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:StaticIP_Supported">Static IP</VisibleName>
      </Component>
      <Component identifier="SubnetMask_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:SubnetMask_Supported">SubnetMask</VisibleName>
      </Component>
      <Component identifier="GatewayAddr_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:GatewayAddr_Supported">Gateway Address</VisibleName>
      </Component>
      <Component identifier="Eth_Speed_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:Eth_Speed_Supported">Speed</VisibleName>
      </Component>
      <Component identifier="Eth_Duplex_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:Eth_Duplex_Supported">Duplex</VisibleName>
      </Component>
      <Component identifier="Opt_AutoReestablish_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:Opt_AutoReestablish_Supported">Auto-Reestablish Connections</VisibleName>
      </Component>
      <Component identifier="Eth_SystemSettings_Supported" type="std:BOOL">
        <Default />
        <VisibleName name="localStrings:Eth_SystemSettings_Supported">Read communication settings from Ethernet Node</VisibleName>
      </Component>
    </BitfieldType>
    <StructType name="Options">
      <Component identifier="AutoReestablishConnections" type="std:BOOL">
        <Default />
        <VisibleName name="local:AutoReestablishConnections">Auto-Reestablish Connections</VisibleName>
        <Description name="local:AutoReestablishConnections">Reestablish connections automatically.</Description>
      </Component>
    </StructType>
    <StructType name="RemoteAdapterInstance">
      <Component identifier="FBType" type="std:STRING">
        <Default />
        <VisibleName name="local:RemoteAdapterFBName">RemoteAdapter Functionblock Name</VisibleName>
        <Description name="local:RemoteAdapterFBName">Function block name of the RemoteAdapter. This has to be an existing fb of one of the required libs.</Description>
      </Component>
      <Component identifier="FBDiagType" type="std:STRING">
        <Default />
        <VisibleName name="local:RemoteAdapterFBNameDiag">RemoteAdapter Diagnosis Functionblock Name</VisibleName>
        <Description name="local:RemoteAdapterFBNameDiag">Diagnosis Function block name of the RemoteAdapter. This has to be an existing diag fb of one of the required libs.</Description>
      </Component>
      <Component identifier="InitMethodName" type="std:STRING">
        <Default />
        <VisibleName name="local:InitMethodName">Initialize Method</VisibleName>
        <Description name="local:InitMethodName">Name of the initialize method.</Description>
      </Component>
      <Component identifier="RequiredLib" type="std:STRING">
        <Default />
        <VisibleName name="local:RequiredLib">Required Library</VisibleName>
        <Description name="local:RequiredLib">Lib to be added as required lib to the Remote Adapter Devices.</Description>
      </Component>
    </StructType>
    <StructType name="ScannerDiag">
      <Component identifier="CommunicationState" type="std:UDINT">
        <Default />
        <VisibleName name="local:ScannerDiag.CommunicationState">CommunicationState</VisibleName>
        <Description name="local:ScannerDiag.CommunicationStateDesc">0 = Unknown, 1 = Not Configured, 2 = Stop, 3 = Idle, 4 = Operate</Description>
      </Component>
      <Component identifier="Version" type="std:UINT">
        <Default />
        <VisibleName name="local:ScannerDiag.Version">Version</VisibleName>
        <Description name="local:ScannerDiag.VersionDesc">Version number of diagnosis structure</Description>
      </Component>
      <Component identifier="Watchdog" type="std:UINT">
        <Default />
        <VisibleName name="local:ScannerDiag.Watchdog">Watchdog</VisibleName>
        <Description name="local:ScannerDiag.WatchdogDesc">Configured Watchdog Timeout</Description>
      </Component>
      <Component identifier="ErrorCount" type="std:UDINT">
        <Default />
        <VisibleName name="local:ScannerDiag.ErrorCount">ErrorCount</VisibleName>
        <Description name="local:ScannerDiag.ErrorCountDesc">Total number of detected errors since startup</Description>
      </Component>
      <Component identifier="SlaveState" type="std:UDINT">
        <Default />
        <VisibleName name="local:ScannerDiag.SlaveState">SlaveState</VisibleName>
        <Description name="local:ScannerDiag.ErrorCountDesc">0 = Unknown, 1 = OK, 2 = Failed, 3 = Warning</Description>
      </Component>
      <Component identifier="NumConfigSlaves" type="std:UDINT">
        <Default />
        <VisibleName name="local:ScannerDiag.NumConfigSlaves">NumConfigSlaves</VisibleName>
        <Description name="local:ScannerDiag.NumConfigSlavesDesc">Number of configured slaves</Description>
      </Component>
      <Component identifier="NumActiveSlaves" type="std:UDINT">
        <Default />
        <VisibleName name="local:ScannerDiag.NumActiveSlaves">NumActiveSlaves</VisibleName>
        <Description name="local:ScannerDiag.NumActiveSlavesDesc">Number of active slaves</Description>
      </Component>
      <Component identifier="NumDiagSlaves" type="std:UDINT">
        <Default />
        <VisibleName name="local:ScannerDiag.NumDiagSlaves">NumDiagSlaves</VisibleName>
        <Description name="local:ScannerDiag.NumDiagSlavesDesc">Number of slaves, reporting diagnostic issues. </Description>
      </Component>
    </StructType>
  </Types>
  <Files namespace="local">
    <File identifier="EDSFile" fileref="local">
      <LocalFile>CODESYS_EtherNetIP_Scanner.eds</LocalFile>
    </File>
    <File fileref="local" identifier="EtherNetIPScannerStrings">
      <LocalFile>EtherNetIPScannerStrings.xml</LocalFile>
    </File>
  </Files>
  <Device>
    <DeviceIdentification>
      <Type>32912</Type>
      <!--32912 = 0x8090-->
      <Id>1631 2030</Id>
      <!-- 8240 = 0x2030-->
      <Version>3.5.15.0</Version>
    </DeviceIdentification>
    <DeviceInfo>
      <Name name="local:TypeName">EtherNet/IP Scanner</Name>
      <Description name="local:typedescription">EtherNet/IP Scanner</Description>
      <Vendor name="local:VendorName">INVT</Vendor>
      <OrderNumber>1</OrderNumber>
      <AdditionalFiles>
        <File key="ExternalStrings" name="local:EtherNetIPScannerStrings">EtherNetIPScannerStrings.xml</File>
      </AdditionalFiles>
    </DeviceInfo>
    <Connector role="child" hostpath="-1" explicit="false" connectorId="1" interface="Common.Ethernet" moduleType="100">
      <Slot count="1" allowEmpty="false">
      </Slot>
      <InterfaceName name="local:NONE">EtherNet/IP Scanner</InterfaceName>
    </Connector>
    <Connector role="parent" alwaysmapping="true" hostpath="1" explicit="false" connectorId="2" interface="Common.EthernetIPScanner" moduleType="32912">
      <InterfaceName name="local:NONE">EtherNet/IP Scanner</InterfaceName>
      <Var max="512" />
      <DriverInfo needsBusCycle="true">
      </DriverInfo>
      <HostParameterSet>
        <ParameterSection>
          <Name name="local:SupportedFunctions">Supported Functions</Name>
          <Parameter ParameterId="0" type="local:FLAGS_SupportedFunctions">
            <Attributes offlineaccess="read" onlineaccess="read" download="false" />
            <Default>
              <Element name="DHCP_Supported">FALSE</Element>
              <Element name="BOOTP_Supported">FALSE</Element>
              <Element name="StaticIP_Supported">TRUE</Element>
              <Element name="SubnetMask_Supported">FALSE</Element>
              <Element name="GatewayAddr_Supported">FALSE</Element>
              <Element name="Eth_Speed_Supported">FALSE</Element>
              <Element name="Eth_Duplex_Supported">FALSE</Element>
              <Element name="Opt_AutoReestablish_Supported">TRUE</Element>
              <Element name="Eth_SystemSettings_Supported">TRUE</Element>
            </Default>
            <Name name="local:SupportedFunctions">Supported Functions</Name>
          </Parameter>
        </ParameterSection>
        <Parameter ParameterId="1" type="std:DWORD">
          <Attributes download="true" offlineaccess="none" />
          <Default>0</Default>
          <Name name="local:Dummy1">Dummy Parameter</Name>
          <Description name="local:Dummy1">For internal use</Description>
        </Parameter>
        <Parameter ParameterId="12" type="std:STRING">
          <Attributes channel="none" download="true" offlineaccess="read" onlineaccess="read" />
          <Default>'3S - Smart Software Solutions GmbH'</Default>
          <Name name="local:Id2">Vendor</Name>
          <Description name="local:Id393218.Desc">Vendor of the EtherNet/IP Scanner device</Description>
        </Parameter>
        <Parameter ParameterId="13" type="std:STRING">
          <Attributes channel="none" download="true" offlineaccess="read" onlineaccess="read" />
          <Default>'EtherNet/IP Scanner'</Default>
          <Name name="local:Id3">ModelName</Name>
          <Description name="local:Id393219.Desc">Model name of the EtherNet/IP Scanner device</Description>
        </Parameter>
        <Parameter ParameterId="34256" type="std:ARRAY[0..3] OF BYTE">
          <Attributes download="true" offlineaccess="readwrite" />
          <Default>[192,168,0,1]</Default>
          <Name name="local:IPAddress">IPAddress</Name>
          <Description name="local:IPAddress">The ip address for the scanner</Description>
        </Parameter>
        <Parameter ParameterId="34257" type="std:ARRAY[0..3] OF BYTE">
          <Attributes download="true" offlineaccess="readwrite" />
          <Default>[255,255,255,0]</Default>
          <Name name="local:SubnetMask">SubnetMask</Name>
          <Description name="local:SubnetMask">The subnet mask for the scanner</Description>
        </Parameter>
        <Parameter ParameterId="34258" type="std:ARRAY[0..3] OF BYTE">
          <Attributes download="true" offlineaccess="readwrite" />
          <Default>[0,0,0,0]</Default>
          <Name name="local:GatewayAddress">GatewayAddress</Name>
          <Description name="local:GatewayAddress">The gateway address for the scanner</Description>
        </Parameter>
        <Parameter ParameterId="34273" type="std:DWORD">
          <Attributes download="true" offlineaccess="readwrite" />
          <Default>1043</Default>
          <Name name="local:TCPFlags">TCPFlags</Name>
          <Description name="local:TCPFlags">TCPFlags</Description>
        </Parameter>
        <Parameter ParameterId="2000" type="std:DWORD">
          <Attributes download="true" offlineaccess="read" />
          <Default>1285</Default>
          <Name name="local:VendorCode">Vendor Code</Name>
          <Description name="local:VendorCode">Vendor Code</Description>
        </Parameter>
        <Parameter ParameterId="2001" type="std:DWORD">
          <Attributes download="true" offlineaccess="read" />
          <Default>12</Default>
          <Name name="local:ProductType">Product Type</Name>
          <Description name="local:ProductType">Product Type</Description>
        </Parameter>
        <Parameter ParameterId="2002" type="std:DWORD">
          <Attributes download="true" offlineaccess="read" />
          <Default>100</Default>
          <Name name="local:ProductCode">Product Code</Name>
          <Description name="local:ProductCode">Product Code</Description>
        </Parameter>
        <Parameter ParameterId="2003" type="std:DWORD">
          <Attributes download="true" offlineaccess="read" />
          <Default>1</Default>
          <Name name="local:MajorRevision">Major Revision</Name>
          <Description name="local:MajorRevision">Major Revision</Description>
        </Parameter>
        <Parameter ParameterId="2004" type="std:DWORD">
          <Attributes download="true" offlineaccess="read" />
          <Default>1</Default>
          <Name name="local:MinorRevision">Minor Revision</Name>
          <Description name="local:MinorRevision">Minor Revision</Description>
        </Parameter>
        <Parameter ParameterId="342005" type="std:DWORD">
          <Attributes download="true" offlineaccess="readwrite" />
          <Default>16#00000815</Default>
          <Name name="local:SerialNumber">Serial Number</Name>
          <Description name="local:SerialNumber">Serial number of EIP scanner. Must be unique. Default is 16#0815. If default is used, the last 4 bytes of the MAC address of the corresponding Ethernet interface are used by the IEC driver instead.</Description>
        </Parameter>
        <Parameter ParameterId="1879048193" type="std:WORD">
          <Attributes channel="none" download="true" offlineaccess="readwrite" onlineaccess="read" />
          <Default>0</Default>
          <Name name="local:Id1879048193">Watchdog</Name>
          <Description name="local:1879048193.Desc">Master watchdog (deactivated)</Description>
        </Parameter>
        <Parameter ParameterId="342006" type="local:ScannerDiag">
          <Attributes channel="diag" download="true" offlineaccess="read" onlineaccess="read" />
          <Default>
            <Element name="CommunicationState">0</Element>
            <Element name="Version">0</Element>
            <Element name="Watchdog">0</Element>
            <Element name="ErrorCount">0</Element>
            <Element name="SlaveState">0</Element>
            <Element name="NumConfigSlaves">0</Element>
            <Element name="NumActiveSlaves">0</Element>
            <Element name="NumDiagSlaves">0</Element>
          </Default>
          <Name name="local:2006">ScannerDiag</Name>
          <Description name="local:2006.Desc">EtherNet/IP Scanner diagnostic information</Description>
        </Parameter>
        <Parameter ParameterId="342007" type="local:RemoteAdapterInstance">
          <Attributes download="false" offlineaccess="read" />
          <Default>
            <Element name="FBType">RemoteAdapter</Element>
            <Element name="FBDiagType">RemoteAdapter_diag</Element>
            <Element name="InitMethodName">Initialize</Element>
            <Element name="RequiredLib">IoDrvEtherNetIP</Element>
          </Default>
          <Name name="local:2007">RemoteAdapterInstance</Name>
          <Description name="local:2007.Desc">Required Library which contains the RemoteAdapter and the RemoteAdapterDiag FBs.</Description>
        </Parameter>
        <Parameter ParameterId="342008" type="local:Options">
          <Attributes download="true" offlineaccess="readwrite" onlineaccess="read" />
          <Default>
            <Element name="AutoReestablishConnections">TRUE</Element>
          </Default>
          <Name name="local:2008">Options</Name>
          <Description name="local:2006.Desc">Scanner Options</Description>
        </Parameter>
        <Parameter ParameterId="347761" type="std:BOOL">
          <Attributes offlineaccess="none" onlineaccess="none" download="true" functional="false" channel="diagack" />
          <Default>FALSE</Default>
          <Name name="local:DiagAck">Diag Acknowledge</Name>
          <Description name="local:DiagAck">Diag Acknowledge</Description>
          <Custom />
        </Parameter>
        <Parameter ParameterId="805306369" type="std:BOOL">
          <Attributes offlineaccess="none" download="false" />
          <Default>true</Default>
          <Name name="local:Parameter.ShowLoggerPage">ShowLoggerPage</Name>
          <Description name="local:Parameter.ShowLoggerPageDesc">Show the logger page for the scanner</Description>
        </Parameter>
      </HostParameterSet>
      <!-- 			<Appearance>
				<ShowEditor>ScannerEditorPage</ShowEditor>
				<ShowEditor>LoggerPage</ShowEditor>
				<ShowEditor>ParameterEditor</ShowEditor>
				<ShowEditor>IOMappingEditor</ShowEditor>
				<ShowEditor>StatusPage</ShowEditor>
				<ShowEditor>DeviceInformation</ShowEditor>
			</Appearance> -->
    </Connector>
    <ExtendedSettings>
      <ts:TargetSettings>
        <ts:section name="deviceconfiguration">
          <ts:setting name="createBitChannels" type="boolean" access="visible">
            <ts:value>1</ts:value>
          </ts:setting>
        </ts:section>
        <ts:section name="library-management">
          <ts:section name="placeholder-libraries">
            <!-- **********************************************  EtherNet/IP Scanner Placeholder  ***************************************************** -->
            <ts:setting name="IoDrvEtherNetIP" type="string" access="visible">
              <ts:value>IoDrvEtherNetIP, 3.5.15.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="IoDrvEtherNetIPAdapter" type="string" access="visible">
              <ts:value>IoDrvEtherNetIPAdapter, 3.5.15.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="CIP Object" type="string" access="visible">
              <ts:value>CIP Object, 3.5.15.10 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="CIP Encapsulation" type="string" access="visible">
              <ts:value>CIP Encapsulation Layer, 3.5.15.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="UDP" type="string" access="visible">
              <ts:value>UDP, 3.5.15.20 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="TCP" type="string" access="visible">
              <ts:value>TCP, 3.5.15.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="IoDrvEthernet" type="string" access="visible">
              <ts:value>IoDrvEthernet, 3.5.15.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="IoDriver Utility" type="string" access="visible">
              <ts:value>IoDrvUtility, 3.5.15.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="EtherNetIP Services" type="string" access="visible">
              <ts:value>EtherNetIP Services, 3.5.14.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
            <ts:setting name="MemoryUtils" type="string" access="visible">
              <ts:value>MemoryUtils, 3.5.15.0 (3S - Smart Software Solutions GmbH)</ts:value>
            </ts:setting>
          </ts:section>
        </ts:section>
      </ts:TargetSettings>
    </ExtendedSettings>
    <CompatibleVersions>
      <Version>3.5.*.*</Version>
    </CompatibleVersions>
  </Device>
</DeviceDescription>