<?xml version="1.0"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
   <specVersion>
      <major>1</major>
      <minor>0</minor>
   </specVersion>

   <actionList>
      <action>
         <name>GetDeviceStatus</name>
         <argumentList>
            <argument>
               <name>DeviceStatus</name>
               <direction>out</direction>
               <relatedStateVariable>DeviceStatus</relatedStateVariable>
            </argument>
         </argumentList>
      </action>

      <action>
        <name>Ping</name>
        <argumentList>
            <argument>
               <name>Host</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_Host</relatedStateVariable>
            </argument>
            <argument>
               <name>NumberOfRepetitions</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_UInt</relatedStateVariable>
            </argument>
            <argument>
               <name>Timeout</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_MSecs</relatedStateVariable>
            </argument>
            <argument>
               <name>DataBlockSize</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_UShort</relatedStateVariable>
            </argument>
            <argument>
               <name>DSCP</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_DSCP</relatedStateVariable>
            </argument>
            <argument>
               <name>TestID</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>GetPingResult</name>
        <argumentList>
            <argument>
               <name>TestID</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
            <argument>
               <name>Status</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_PingStatus</relatedStateVariable>
            </argument>
            <argument>
               <name>AdditionalInfo</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_String</relatedStateVariable>
            </argument>
            <argument>
               <name>SuccessCount</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_UInt</relatedStateVariable>
            </argument>
            <argument>
               <name>FailureCount</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_UInt</relatedStateVariable>
            </argument>
            <argument>
               <name>AverageResponseTime</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_MSecs</relatedStateVariable>
            </argument>
            <argument>
               <name>MinimumResponseTime</name>
               <direction>out</direction>
	    <relatedStateVariable>A_ARG_TYPE_MSecs</relatedStateVariable>
            </argument>
            <argument>
               <name>MaximumResponseTime</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_MSecs</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>NSLookup</name>
        <argumentList>
            <argument>
               <name>HostName</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_HostName</relatedStateVariable>
            </argument>
            <argument>
               <name>DNSServer</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_Host</relatedStateVariable>
            </argument>
            <argument>
               <name>NumberOfRepetitions</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_UInt</relatedStateVariable>
            </argument>
            <argument>
               <name>Timeout</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_MSecs</relatedStateVariable>
            </argument>
            <argument>
               <name>TestID</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>GetNSLookupResult</name>
        <argumentList>
            <argument>
               <name>TestID</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
            <argument>
               <name>Status</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_NSLookupStatus</relatedStateVariable>
            </argument>
            <argument>
               <name>AdditionalInfo</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_String</relatedStateVariable>
            </argument>
            <argument>
               <name>SuccessCount</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_UInt</relatedStateVariable>
            </argument>
            <argument>
               <name>Result</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_NSLookupResult</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>Traceroute</name>
        <argumentList>
            <argument>
               <name>Host</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_Host</relatedStateVariable>
            </argument>
            <argument>
               <name>Timeout</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_MSecs</relatedStateVariable>
            </argument>
            <argument>
               <name>DataBlockSize</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_UShort</relatedStateVariable>
            </argument>
            <argument>
               <name>MaxHopCount</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_UInt</relatedStateVariable>
            </argument>
            <argument>
               <name>DSCP</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_DSCP</relatedStateVariable>
            </argument>
            <argument>
               <name>TestID</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>GetTracerouteResult</name>
        <argumentList>
            <argument>
               <name>TestID</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
            <argument>
               <name>Status</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_TracerouteStatus</relatedStateVariable>
            </argument>
            <argument>
               <name>AdditionalInfo</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_String</relatedStateVariable>
            </argument>
            <argument>
               <name>ResponseTime</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_MSecs</relatedStateVariable>
            </argument>
            <argument>
               <name>HopHosts</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_Hosts</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>GetTestIDs</name>
        <argumentList>
            <argument>
               <name>TestIDs</name>
               <direction>out</direction>
               <relatedStateVariable>TestIDs</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>GetActiveTestIDs</name>
        <argumentList>
            <argument>
               <name>TestIDs</name>
               <direction>out</direction>
               <relatedStateVariable>ActiveTestIDs</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>GetTestInfo</name>
        <argumentList>
            <argument>
               <name>TestID</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
            <argument>
               <name>Type</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_TestType</relatedStateVariable>
            </argument>
            <argument>
               <name>State</name>
               <direction>out</direction>
               <relatedStateVariable>A_ARG_TYPE_TestState</relatedStateVariable>
            </argument>
        </argumentList>
      </action>

      <action>
        <name>CancelTest</name>
        <argumentList>
            <argument>
               <name>TestID</name>
               <direction>in</direction>
               <relatedStateVariable>A_ARG_TYPE_TestID</relatedStateVariable>
            </argument>
        </argumentList>
      </action>
   </actionList>

   <serviceStateTable>
      <stateVariable sendEvents="yes">
         <name>DeviceStatus</name>
         <dataType>string</dataType>
      </stateVariable>

      <stateVariable sendEvents="yes">
         <name>TestIDs</name>
         <dataType>string</dataType>
         <defaultValue/>
      </stateVariable>

      <stateVariable sendEvents="yes">
         <name>ActiveTestIDs</name>
         <dataType>string</dataType>
         <defaultValue/>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_String</name>
         <dataType>string</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_UShort</name>
         <dataType>ui2</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_UInt</name>
         <dataType>ui4</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_DateTime</name>
         <dataType>dateTime.tz</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_MSecs</name>
         <dataType>ui4</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_TestID</name>
         <dataType>ui4</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_TestType</name>
         <dataType>string</dataType>
         <allowedValueList>
            <allowedValue>NSLookup</allowedValue>
            <allowedValue>Ping</allowedValue>
            <allowedValue>Traceroute</allowedValue>
         </allowedValueList>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_TestState</name>
         <dataType>string</dataType>
         <allowedValueList>
            <allowedValue>Requested</allowedValue>
            <allowedValue>InProgress</allowedValue>
            <allowedValue>Canceled</allowedValue>
            <allowedValue>Completed</allowedValue>
        </allowedValueList>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_DSCP</name>
         <dataType>ui1</dataType>
         <allowedValueRange>
            <minimum>0</minimum>
            <maximum>63</maximum>
         </allowedValueRange>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_Host</name>
         <dataType>string</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_Hosts</name>
         <dataType>string</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_HostName</name>
         <dataType>string</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_PingStatus</name>
         <dataType>string</dataType>
         <allowedValueList>
            <allowedValue>Success</allowedValue>
            <allowedValue>Error_CannotResolveHostName</allowedValue>
            <allowedValue>Error_Internal</allowedValue>
            <allowedValue>Error_Other</allowedValue>
         </allowedValueList>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_NSLookupStatus</name>
         <dataType>string</dataType>
         <allowedValueList>
            <allowedValue>Success</allowedValue>
            <allowedValue>Error_DNSServerNotResolved</allowedValue>
            <allowedValue>Error_Internal</allowedValue>
            <allowedValue>Error_Other</allowedValue>
         </allowedValueList>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_NSLookupResult</name>
         <dataType>string</dataType>
      </stateVariable>

      <stateVariable sendEvents="no">
         <name>A_ARG_TYPE_TracerouteStatus</name>
         <dataType>string</dataType>
         <allowedValueList>
            <allowedValue>Success</allowedValue>
            <allowedValue>Error_CannotResolveHostName</allowedValue>
            <allowedValue>Error_MaxHopCountExceeded</allowedValue>
            <allowedValue>Error_Internal</allowedValue>
            <allowedValue>Error_Other</allowedValue>
         </allowedValueList>
      </stateVariable>
   </serviceStateTable>
</scpd>
