<!--============================================================
Title: UPnP AV Connection Manager Service (CM) Template

Purpose:
To identify the required/optional actions and state variables
and the required allowed values defined by this service type.

Note:
This file uses tabs (not spaces) for block indentation.
Any updates to this file should maintain this convention.
This includes disabling any automatic tab-to-space conversion
feature provided by your editor. 
================================================================-->
<scpd>
	<serviceStateTable>
		<stateVariable>
			<name>SourceProtocolInfo</name>
			<sendEventsAttribute>yes</sendEventsAttribute>
			<dataType>string</dataType>
		</stateVariable>

		<stateVariable>
			<name>SinkProtocolInfo</name>
			<sendEventsAttribute>yes</sendEventsAttribute>
			<dataType>string</dataType>
		</stateVariable>

		<stateVariable>
			<name>CurrentConnectionIDs</name>
			<sendEventsAttribute>yes</sendEventsAttribute>
			<dataType>string</dataType>
		</stateVariable>

		<stateVariable>
			<name>A_ARG_TYPE_ConnectionStatus</name>
			<sendEventsAttribute>no</sendEventsAttribute>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>OK</allowedValue>
				<allowedValue>ContentFormatMismatch</allowedValue>
				<allowedValue>InsufficientBandwidth</allowedValue>
				<allowedValue>UnreliableChannel</allowedValue>
				<allowedValue>Unknown</allowedValue>
			</allowedValueList>
		</stateVariable>

		<stateVariable>
			<name>A_ARG_TYPE_ConnectionManager</name>
			<sendEventsAttribute>no</sendEventsAttribute>
			<dataType>string</dataType>
		</stateVariable>

		<stateVariable>
			<name>A_ARG_TYPE_Direction</name>
			<sendEventsAttribute>no</sendEventsAttribute>
			<dataType>string</dataType>
			<allowedValueList>
				<allowedValue>Input</allowedValue>
				<allowedValue>Output</allowedValue>
			</allowedValueList>
		</stateVariable>

		<stateVariable>
			<name>A_ARG_TYPE_ProtocolInfo</name>
			<sendEventsAttribute>no</sendEventsAttribute>
			<dataType>string</dataType>
		</stateVariable>

		<stateVariable>
			<name>A_ARG_TYPE_ConnectionID</name>
			<sendEventsAttribute>no</sendEventsAttribute>
			<dataType>i4</dataType>
		</stateVariable>

		<stateVariable>
			<name>A_ARG_TYPE_AVTransportID</name>
			<sendEventsAttribute>no</sendEventsAttribute>
			<dataType>i4</dataType>
		</stateVariable>

		<stateVariable>
			<name>A_ARG_TYPE_RcsID</name>
			<sendEventsAttribute>no</sendEventsAttribute>
			<dataType>i4</dataType>
		</stateVariable>
	</serviceStateTable>

	<actionList>
		<action>
			<name>GetProtocolInfo</name>
			<argumentList>
				<argument>
					<name>Source</name>
					<direction>out</direction>
					<relatedStateVariable>SourceProtocolInfo</relatedStateVariable>
				</argument>
				<argument>
					<name>Sink</name>
					<direction>out</direction>
					<relatedStateVariable>SinkProtocolInfo</relatedStateVariable>
				</argument>
			</argumentList>
		</action>

		<action>
			<Optional/>
			<name>PrepareForConnection</name>
			<argumentList>
				<argument>
					<name>RemoteProtocolInfo</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_ProtocolInfo</relatedStateVariable>
				</argument>
				<argument>
					<name>PeerConnectionManager</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionManager</relatedStateVariable>
				</argument>
				<argument>
					<name>PeerConnectionID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
				</argument>
				<argument>
					<name>Direction</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_Direction</relatedStateVariable>
				</argument>
				<argument>
					<name>ConnectionID</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
				</argument>
				<argument>
					<name>AVTransportID</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_AVTransportID</relatedStateVariable>
				</argument>
				<argument>
					<name>RcsID</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_RcsID</relatedStateVariable>
				</argument>
			</argumentList>
		</action>

		<action>
			<Optional/>
			<name>ConnectionComplete</name>
			<argumentList>
				<argument>
					<name>ConnectionID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
				</argument>
			</argumentList>
		</action>

		<action>
			<name>GetCurrentConnectionIDs</name>
			<argumentList>
				<argument>
					<name>ConnectionIDs</name>
					<direction>out</direction>
					<relatedStateVariable>CurrentConnectionIDs</relatedStateVariable>
				</argument>
			</argumentList>
		</action>

		<action>
			<name>GetCurrentConnectionInfo</name>
			<argumentList>
				<argument>
					<name>ConnectionID</name>
					<direction>in</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
				</argument>
				<argument>
					<name>RcsID</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_RcsID</relatedStateVariable>
				</argument>
				<argument>
					<name>AVTransportID</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_AVTransportID</relatedStateVariable>
				</argument>
				<argument>
					<name>ProtocolInfo</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_ProtocolInfo</relatedStateVariable>
				</argument>
				<argument>
					<name>PeerConnectionManager</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionManager</relatedStateVariable>
				</argument>
				<argument>
					<name>PeerConnectionID</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionID</relatedStateVariable>
				</argument>
				<argument>
					<name>Direction</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_Direction</relatedStateVariable>
				</argument>
				<argument>
					<name>Status</name>
					<direction>out</direction>
					<relatedStateVariable>A_ARG_TYPE_ConnectionStatus</relatedStateVariable>
				</argument>
			</argumentList>
		</action>
	</actionList>
</scpd>
