<?xml version="1.0" encoding="iso-8859-1"?>

<!--
	Copyright 2007 by Pocomatic Software LLC, All Rights Reserved.

	This example shows how to use a user defined DSL schema to wire up 
	a OMG RTC (Robotic Technology Component) application in PocoCapsule/C++.
-->

<?xml-transform type="text/xsl" href="rtc-application2poco.xsl"?>

<!DOCTYPE rtc-application SYSTEM "file:rtc-application.dtd">

<rtc-application>
	<load library="./stubs.$dll"/>
	<load library="./VehicleControllerImpl.$dll"/>
	<load library="./ServoComponentImpl.$dll"/>
	<load library="./BumperSensorComponentImpl.$dll"/>
	<load library="./RangeScannerComponentImpl.$dll"/>
	<load library="./reflx.$dll"/>

	<component id="vehicle-controller"
	           class="VehicleControllerImpl"
		   name="vehicle controller"
	           lazy-init="false">
		<uses receptacle="LeftWheelControlOut"
		      facet="Control"
                      type="*sample::ServoControl_ptr"
		      provider="left-wheel"/>
		<uses receptacle="RightWheelControlOut" 
		      facet="Control" 
                      type="*sample::ServoControl_ptr"
		      provider="right-wheel"/>
		<uses receptacle="ScanCommandOut"
		      facet="Control"
                      type="*sample::ScanControl_ptr"
		      provider="laser-ranger-finder"/>
		<uses receptacle="StatusOut" provider="log-and-display"/>
		<listens
		      sink="LeftWheelSpeedDataIn"
		      type="*sample::SpeedDataConsumer_ptr"
		      receptacle="SpeedDataOut"
		      emitter="left-wheel"/> 
		<listens
		      sink="RightWheelSpeedDataIn"
		      type="*sample::SpeedDataConsumer_ptr"
		      receptacle="SpeedDataOut"
		      emitter="right-wheel"/>
		<listens
		      sink="FrontBumperDataIn"
		      receptacle="SensorDataOut"
		      type="*sample::BumperDataConsumer_ptr"
		      emitter="front-bumper"/>
		<listens
		      sink="RearBumperDataIn"
		      type="*sample::BumperDataConsumer_ptr"
		      receptacle="SensorDataOut"
		      emitter="rear-bumper"/>
		<listens
		      sink="RangeScanDataIn"
		      type="*sample::RangeScanDataConsumer_ptr"
		      receptacle="RangeScanDataOut"
		      emitter="laser-ranger-finder"/>
	</component>

	<component id="left-wheel"
	           class="ServoComponentImpl"
		   name="left wheel servo"/>

	<component id="right-wheel"
	           class="ServoComponentImpl"
	           name="right wheel servo"/>

	<component id="front-bumper"
	           class="BumperSensorComponentImpl"
		   name="front bumper sensor"/>
		
	<component id="rear-bumper"
	           class="BumperSensorComponentImpl"
	           name="rear bumper sensor"/>

	<component id="laser-ranger-finder"
	           class="RangeScannerComponentImpl"
		   name="laser ranger scanner"/>

	<component id="log-and-display"
	           class="LogAndDisplayImpl"
	           name="log and display"/>

</rtc-application>

