<?xml version="1.0" encoding="UTF-8"?>
<Mission xmlns="Tethys"
xmlns:Derivation="Tethys/Derivation"
xmlns:Guidance="Tethys/Guidance"
xmlns:Science="Tethys/Science"
xmlns:Sensor="Tethys/Sensor"
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/Derivation http://okeanids.mbari.org/tethys/Xml/Derivation.xsd
Tethys/Guidance http://okeanids.mbari.org/tethys/Xml/Guidance.xsd
Tethys/Science http://okeanids.mbari.org/tethys/Xml/Science.xsd
Tethys/Sensor http://okeanids.mbari.org/tethys/Xml/Sensor.xsd
Tethys/Units http://okeanids.mbari.org/tethys/Xml/Units.xsd
Tethys/Universal http://okeanids.mbari.org/tethys/Xml/Universal.xsd"
Id="sensor_check">

    <DefineArg Name="MissionTimeout"><Description>
        Maximum mission length.
    </Description><Units:minute/><Value>15</Value></DefineArg>

    <DefineArg Name="WaitDuration"><Description>
        How long to pause between sensor updates.
    </Description><Units:second/><Value>5</Value></DefineArg>

    <Timeout Duration="MissionTimeout"/>

    <Aggregate Id="CheckSensors">

        <Sequence Repeat="4096"/>

        <Aggregate Id="Onboard">

            <Sequence/>

            <SendData Service="Express">
                <Sensor:Onboard.Pressure/><Units:atmosphere/>
                <Sensor:Onboard.Temperature/><Units:celsius/>
                <Sensor:Onboard.Humidity/><Units:percent/>
            </SendData>

            <Syslog Severity="Important">Pressure: <Sensor:Onboard.Pressure/><Units:atmosphere/> [0.6 atm]; Temperature: <Sensor:Onboard.Temperature/><Units:celsius/> [n/a degC]; Humidity: <Sensor:Onboard.Humidity/><Units:percent/> [20 %]</Syslog>

        </Aggregate>

        <Aggregate Id="AHRS_sp3003D">

            <When>
                <Sensor:AHRS_sp3003D.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:AHRS_sp3003D.platform_magnetic_orientation/><Units:degree/>
                <Sensor:AHRS_sp3003D.platform_orientation/><Units:degree/>
            </SendData>

            <Syslog Severity="Important">heading: <Sensor:AHRS_sp3003D.platform_orientation/><Units:degree/></Syslog>

        </Aggregate>

        <Aggregate Id="PNI_TCM">

            <When>
                <Sensor:PNI_TCM.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:PNI_TCM.platform_magnetic_orientation/><Units:degree/>
                <Sensor:PNI_TCM.platform_orientation/><Units:degree/>
                <Sensor:PNI_TCM.platform_pitch_angle/><Units:degree/>
                <Sensor:PNI_TCM.platform_roll_angle/><Units:degree/>
            </SendData>

            <Syslog Severity="Important">heading: <Sensor:PNI_TCM.platform_orientation/><Units:degree/></Syslog>

        </Aggregate>

        <Aggregate Id="Depth_Keller">

            <When>
                <Sensor:Depth_Keller.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:Depth_Keller.sea_water_pressure/><Units:atmosphere/>
                <Sensor:Depth_Keller.depth/><Units:meter/>
            </SendData>

            <Syslog Severity="Important">depth: <Sensor:Depth_Keller.depth/><Units:meter/></Syslog>

        </Aggregate>

        <Aggregate Id="DropWeight">

            <When>
                <Sensor:DropWeight.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:DropWeight.dropWeightState/><Units:bool/>
            </SendData>

            <Syslog Severity="Important">DropWeight: <Sensor:DropWeight.dropWeightState/><Units:bool/></Syslog>

        </Aggregate>

        <Aggregate Id="DVL_micro">

            <When>
                <Sensor:DVL_micro.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:DVL_micro.height_above_sea_floor/><Units:meter/>
                <Sensor:DVL_micro.platform_x_velocity_wrt_ground/><Units:meter_per_second/>
                <Sensor:DVL_micro.platform_y_velocity_wrt_ground/><Units:meter_per_second/>
                <Sensor:DVL_micro.platform_z_velocity_wrt_ground/><Units:meter_per_second/>
                <Sensor:DVL_micro.platform_orientation/><Units:degree/>
                <Sensor:DVL_micro.platform_pitch_angle/><Units:degree/>
                <Sensor:DVL_micro.platform_roll_angle/><Units:degree/>
            </SendData>

            <Syslog Severity="Important">DVL altitude: <Sensor:DVL_micro.height_above_sea_floor/><Units:meter/></Syslog>

            <Syslog Severity="Important">DVL velocity: <Sensor:DVL_micro.platform_x_velocity_wrt_ground/><Units:meter_per_second/>, <Sensor:DVL_micro.platform_y_velocity_wrt_ground/><Units:meter_per_second/>, <Sensor:DVL_micro.platform_z_velocity_wrt_ground/><Units:meter_per_second/></Syslog>

            <Syslog Severity="Important">DVL heading: <Sensor:DVL_micro.platform_orientation/><Units:degree/></Syslog>

        </Aggregate>

        <Aggregate Id="Rowe_600">

            <When>
                <Sensor:Rowe_600.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:Rowe_600.height_above_sea_floor/><Units:meter/>
            </SendData>

            <Syslog Severity="Important">DVL altitude: <Sensor:Rowe_600.height_above_sea_floor/><Units:meter/></Syslog>

        </Aggregate>

