<?xml version="1.0" encoding="UTF-8"?>
<Mission xmlns="Tethys"
       xmlns:Guidance="Tethys/Guidance" 
       xmlns:Trigger="Tethys/Trigger" 
       xmlns:Units="Tethys/Units"
       xmlns:Universal="Tethys/Universal"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="Tethys http://okeanids.mbari.org/tethys/Xml/Tethys.xsd
                           Tethys/Guidance http://okeanids.mbari.org/tethys/Xml/Guidance.xsd
                           Tethys/Trigger http://okeanids.mbari.org/tethys/Xml/Trigger.xsd
                           Tethys/Units http://okeanids.mbari.org/tethys/Xml/Units.xsd
                           Tethys/Universal http://okeanids.mbari.org/tethys/Xml/Universal.xsd"
       Id="Oceans2010Test1">

<!-- Wpt1 d=42m; Wpt2 d=95m; Wpt3 d=121m -->

    <DefineArg Name="UpPitch"><Units:degree/><Value>15.0</Value></DefineArg>

    <DefineArg Name="DownPitch"><Units:degree/><Value>-15.0</Value></DefineArg>

    <DefineArg Name="Delay"><Units:second/><Value>0.0</Value></DefineArg>

    <DefineArg Name="DesDepth1"><Units:meter/><Value>14.67</Value></DefineArg>

    <DefineArg Name="AscDepth1"><Units:meter/><Value>13.05</Value></DefineArg>

    <DefineArg Name="DesDepth2"><Units:meter/><Value>12.93</Value></DefineArg>

    <DefineArg Name="AscDepth2"><Units:meter/><Value>13.05</Value></DefineArg>

    <DefineArg Name="DesDepth3"><Units:meter/><Value>12.94</Value></DefineArg>

    <DefineArg Name="AscDepth3"><Units:meter/><Value>11.10</Value></DefineArg>

    <DefineArg Name="DesDepth4"><Units:meter/><Value>11.86</Value></DefineArg>

    <DefineArg Name="AscDepth4"><Units:meter/><Value>11.08</Value></DefineArg>

    <DefineArg Name="DesDepth5"><Units:meter/><Value>11.59</Value></DefineArg>

    <DefineArg Name="AscDepth5"><Units:meter/><Value>11.30</Value></DefineArg>

    <DefineArg Name="DesDepth6"><Units:meter/><Value>10.71</Value></DefineArg>

    <DefineArg Name="AscDepth6"><Units:meter/><Value>9.01</Value></DefineArg>

    <Timeout Duration="P160M"/>

    <Guidance:AltitudeEnvelope>
        <Parallel/>
        <Setting><Guidance:AltitudeEnvelope.minAltitude/><Units:meter/><Value>7</Value></Setting>
    </Guidance:AltitudeEnvelope>

    <Guidance:DepthEnvelope>
        <Parallel/>
        <Setting><Guidance:DepthEnvelope.minDepth/><Units:meter/><Value>0</Value></Setting>
        <Setting><Guidance:DepthEnvelope.maxDepth/><Units:meter/><Value>40</Value></Setting>
    </Guidance:DepthEnvelope>

    <Guidance:OffshoreEnvelope>
        <Parallel/>
        <Setting><Guidance:OffshoreEnvelope.minOffshore/><Units:kilometer/><Value>1.0</Value></Setting>
    </Guidance:OffshoreEnvelope>

    <Insert Filename="Insert/Surface.xml" Id="SURFACECOMMS" />

    <Guidance:Buoyancy>
        <Progression/>
        <Setting><Guidance:Buoyancy.position/><Units:cubic_centimeter/><Value>300</Value></Setting>
    </Guidance:Buoyancy>

    <Aggregate Id="RunTest">

        <Sequence/>

        <Insert Filename="Insert/Science.xml"/>

        <Guidance:SetSpeed>
            <Parallel/>
            <Setting><Guidance:SetSpeed.speed/><Units:meter_per_second/><Value>1</Value></Setting>
        </Guidance:SetSpeed>

        <Guidance:Point>
            <Parallel/>
            <Setting><Guidance:Point.heading/><Units:degree/><Value>0</Value></Setting>
        </Guidance:Point>

        <Guidance:DepthEnvelope>
            <Parallel/>
            <Setting><Guidance:DepthEnvelope.minDepth/><Units:meter/><Value>5</Value></Setting>
            <Setting><Guidance:DepthEnvelope.maxDepth/><Units:meter/><Value>20</Value></Setting>
        </Guidance:DepthEnvelope>

        <Aggregate Id="ToDesDepth1">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="DownPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Lt><Units:degree/><Value>0</Value></Lt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="DesDepth1"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToAscDepth1">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="UpPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Gt><Units:degree/><Value>0</Value></Gt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="AscDepth1"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToDesDepth2">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="DownPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Lt><Units:degree/><Value>0</Value></Lt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="DesDepth2"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToAscDepth2">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="UpPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Gt><Units:degree/><Value>0</Value></Gt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="AscDepth2"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToDesDepth3">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="DownPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Lt><Units:degree/><Value>0</Value></Lt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="DesDepth3"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToAscDepth3">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="UpPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Gt><Units:degree/><Value>0</Value></Gt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="AscDepth3"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToDesDepth4">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="DownPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Lt><Units:degree/><Value>0</Value></Lt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="DesDepth4"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToAscDepth4">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="UpPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Gt><Units:degree/><Value>0</Value></Gt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="AscDepth4"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToDesDepth5">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="DownPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Lt><Units:degree/><Value>0</Value></Lt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="DesDepth5"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToAscDepth5">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="UpPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Gt><Units:degree/><Value>0</Value></Gt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="AscDepth5"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToDesDepth6">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="DownPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Lt><Units:degree/><Value>0</Value></Lt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="DesDepth6"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

        <Aggregate Id="ToAscDepth6">

            <Sequence/>

            <Guidance:Pitch>
                <Parallel/>
                <Setting><Guidance:Pitch.pitch/><Arg Name="UpPitch"/></Setting>
            </Guidance:Pitch>

            <Guidance:Wait>
                <Sequence/>
                <Break>
                    <Universal:platform_pitch_angle/>
                    <Gt><Units:degree/><Value>0</Value></Gt>
                </Break>
            </Guidance:Wait>

            <Trigger:ValueDetect>
                <Sequence/>
                <Setting><Trigger:ValueDetect.value/><Arg Name="AscDepth6"/></Setting>
            </Trigger:ValueDetect>

            <Guidance:Wait>
                <Sequence/>
                <Setting><Guidance:Wait.duration/><Arg Name="Delay"/></Setting>
            </Guidance:Wait>

        </Aggregate>

    </Aggregate>

    <Call RefId="SURFACECOMMS" />

    <Syslog>Done</Syslog>

</Mission>