<!-- TODO: DAT & ATM -->

<!--
        <Aggregate Id="DAT_and_Tracking">

            <When>
                <Sensor:DAT.loadAtStartup/>
            </When>

    <Derivation:Tracking>                                                     
        <Parallel/>                                                           
        <Setting><Derivation:Tracking.contactLabelSetting/><Units:count/><Value>0</Value></Setting>
        <Setting><Derivation:Tracking.numberOfSamplesSetting/><Units:count/><Value>1</Value></Setting>
        <Setting><Derivation:Tracking.updatePeriodSetting/><Units:second/><Value>20</Value></Setting>
    </Derivation:Tracking>

            <Guidance:Wait>                                                       
            <Sequence/>                                                       
            <Setting><Guidance:Wait.duration/><Units:minute/><Value>1</Value></Setting>
        </Guidance:Wait> 

            <SendData Service="Express">
                <Sensor:DAT.range/><Units:meter/>
<Derivation:Tracking.contact_latitude/><Units:degree/>        
                <Derivation:Tracking.contact_longitude/><Units:degree/>       
                <Derivation:Tracking.contact_depth/><Units:meter/>            
                <Derivation:Tracking.range_to_contact/><Units:meter/>         
                <Derivation:Tracking.heading_to_contact/><Units:degree/> 
            </SendData>

            <Syslog Severity="Important">DAT range: <Sensor:DAT.range/><Units:meter/></Syslog>

        </Aggregate>
-->

        <Aggregate Id="SCPI">

            <When>
                <Sensor:SCPI.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:SCPI.sampleSCPI/><Units:bool/>
            </SendData>

            <Syslog Severity="Important">SCPI: <Sensor:SCPI.sampleSCPI/><Units:bool/></Syslog>

        </Aggregate>

        <Aggregate Id="Aanderaa_O2">

            <When>
                <Science:Aanderaa_O2.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Science:Aanderaa_O2.mass_concentration_of_oxygen_in_sea_water/><Units:microgram_per_liter/>
            </SendData>

            <Syslog Severity="Important">Aanderaa_O2: <Science:Aanderaa_O2.mass_concentration_of_oxygen_in_sea_water/><Units:microgram_per_liter/></Syslog>

        </Aggregate>

        <Aggregate Id="WetLabsBB2FL">

            <When>
                <Science:WetLabsBB2FL.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Science:WetLabsBB2FL.mass_concentration_of_chlorophyll_in_sea_water/><Units:microgram_per_liter/>
            </SendData>

            <Syslog Severity="Important">WetLabsBB2FL: <Science:WetLabsBB2FL.mass_concentration_of_chlorophyll_in_sea_water/><Units:microgram_per_liter/></Syslog>

        </Aggregate>

        <Aggregate Id="CTD_NeilBrown">

            <When>
                <Science:CTD_NeilBrown.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Science:CTD_NeilBrown.sea_water_temperature/><Units:celsius/>
                <Science:CTD_NeilBrown.sea_water_electrical_conductivity/><Units:siemens_per_meter/>
                <Science:CTD_NeilBrown.sea_water_salinity/><Units:part_per_thousand/>
            </SendData>

            <Syslog Severity="Important">CTD_NeilBrown: <Science:CTD_NeilBrown.sea_water_temperature/><Units:celsius/>, <Science:CTD_NeilBrown.sea_water_salinity/><Units:part_per_thousand/>, <Science:CTD_NeilBrown.sea_water_electrical_conductivity/><Units:siemens_per_meter/></Syslog>

        </Aggregate>

<!-- TODO: samplers -->

<!-- DEPRECATED 
        <Aggregate Id="ISUS">

            <When>
                <Science:ISUS.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Science:ISUS.mole_concentration_of_nitrate_in_sea_water/><Units:micromole_per_liter/>
            </SendData>

            <Syslog Severity="Important">ISUS: <Science:ISUS.mole_concentration_of_nitrate_in_sea_water/><Units:micromole_per_liter/></Syslog>

        </Aggregate>
-->

        <Aggregate Id="PAR_Licor">

            <When>
                <Science:PAR_Licor.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Science:PAR_Licor.downwelling_photosynthetic_photon_flux_in_sea_water/><Units:micromole_per_second_per_square_meter/>
            </SendData>

            <Syslog Severity="Important">PAR_Licor: <Science:PAR_Licor.downwelling_photosynthetic_photon_flux_in_sea_water/><Units:micromole_per_second_per_square_meter/></Syslog>

        </Aggregate>

<!-- Add more aggregates here for each sensor. -->

        <Aggregate Id="BPC1">

            <When>
                <Sensor:BPC1.loadAtStartup/>
            </When>

            <SendData Service="Express">
                <Sensor:BPC1.platform_battery_voltage/><Units:volt/>
                <Sensor:BPC1.platform_battery_charge/><Units:ampere_hour/>
            </SendData>

            <Syslog Severity="Important">BPC1: <Sensor:BPC1.platform_battery_voltage/><Units:volt/><Sensor:BPC1.platform_battery_charge/><Units:ampere_hour/></Syslog>

        </Aggregate>

        <ReadDatum Id="Communicate">
            <Universal:platform_communications/>
        </ReadDatum>

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

    </Aggregate>

</Mission>
