missionSmear{arguments{# Almost every mission should start with an overall timeout and a NeedCommsTime. Drift Missions will have an acoustic timeout instead of a NeedCommsTime.# You probably need to change these.NumESPSamplers=1count""" Total number of ESP cartridges (Maximum 60. Set to a smaller number if not using all of them. Set to 0 to disable ESP sampling). """MissionTimeout=20hour""" Maximum duration of mission """NeedCommsTimeInTransect=60minute""" In transit, how often to surface for commumications """AcousticTrackingTimeout=21hour""" If the vehicle does not receive an acoustic signal for more than this length of time, it will surface for communications. Set longer than MissionTimeout to effectively disable. """MaxWaitNoFiring=4hour""" If no firing after more than MaxWaitNoFiring, terminate mission. """SpeedTransit=1.0meter_per_second""" Vehicle speed when transiting. """SpeedSmearSampling=1.0meter_per_second""" Vehicle speed for smear sampling. """MaxDepth=100meter""" Maximum depth for the entire mission. """ShallowBoundSmear=5.0meter""" Shallow depth bound for smear sampling. """DeepBoundSmear=25meter""" Deep depth bound for smear sampling. """TransitYoYoMinDepth=1.5meter""" Minimum depth while performing the YoYo behavior during transit. """TransitYoYoMaxDepth=30meter""" Maximum depth while performing the YoYo behavior during transit. """DepthNearSurface=2.0meter""" Near-surface depth. """ThreshCntSurfTempMeetsCondition=5count""" If CntSurfTempMeetsCondition reaches this threshold, the surface temp condition (for switching from yoyo to smear sampling) is considered met. """RepeatTransects=1count""" Number of times the vehicle should try to cycle through waypoints.. """Lat1=NaNdegree""" Latitude of waypoint 1. If nan, waypoint is skipped. """# debug# </Description><Units:degree/><Value>36.815</Value></DefineArg># </Description><Units:degree/><Value>36.810</Value></DefineArg>Lon1=NaNdegree""" Longitude of waypoint 1. If nan, waypoint is skipped. """# debug# </Description><Units:degree/><Value>-121.835</Value></DefineArg># </Description><Units:degree/><Value>-121.825</Value></DefineArg>Lat2=NaNdegree""" Latitude of waypoint 2. If nan, waypoint is skipped. """# debug# </Description><Units:degree/><Value>36.825</Value></DefineArg>Lon2=NaNdegree""" Longitude of waypoint 2. If nan, waypoint is skipped. """# debug# </Description><Units:degree/><Value>-121.845</Value></DefineArg>Lat3=NaNdegree""" Latitude of waypoint 3. If nan, waypoint is skipped. """Lon3=NaNdegree""" Longitude of waypoint 3. If nan, waypoint is skipped. """Lat4=NaNdegree""" Latitude of waypoint 4. If nan, waypoint is skipped. """Lon4=NaNdegree""" Longitude of waypoint 4. If nan, waypoint is skipped. """LonMinYoyoBreak=NaNdegree""" If longitude falls in [LonMinYoyoBreak LonMaxYoyoBreak], stop yo-yo to switch to smear sampling. """LonMaxYoyoBreak=NaNdegree""" If longitude falls in [LonMinYoyoBreak LonMaxYoyoBreak], stop yo-yo to switch to smear sampling. """# debug# </Description><Units:degree/><Value>-121.823</Value></DefineArg>SurfTempMinYoyoBreak=NaNcelsius""" If surface temperature falls in [SurfTempMinYoyoBreak SurfTempMaxYoyoBreak] for enough counts, stop yo-yo to switch to smear sampling. """SurfTempMaxYoyoBreak=NaNdegree""" If surface temperature falls in [SurfTempMinYoyoBreak SurfTempMaxYoyoBreak] for enough counts, stop yo-yo to switch to smear sampling. """# debug# </Description><Units:celsius/><Value>17.0</Value></DefineArg># Use caution when changing these.UpRate=-0.04meter_per_second""" Go-up depth rate (Negative depth rate means going up). """DownRate=0.04meter_per_second""" Go-down depth rate (Positive depth rate means going down). """YoYoMinAltitude=9meter""" Minimum altitude while performing the YoYo behavior (for bottom-terminated YoYos). """MinAltitude=7meter""" Minimum altitude for the entire mission. """MinOffshore=2kilometer""" Minimum offshore distance for the entire mission. """# You probably do not need to change these.YoYoUpPitch=20degree""" Vehicle up pitch while performing the YoYo behavior. """YoYoDownPitch=-20degree""" Vehicle down pitch while performing the YoYo behavior. """RudderAngle=13degree""" Rudder angle to use while performing the donut cast. """BuoyancyNeutral=Control:VerticalControl.buoyancyNeutral""" Buoyancy bladder position while performing the YoYo behavior. Defaults to buoyancyNeutral setting in the Config/Control.cfg file. Set to NaN cc for active buoyancy """MassDefault=Control:VerticalControl.massDefault""" Static setting for mass during the mission. Set to NaN mm for active mass position """# Internal variables that you should not changeSampleCompleted=false""" Sampling completed. Initialized to false. """StoppedForNoFiringForTooLong=false""" Mission stopped because of no firing for too long. Initialized to false. """DepthLogged=0.0meter""" """TempLogged=0.0celsius""" """SurfTemp=NaNcelsius""" Temp near surface. """ChlLogged=0.0microgram_per_liter""" """MissionStartCommsCompleted=false""" MissionStartComms is completed (initialized to false). """ConditionLonYoyoBreak=false""" Whether the longitude condition for switching from yoyo to smearing sampling is satisfied. """ConditionSurfTempCnt=false""" Whether the surface temperature condition is met for incrementing count. """ConditionSurfTempYoyoBreak=false""" Whether the surface temperature condition for switching from yoyo to smearing sampling is satisfied. """ConditionYoyoBreak=false""" Whether the overall condition for switching from yoyo to smearing sampling is satisfied. """EnableConditionLonYoyoBreak=true""" Enable setting ConditionLonYoyoBreak. Initialized to true. """EnableCntSurfTempMeetsCondition=true""" Enable counting CntSurfTempMeetsCondition. Initialized to true. """EnableConditionSurfTempYoyoBreak=true""" Enable setting ConditionSurfTempYoyoBreak. Initialized to true. """EnableConditionYoyoBreak=true""" Enable setting ConditionYoyoBreak. Initialized to true. """DescentYoyo=true""" Whether the vehicle is on a descent profile. Initialized to True. """StartSmear=false""" Start vertical smear (initialized to false). """FlagGoUp=false""" Go-up flag (set to true when going up. Initialized to false). """FlagGoDown=false""" Go-down flag (set to true when going down. Initialized to false). """EnableFiring=true""" Enable firing. Initialized to true. """FlagSamplingOngoing=false""" Flag of water sampling in process (initialized to false). """FlagFired=false""" Flag of sample fired (initialized to false). """FromLastTimeFixToStartSmear=NaNminute""" Elapsed time from last time-fix to StartSmear. """FromLastTimeFixToNow=NaNminute""" Elapsed time from last time-fix to now. """FromLastTimeFixToLastFiring=NaNminute""" Elapsed time from last time-fix to last firing. """CntSamples=1count""" Count of water samples (initilized to 1). """CntSurfTempMeetsCondition=0count""" Count of surface temperature meeting condition (initilized to 0). """}# Missions should almost always start with a timeout and a NeedComms aggregate. Drift missions will not use NeedComms.timeoutduration=MissionTimeout# Missions should almost always start with standard safety envelopesinsertInsert/StandardEnvelopes.tlassigninsequenceStandardEnvelopes:MinAltitude=MinAltitudeassigninsequenceStandardEnvelopes:MaxDepth=MaxDepthassigninsequenceStandardEnvelopes:MinOffshore=MinOffshoreinsertInsert/AbortDrift.tl{redefineArgAcousticTimeout=AcousticTrackingTimeout}# Many missions will keep mass position fixed at the default. This mission allows the buoyancy volume to change to track the chlorophyll peak while drifting.behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.massPosition=MassDefault}insertInsert/Science.tlbehaviorGuidance:AltitudeEnvelope{""" Another altitude envelope for the YoYo behavior. This envelope should fall within the limits of the standard safety envelopes in Insert/StandardEnvelopes.tl in order to avoid commanding high pitch angles for bottom-terminated YoYos. """runinparallelsetGuidance:AltitudeEnvelope.minAltitude=YoYoMinAltitudesetGuidance:AltitudeEnvelope.upPitch=YoYoUpPitch}aggregateMissionStart{runinsequenceinsertInsert/NeedComms.tlid="NeedComms"callid="MissionStartComms"refId="NeedComms"assigninsequenceMissionStartCommsCompleted=true}aggregateESPSampling{runwhen(called)aggregateTriggerESP{runinsequenceassigninsequenceDepthLogged=Universal:depthassigninsequenceTempLogged=Universal:sea_water_temperatureassigninsequenceChlLogged=Universal:mass_concentration_of_chlorophyll_in_sea_watersyslogimportant"Trigger ESP sampling. DepthLogged, TempLogged, ChlLogged = "+DepthLogged~meter+", "+TempLogged~celsius+", "+ChlLogged~microgram_per_liter+"."readDatum{Science:ESPComponent.sampling}syslogimportant"Wait for ESP sampling to complete."readDatum{Science:ESPComponent.sample_number}}}aggregateTransitToSamplingLocation{runinsequenceinsertInsert/NeedComms.tlid="NeedComms"assigninsequenceNeedComms:DiveInterval=NeedCommsTimeInTransectbehaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SpeedTransit}behaviorGuidance:DepthEnvelope{runinparallelsetGuidance:DepthEnvelope.minDepth=TransitYoYoMinDepthsetGuidance:DepthEnvelope.maxDepth=TransitYoYoMaxDepthsetGuidance:DepthEnvelope.downPitch=YoYoDownPitchsetGuidance:DepthEnvelope.upPitch=YoYoUpPitch}behaviorGuidance:YoYo{runinparallelsetGuidance:YoYo.downPitch=YoYoDownPitchsetGuidance:YoYo.upPitch=YoYoUpPitch}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=BuoyancyNeutral}aggregateLap{runinsequencerepeat=RepeatTransectsaggregateConditionLon{runwhile(EnableConditionLonYoyoBreakand(not(isNaN(LonMinYoyoBreak))and(Universal:longitude>=LonMinYoyoBreak)and(not(isNaN(LonMaxYoyoBreak))and(Universal:longitude<=LonMaxYoyoBreak))or(isNaN(LonMinYoyoBreak)and(not(isNaN(LonMaxYoyoBreak))and(Universal:longitude<=LonMaxYoyoBreak)))or(not(isNaN(LonMinYoyoBreak))and(Universal:longitude>=LonMinYoyoBreak)and(isNaN(LonMaxYoyoBreak)))or(isNaN(LonMinYoyoBreak)and(isNaN(LonMaxYoyoBreak)))))assigninsequenceConditionLonYoyoBreak=truesyslogimportant"= "+Universal:longitude~degree+". ConditionLonYoyoBreak = "+ConditionLonYoyoBreak~boolassigninsequenceEnableConditionLonYoyoBreak=false}aggregateGetTempNearSurfaceAndCount{runwhen(EnableConditionSurfTempYoyoBreakandDescentYoyoand(Universal:depth>=DepthNearSurface)or(EnableConditionSurfTempYoyoBreakand(not(DescentYoyo))and(Universal:depth<=DepthNearSurface)))assigninsequenceEnableCntSurfTempMeetsCondition=trueassigninsequenceConditionSurfTempCnt=not(isNaN(SurfTempMinYoyoBreak))and(Universal:sea_water_temperature>=SurfTempMinYoyoBreak)and(not(isNaN(SurfTempMaxYoyoBreak))and(Universal:sea_water_temperature<=SurfTempMaxYoyoBreak))or(isNaN(SurfTempMinYoyoBreak)and(not(isNaN(SurfTempMaxYoyoBreak))and(Universal:sea_water_temperature<=SurfTempMaxYoyoBreak)))or(not(isNaN(SurfTempMinYoyoBreak))and(Universal:sea_water_temperature>=SurfTempMinYoyoBreak)and(isNaN(SurfTempMaxYoyoBreak)))or(isNaN(SurfTempMinYoyoBreak)and(isNaN(SurfTempMaxYoyoBreak)))# debug# <Aggregate Id="Debug_1">## <When># <Arg Name="EnableCntSurfTempMeetsCondition"/># <And><Arg Name="ConditionSurfTempCnt"/></And># <And><Arg Name="CntSurfTempMeetsCondition"/><Eq><Units:count/><Value>2</Value></Eq></And># </When>## <Assign><Sequence/><Arg Name="ConditionSurfTempCnt"/><False/></Assign>## <Syslog Severity="Important">Debug. ConditionSurfTemp = <Arg Name="ConditionSurfTempCnt"/><Units:bool/>.</Syslog>## </Aggregate>aggregateResetSurfTempCount{runwhen(EnableCntSurfTempMeetsConditionand(not(ConditionSurfTempCnt))and(CntSurfTempMeetsCondition>=1count))assigninsequenceCntSurfTempMeetsCondition=0countassigninsequenceEnableCntSurfTempMeetsCondition=falsesyslogimportant"Reset CntSurfTempMeetsCondition. SurfTemp at "+Universal:depth~meter+" = "+Universal:sea_water_temperature~celsius+". CntSurfTempMeetsCondition = "+CntSurfTempMeetsCondition~count}aggregateIncrementSurfTempCount{runwhen(EnableCntSurfTempMeetsConditionandConditionSurfTempCnt)assigninsequenceCntSurfTempMeetsCondition=CntSurfTempMeetsCondition+1countsyslogimportant"SurfTemp at "+Universal:depth~meter+" = "+Universal:sea_water_temperature~celsius+". CntSurfTempMeetsCondition = "+CntSurfTempMeetsCondition~countassigninsequenceEnableCntSurfTempMeetsCondition=false}assigninsequenceDescentYoyo=not(DescentYoyo)}aggregateSurfTempConditionYoyoBreak{runwhile(EnableConditionSurfTempYoyoBreakand(CntSurfTempMeetsCondition>=ThreshCntSurfTempMeetsCondition))assigninsequenceConditionSurfTempYoyoBreak=truesyslogimportant"ConditionSurfTempYoyoBreak = "+ConditionSurfTempYoyoBreak~boolassigninsequenceEnableConditionSurfTempYoyoBreak=false}aggregateOverallConditionYoyoBreak{runwhile(EnableConditionYoyoBreakandConditionLonYoyoBreakandConditionSurfTempYoyoBreak)assigninsequenceConditionYoyoBreak=truesyslogimportant"ConditionYoyoBreak = "+ConditionYoyoBreak~boolassigninsequenceEnableConditionYoyoBreak=false}aggregateWpt1{runinsequencebreakif(isNaN(Lat1)or(isNaN(Lon1))orConditionYoyoBreak)behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=Lat1setGuidance:Waypoint.longitude=Lon1}}aggregateWpt2{runinsequencebreakif(isNaN(Lat2)or(isNaN(Lon2)))behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=Lat2setGuidance:Waypoint.longitude=Lon2}}aggregateWpt3{runinsequencebreakif(isNaN(Lat3)or(isNaN(Lon3)))behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=Lat3setGuidance:Waypoint.longitude=Lon3}}aggregateWpt4{runinsequencebreakif(isNaN(Lat4)or(isNaN(Lon4)))behaviorGuidance:Waypoint{runinsequencesetGuidance:Waypoint.latitude=Lat4setGuidance:Waypoint.longitude=Lon4}}}assigninsequenceFlagGoDown=truesyslogimportant"Go down at "+Universal:depth~meter+"."assigninsequenceStartSmear=trueassigninsequenceFromLastTimeFixToStartSmear=elapsed(Universal:time_fix)}aggregateSmearSampling{aggregateGoDownGoUp{runinsequenceaggregateGoDownInSpiralMode{runwhile(FlagGoDownandStartSmear)behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depthRate=DownRate}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SpeedSmearSampling}behaviorGuidance:Point{runinparallelsetGuidance:Point.rudderAngle=RudderAngle}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=BuoyancyNeutral}}aggregateGoUpInSpiralMode{runwhile(FlagGoUpandStartSmear)behaviorGuidance:Pitch{runinparallelsetGuidance:Pitch.depthRate=UpRate}behaviorGuidance:SetSpeed{runinparallelsetGuidance:SetSpeed.speed=SpeedSmearSampling}behaviorGuidance:Point{runinparallelsetGuidance:Point.rudderAngle=RudderAngle}behaviorGuidance:Buoyancy{runinparallelsetGuidance:Buoyancy.position=BuoyancyNeutral}}aggregateResetFlagGoDownSetFlagGoUp{runwhen(Universal:depth>=DeepBoundSmearandStartSmearand(not(FlagGoUp)))assigninsequenceFlagGoDown=falseassigninsequenceFlagGoUp=trueassigninsequenceEnableFiring=truesyslogimportant"Go up at "+Universal:depth~meter+"."}aggregateResetFlagGoUpSetFlagGoDown{runwhen(Universal:depth<=ShallowBoundSmearandStartSmearand(not(FlagGoDown)))assigninsequenceFlagGoUp=falseassigninsequenceFlagGoDown=trueassigninsequenceEnableFiring=truesyslogimportant"Go down at "+Universal:depth~meter+"."}}aggregateTakeSamples{runinparallelaggregateNoFiringForTooLong{runwhen(elapsed(Universal:time_fix)>(FromLastTimeFixToStartSmear+MaxWaitNoFiring)and(not(FlagSamplingOngoing))and(CntSamples==1count)and(not(FlagFired))and(not(StoppedForNoFiringForTooLong))or(elapsed(Universal:time_fix)>(FromLastTimeFixToLastFiring+MaxWaitNoFiring)and(not(FlagSamplingOngoing))and(CntSamples>=2count)and(not(StoppedForNoFiringForTooLong))))assigninsequenceFromLastTimeFixToNow=elapsed(Universal:time_fix)syslogimportant"No firing for too long. Stopping mission. FromLastTimeFixToNow, FromLastTimeFixToLastFiring = "+FromLastTimeFixToNow~minute+", "+FromLastTimeFixToLastFiring~minutebehaviorGuidance:Execute{runinsequencesetGuidance:Execute.command="stop"}assigninsequenceStoppedForNoFiringForTooLong=true}aggregateFiring{runwhen(MissionStartCommsCompletedandStartSmearandEnableFiringandFlagGoDownand(Universal:depth>=ShallowBoundSmear)and(not(FlagSamplingOngoing))and(CntSamples<=NumESPSamplers)and(not(SampleCompleted))or(StartSmearandEnableFiringandFlagGoUpand(Universal:depth<=DeepBoundSmear)and(not(FlagSamplingOngoing))and(CntSamples<=NumESPSamplers)and(not(SampleCompleted))))assigninsequenceFlagSamplingOngoing=truesyslogimportant"Taking ESP sample No."+CntSamples~count+"."assigninsequenceFlagFired=trueassigninsequenceFromLastTimeFixToLastFiring=elapsed(Universal:time_fix)# debug# <Syslog Severity="Important">FromLastTimeFixToLastFiring = <Arg Name="FromLastTimeFixToLastFiring"/><Units:minute/></Syslog>callid="Sampling"refId="ESPSampling"syslogimportant" ESP sample No."+CntSamples~count+" completed."assigninsequenceFlagSamplingOngoing=falseassigninsequenceSampleCompleted=trueassigninsequenceEnableFiring=false}aggregateIncrementSampleCounter{runwhen(SampleCompleted)assigninsequenceCntSamples=CntSamples+1countassigninsequenceSampleCompleted=false}}aggregateMissionCompleted{runwhen(CntSamples==(NumESPSamplers+1count))syslogimportant"Completed sampling. Stopping mission."behaviorGuidance:Execute{runinsequencesetGuidance:Execute.command="stop"}assigninsequenceCntSamples=CntSamples+1count}}}
<?xml version="1.0" encoding="UTF-8"?><Missionxmlns="Tethys"xmlns:Control="Tethys/Control"xmlns:Derivation="Tethys/Derivation"xmlns:Guidance="Tethys/Guidance"xmlns:Science="Tethys/Science"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/Control http://okeanids.mbari.org/tethys/Xml/Control.xsd Tethys/Derivation http://okeanids.mbari.org/tethys/Xml/Derivation.xsd Tethys/Guidance http://okeanids.mbari.org/tethys/Xml/Guidance.xsd Tethys/Trigger http://okeanids.mbari.org/tethys/Xml/Trigger.xsd Tethys/Science http://okeanids.mbari.org/tethys/Xml/Science.xsd Tethys/Units http://okeanids.mbari.org/tethys/Xml/Units.xsd Tethys/Universal http://okeanids.mbari.org/tethys/Xml/Universal.xsd"Id="Smear"><!-- Almost every mission should start with an overall timeout and a NeedCommsTime. Drift Missions will have an acoustic timeout instead of a NeedCommsTime. --><!-- You probably need to change these. --><DefineArgName="NumESPSamplers"><Description>
Total number of ESP cartridges (Maximum 60. Set to a smaller number if
not using all of them. Set to 0 to disable ESP sampling).
</Description><Units:count/><Value>1</Value></DefineArg><DefineArgName="MissionTimeout"><Description>
Maximum duration of mission
</Description><Units:hour/><Value>20</Value></DefineArg><DefineArgName="NeedCommsTimeInTransect"><Description>
In transit, how often to surface for commumications
</Description><Units:minute/><Value>60</Value></DefineArg><DefineArgName="AcousticTrackingTimeout"><Description>
If the vehicle does not receive an acoustic signal for more than this
length of time, it will surface for communications. Set longer than
MissionTimeout to effectively disable.
</Description><Units:hour/><Value>21</Value></DefineArg><DefineArgName="MaxWaitNoFiring"><Description>
If no firing after more than MaxWaitNoFiring, terminate mission.
</Description><Units:hour/><Value>4</Value></DefineArg><DefineArgName="SpeedTransit"><Description>
Vehicle speed when transiting.
</Description><Units:meter_per_second/><Value>1.0</Value></DefineArg><DefineArgName="SpeedSmearSampling"><Description>
Vehicle speed for smear sampling.
</Description><Units:meter_per_second/><Value>1.0</Value></DefineArg><DefineArgName="MaxDepth"><Description>
Maximum depth for the entire mission.
</Description><Units:meter/><Value>100</Value></DefineArg><DefineArgName="ShallowBoundSmear"><Description>
Shallow depth bound for smear sampling.
</Description><Units:meter/><Value>5.0</Value></DefineArg><DefineArgName="DeepBoundSmear"><Description>
Deep depth bound for smear sampling.
</Description><Units:meter/><Value>25</Value></DefineArg><DefineArgName="TransitYoYoMinDepth"><Description>
Minimum depth while performing the YoYo behavior during transit.
</Description><Units:meter/><Value>1.5</Value></DefineArg><DefineArgName="TransitYoYoMaxDepth"><Description>
Maximum depth while performing the YoYo behavior during transit.
</Description><Units:meter/><Value>30</Value></DefineArg><DefineArgName="DepthNearSurface"><Description>
Near-surface depth.
</Description><Units:meter/><Value>2.0</Value></DefineArg><DefineArgName="ThreshCntSurfTempMeetsCondition"><Description>
If CntSurfTempMeetsCondition reaches this threshold, the surface temp
condition (for switching from yoyo to smear sampling) is considered met.
</Description><Units:count/><Value>5</Value></DefineArg><DefineArgName="RepeatTransects"><Description>
Number of times the vehicle should try to cycle through waypoints..
</Description><Units:count/><Value>1</Value></DefineArg><DefineArgName="Lat1"><Description>
Latitude of waypoint 1. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:degree/><Value>36.815</Value></DefineArg> </Description><Units:degree/><Value>36.810</Value></DefineArg>--><DefineArgName="Lon1"><Description>
Longitude of waypoint 1. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:degree/><Value>-121.835</Value></DefineArg> </Description><Units:degree/><Value>-121.825</Value></DefineArg>--><DefineArgName="Lat2"><Description>
Latitude of waypoint 2. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:degree/><Value>36.825</Value></DefineArg>--><DefineArgName="Lon2"><Description>
Longitude of waypoint 2. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:degree/><Value>-121.845</Value></DefineArg>--><DefineArgName="Lat3"><Description>
Latitude of waypoint 3. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><DefineArgName="Lon3"><Description>
Longitude of waypoint 3. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><DefineArgName="Lat4"><Description>
Latitude of waypoint 4. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><DefineArgName="Lon4"><Description>
Longitude of waypoint 4. If nan, waypoint is skipped.
</Description><Units:degree/><Value>NaN</Value></DefineArg><DefineArgName="LonMinYoyoBreak"><Description>
If longitude falls in [LonMinYoyoBreak LonMaxYoyoBreak], stop yo-yo to
switch to smear sampling.
</Description><Units:degree/><Value>NaN</Value></DefineArg><DefineArgName="LonMaxYoyoBreak"><Description>
If longitude falls in [LonMinYoyoBreak LonMaxYoyoBreak], stop yo-yo to
switch to smear sampling.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:degree/><Value>-121.823</Value></DefineArg>--><DefineArgName="SurfTempMinYoyoBreak"><Description>
If surface temperature falls in [SurfTempMinYoyoBreak
SurfTempMaxYoyoBreak] for enough counts, stop yo-yo to switch to smear
sampling.
</Description><Units:celsius/><Value>NaN</Value></DefineArg><DefineArgName="SurfTempMaxYoyoBreak"><Description>
If surface temperature falls in [SurfTempMinYoyoBreak
SurfTempMaxYoyoBreak] for enough counts, stop yo-yo to switch to smear
sampling.
</Description><Units:degree/><Value>NaN</Value></DefineArg><!--debug </Description><Units:celsius/><Value>17.0</Value></DefineArg>--><!-- Use caution when changing these. --><DefineArgName="UpRate"><Description>
Go-up depth rate (Negative depth rate means going up).
</Description><Units:meter_per_second/><Value>-0.04</Value></DefineArg><DefineArgName="DownRate"><Description>
Go-down depth rate (Positive depth rate means going down).
</Description><Units:meter_per_second/><Value>0.04</Value></DefineArg><DefineArgName="YoYoMinAltitude"><Description>
Minimum altitude while performing the YoYo behavior (for
bottom-terminated YoYos).
</Description><Units:meter/><Value>9</Value></DefineArg><DefineArgName="MinAltitude"><Description>
Minimum altitude for the entire mission.
</Description><Units:meter/><Value>7</Value></DefineArg><DefineArgName="MinOffshore"><Description>
Minimum offshore distance for the entire mission.
</Description><Units:kilometer/><Value>2</Value></DefineArg><!-- You probably do not need to change these. --><DefineArgName="YoYoUpPitch"><Description>
Vehicle up pitch while performing the YoYo behavior.
</Description><Units:degree/><Value>20</Value></DefineArg><DefineArgName="YoYoDownPitch"><Description>
Vehicle down pitch while performing the YoYo behavior.
</Description><Units:degree/><Value>-20</Value></DefineArg><DefineArgName="RudderAngle"><Description>
Rudder angle to use while performing the donut cast.
</Description><Units:degree/><Value>13</Value></DefineArg><DefineArgName="BuoyancyNeutral"><Description>
Buoyancy bladder position while performing the YoYo behavior. Defaults
to buoyancyNeutral setting in the Config/Control.cfg file. Set to NaN cc
for active buoyancy
</Description><Control:VerticalControl.buoyancyNeutral/></DefineArg><DefineArgName="MassDefault"><Description>
Static setting for mass during the mission. Set to NaN mm for active
mass position
</Description><Control:VerticalControl.massDefault/></DefineArg><!-- Internal variables that you should not change --><DefineArgName="SampleCompleted"><Description>
Sampling completed. Initialized to false.
</Description><False/></DefineArg><DefineArgName="StoppedForNoFiringForTooLong"><Description>
Mission stopped because of no firing for too long. Initialized to false.
</Description><False/></DefineArg><DefineArgName="DepthLogged"><Description></Description><Units:meter/><Value>0.0</Value></DefineArg><DefineArgName="TempLogged"><Description></Description><Units:celsius/><Value>0.0</Value></DefineArg><DefineArgName="SurfTemp"><Description>
Temp near surface.
</Description><Units:celsius/><Value>NaN</Value></DefineArg><DefineArgName="ChlLogged"><Description></Description><Units:microgram_per_liter/><Value>0.0</Value></DefineArg><DefineArgName="MissionStartCommsCompleted"><Description>
MissionStartComms is completed (initialized to false).
</Description><False/></DefineArg><DefineArgName="ConditionLonYoyoBreak"><Description>
Whether the longitude condition for switching from yoyo to smearing
sampling is satisfied.
</Description><False/></DefineArg><DefineArgName="ConditionSurfTempCnt"><Description>
Whether the surface temperature condition is met for incrementing count.
</Description><False/></DefineArg><DefineArgName="ConditionSurfTempYoyoBreak"><Description>
Whether the surface temperature condition for switching from yoyo to
smearing sampling is satisfied.
</Description><False/></DefineArg><DefineArgName="ConditionYoyoBreak"><Description>
Whether the overall condition for switching from yoyo to smearing
sampling is satisfied.
</Description><False/></DefineArg><DefineArgName="EnableConditionLonYoyoBreak"><Description>
Enable setting ConditionLonYoyoBreak. Initialized to true.
</Description><True/></DefineArg><DefineArgName="EnableCntSurfTempMeetsCondition"><Description>
Enable counting CntSurfTempMeetsCondition. Initialized to true.
</Description><True/></DefineArg><DefineArgName="EnableConditionSurfTempYoyoBreak"><Description>
Enable setting ConditionSurfTempYoyoBreak. Initialized to true.
</Description><True/></DefineArg><DefineArgName="EnableConditionYoyoBreak"><Description>
Enable setting ConditionYoyoBreak. Initialized to true.
</Description><True/></DefineArg><DefineArgName="DescentYoyo"><Description>
Whether the vehicle is on a descent profile. Initialized to True.
</Description><True/></DefineArg><DefineArgName="StartSmear"><Description>
Start vertical smear (initialized to false).
</Description><False/></DefineArg><DefineArgName="FlagGoUp"><Description>
Go-up flag (set to true when going up. Initialized to false).
</Description><False/></DefineArg><DefineArgName="FlagGoDown"><Description>
Go-down flag (set to true when going down. Initialized to false).
</Description><False/></DefineArg><DefineArgName="EnableFiring"><Description>
Enable firing. Initialized to true.
</Description><True/></DefineArg><DefineArgName="FlagSamplingOngoing"><Description>
Flag of water sampling in process (initialized to false).
</Description><False/></DefineArg><DefineArgName="FlagFired"><Description>
Flag of sample fired (initialized to false).
</Description><False/></DefineArg><DefineArgName="FromLastTimeFixToStartSmear"><Description>
Elapsed time from last time-fix to StartSmear.
</Description><Units:minute/><Value>NaN</Value></DefineArg><DefineArgName="FromLastTimeFixToNow"><Description>
Elapsed time from last time-fix to now.
</Description><Units:minute/><Value>NaN</Value></DefineArg><DefineArgName="FromLastTimeFixToLastFiring"><Description>
Elapsed time from last time-fix to last firing.
</Description><Units:minute/><Value>NaN</Value></DefineArg><DefineArgName="CntSamples"><Description>
Count of water samples (initilized to 1).
</Description><Units:count/><Value>1</Value></DefineArg><DefineArgName="CntSurfTempMeetsCondition"><Description>
Count of surface temperature meeting condition (initilized to 0).
</Description><Units:count/><Value>0</Value></DefineArg><!-- Missions should almost always start with a timeout and a NeedComms aggregate. Drift missions will not use NeedComms. --><TimeoutDuration="MissionTimeout"/><!-- Missions should almost always start with standard safety envelopes --><InsertFilename="Insert/StandardEnvelopes.tl"/><Assign><Sequence/><ArgName="StandardEnvelopes:MinAltitude"/><ArgName="MinAltitude"/></Assign><Assign><Sequence/><ArgName="StandardEnvelopes:MaxDepth"/><ArgName="MaxDepth"/></Assign><Assign><Sequence/><ArgName="StandardEnvelopes:MinOffshore"/><ArgName="MinOffshore"/></Assign><InsertFilename="Insert/AbortDrift.tl"><RedefineArgName="AcousticTimeout"><ArgName="AcousticTrackingTimeout"/></RedefineArg></Insert><!-- Many missions will keep mass position fixed at the default. This mission allows the buoyancy volume to change to track the chlorophyll peak while drifting. --><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.massPosition/><ArgName="MassDefault"/></Setting></Guidance:Pitch><InsertFilename="Insert/Science.tl"/><Guidance:AltitudeEnvelope><Description>
Another altitude envelope for the YoYo behavior. This envelope
should fall within the limits of the standard safety envelopes in
Insert/StandardEnvelopes.tl in order to avoid commanding high pitch
angles for bottom-terminated YoYos.
</Description><Parallel/><Setting><Guidance:AltitudeEnvelope.minAltitude/><ArgName="YoYoMinAltitude"/></Setting><Setting><Guidance:AltitudeEnvelope.upPitch/><ArgName="YoYoUpPitch"/></Setting></Guidance:AltitudeEnvelope><AggregateId="MissionStart"><Sequence/><InsertFilename="Insert/NeedComms.tl"Id="NeedComms"/><CallId="MissionStartComms"RefId="NeedComms"/><Assign><Sequence/><ArgName="MissionStartCommsCompleted"/><True/></Assign></Aggregate><AggregateId="ESPSampling"><When><Called/></When><AggregateId="TriggerESP"><Sequence/><Assign><Sequence/><ArgName="DepthLogged"/><Universal:depth/></Assign><Assign><Sequence/><ArgName="TempLogged"/><Universal:sea_water_temperature/></Assign><Assign><Sequence/><ArgName="ChlLogged"/><Universal:mass_concentration_of_chlorophyll_in_sea_water/></Assign><SyslogSeverity="Important">Trigger ESP sampling. DepthLogged, TempLogged, ChlLogged = <ArgName="DepthLogged"/><Units:meter/>, <ArgName="TempLogged"/><Units:celsius/>, <ArgName="ChlLogged"/><Units:microgram_per_liter/>.</Syslog><ReadDatum><Science:ESPComponent.sampling/></ReadDatum><SyslogSeverity="Important">Wait for ESP sampling to complete.</Syslog><ReadDatum><Science:ESPComponent.sample_number/></ReadDatum></Aggregate></Aggregate><AggregateId="TransitToSamplingLocation"><Sequence/><InsertFilename="Insert/NeedComms.tl"Id="NeedComms"/><Assign><Sequence/><ArgName="NeedComms:DiveInterval"/><ArgName="NeedCommsTimeInTransect"/></Assign><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SpeedTransit"/></Setting></Guidance:SetSpeed><Guidance:DepthEnvelope><Parallel/><Setting><Guidance:DepthEnvelope.minDepth/><ArgName="TransitYoYoMinDepth"/></Setting><Setting><Guidance:DepthEnvelope.maxDepth/><ArgName="TransitYoYoMaxDepth"/></Setting><Setting><Guidance:DepthEnvelope.downPitch/><ArgName="YoYoDownPitch"/></Setting><Setting><Guidance:DepthEnvelope.upPitch/><ArgName="YoYoUpPitch"/></Setting></Guidance:DepthEnvelope><Guidance:YoYo><Parallel/><Setting><Guidance:YoYo.downPitch/><ArgName="YoYoDownPitch"/></Setting><Setting><Guidance:YoYo.upPitch/><ArgName="YoYoUpPitch"/></Setting></Guidance:YoYo><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="BuoyancyNeutral"/></Setting></Guidance:Buoyancy><AggregateId="Lap"><SequenceRepeat="RepeatTransects"/><AggregateId="ConditionLon"><While><ArgName="EnableConditionLonYoyoBreak"/><And><Not><IsNaN><ArgName="LonMinYoyoBreak"/></IsNaN></Not><And><Universal:longitude/><Ge><ArgName="LonMinYoyoBreak"/></Ge></And><And><Not><IsNaN><ArgName="LonMaxYoyoBreak"/></IsNaN></Not><And><Universal:longitude/><Le><ArgName="LonMaxYoyoBreak"/></Le></And></And><Or><IsNaN><ArgName="LonMinYoyoBreak"/></IsNaN><And><Not><IsNaN><ArgName="LonMaxYoyoBreak"/></IsNaN></Not><And><Universal:longitude/><Le><ArgName="LonMaxYoyoBreak"/></Le></And></And></Or><Or><Not><IsNaN><ArgName="LonMinYoyoBreak"/></IsNaN></Not><And><Universal:longitude/><Ge><ArgName="LonMinYoyoBreak"/></Ge></And><And><IsNaN><ArgName="LonMaxYoyoBreak"/></IsNaN></And></Or><Or><IsNaN><ArgName="LonMinYoyoBreak"/></IsNaN><And><IsNaN><ArgName="LonMaxYoyoBreak"/></IsNaN></And></Or></And></While><Assign><Sequence/><ArgName="ConditionLonYoyoBreak"/><True/></Assign><SyslogSeverity="Important">= <Universal:longitude/><Units:degree/>. ConditionLonYoyoBreak = <ArgName="ConditionLonYoyoBreak"/><Units:bool/></Syslog><Assign><Sequence/><ArgName="EnableConditionLonYoyoBreak"/><False/></Assign></Aggregate><AggregateId="GetTempNearSurfaceAndCount"><When><ArgName="EnableConditionSurfTempYoyoBreak"/><And><ArgName="DescentYoyo"/></And><And><Universal:depth/><Ge><ArgName="DepthNearSurface"/></Ge></And><Or><ArgName="EnableConditionSurfTempYoyoBreak"/><And><Not><ArgName="DescentYoyo"/></Not></And><And><Universal:depth/><Le><ArgName="DepthNearSurface"/></Le></And></Or></When><Assign><Sequence/><ArgName="EnableCntSurfTempMeetsCondition"/><True/></Assign><Assign><Sequence/><ArgName="ConditionSurfTempCnt"/><Not><IsNaN><ArgName="SurfTempMinYoyoBreak"/></IsNaN></Not><And><Universal:sea_water_temperature/><Ge><ArgName="SurfTempMinYoyoBreak"/></Ge></And><And><Not><IsNaN><ArgName="SurfTempMaxYoyoBreak"/></IsNaN></Not><And><Universal:sea_water_temperature/><Le><ArgName="SurfTempMaxYoyoBreak"/></Le></And></And><Or><IsNaN><ArgName="SurfTempMinYoyoBreak"/></IsNaN><And><Not><IsNaN><ArgName="SurfTempMaxYoyoBreak"/></IsNaN></Not><And><Universal:sea_water_temperature/><Le><ArgName="SurfTempMaxYoyoBreak"/></Le></And></And></Or><Or><Not><IsNaN><ArgName="SurfTempMinYoyoBreak"/></IsNaN></Not><And><Universal:sea_water_temperature/><Ge><ArgName="SurfTempMinYoyoBreak"/></Ge></And><And><IsNaN><ArgName="SurfTempMaxYoyoBreak"/></IsNaN></And></Or><Or><IsNaN><ArgName="SurfTempMinYoyoBreak"/></IsNaN><And><IsNaN><ArgName="SurfTempMaxYoyoBreak"/></IsNaN></And></Or></Assign><!--debug <Aggregate Id="Debug_1"> <When> <Arg Name="EnableCntSurfTempMeetsCondition"/> <And><Arg Name="ConditionSurfTempCnt"/></And> <And><Arg Name="CntSurfTempMeetsCondition"/><Eq><Units:count/><Value>2</Value></Eq></And> </When> <Assign><Sequence/><Arg Name="ConditionSurfTempCnt"/><False/></Assign> <Syslog Severity="Important">Debug. ConditionSurfTemp = <Arg Name="ConditionSurfTempCnt"/><Units:bool/>.</Syslog> </Aggregate>--><AggregateId="ResetSurfTempCount"><When><ArgName="EnableCntSurfTempMeetsCondition"/><And><Not><ArgName="ConditionSurfTempCnt"/></Not></And><And><ArgName="CntSurfTempMeetsCondition"/><Ge><Units:count/><Value>1</Value></Ge></And></When><Assign><Sequence/><ArgName="CntSurfTempMeetsCondition"/><Units:count/><Value>0</Value></Assign><Assign><Sequence/><ArgName="EnableCntSurfTempMeetsCondition"/><False/></Assign><SyslogSeverity="Important">Reset CntSurfTempMeetsCondition. SurfTemp at <Universal:depth/><Units:meter/> = <Universal:sea_water_temperature/><Units:celsius/>. CntSurfTempMeetsCondition = <ArgName="CntSurfTempMeetsCondition"/><Units:count/></Syslog></Aggregate><AggregateId="IncrementSurfTempCount"><When><ArgName="EnableCntSurfTempMeetsCondition"/><And><ArgName="ConditionSurfTempCnt"/></And></When><Assign><Sequence/><ArgName="CntSurfTempMeetsCondition"/><ArgName="CntSurfTempMeetsCondition"/><Add><Units:count/><Value>1</Value></Add></Assign><SyslogSeverity="Important">SurfTemp at <Universal:depth/><Units:meter/> = <Universal:sea_water_temperature/><Units:celsius/>. CntSurfTempMeetsCondition = <ArgName="CntSurfTempMeetsCondition"/><Units:count/></Syslog><Assign><Sequence/><ArgName="EnableCntSurfTempMeetsCondition"/><False/></Assign></Aggregate><Assign><Sequence/><ArgName="DescentYoyo"/><Not><ArgName="DescentYoyo"/></Not></Assign><!--debug <Syslog Severity="Important">After flipping, DescentYoyo = <Arg Name="DescentYoyo"/><Units:bool/>.</Syslog>--></Aggregate><AggregateId="SurfTempConditionYoyoBreak"><While><ArgName="EnableConditionSurfTempYoyoBreak"/><And><ArgName="CntSurfTempMeetsCondition"/><Ge><ArgName="ThreshCntSurfTempMeetsCondition"/></Ge></And></While><Assign><Sequence/><ArgName="ConditionSurfTempYoyoBreak"/><True/></Assign><SyslogSeverity="Important">ConditionSurfTempYoyoBreak = <ArgName="ConditionSurfTempYoyoBreak"/><Units:bool/></Syslog><Assign><Sequence/><ArgName="EnableConditionSurfTempYoyoBreak"/><False/></Assign></Aggregate><AggregateId="OverallConditionYoyoBreak"><While><ArgName="EnableConditionYoyoBreak"/><And><ArgName="ConditionLonYoyoBreak"/></And><And><ArgName="ConditionSurfTempYoyoBreak"/></And></While><Assign><Sequence/><ArgName="ConditionYoyoBreak"/><True/></Assign><SyslogSeverity="Important">ConditionYoyoBreak = <ArgName="ConditionYoyoBreak"/><Units:bool/></Syslog><Assign><Sequence/><ArgName="EnableConditionYoyoBreak"/><False/></Assign></Aggregate><AggregateId="Wpt1"><Sequence/><Break><IsNaN><ArgName="Lat1"/></IsNaN><Or><IsNaN><ArgName="Lon1"/></IsNaN></Or><Or><ArgName="ConditionYoyoBreak"/></Or></Break><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="Lat1"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="Lon1"/></Setting></Guidance:Waypoint></Aggregate><AggregateId="Wpt2"><Sequence/><Break><IsNaN><ArgName="Lat2"/></IsNaN><Or><IsNaN><ArgName="Lon2"/></IsNaN></Or></Break><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="Lat2"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="Lon2"/></Setting></Guidance:Waypoint></Aggregate><AggregateId="Wpt3"><Sequence/><Break><IsNaN><ArgName="Lat3"/></IsNaN><Or><IsNaN><ArgName="Lon3"/></IsNaN></Or></Break><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="Lat3"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="Lon3"/></Setting></Guidance:Waypoint></Aggregate><AggregateId="Wpt4"><Sequence/><Break><IsNaN><ArgName="Lat4"/></IsNaN><Or><IsNaN><ArgName="Lon4"/></IsNaN></Or></Break><Guidance:Waypoint><Sequence/><Setting><Guidance:Waypoint.latitude/><ArgName="Lat4"/></Setting><Setting><Guidance:Waypoint.longitude/><ArgName="Lon4"/></Setting></Guidance:Waypoint></Aggregate></Aggregate><Assign><Sequence/><ArgName="FlagGoDown"/><True/></Assign><SyslogSeverity="Important">Go down at <Universal:depth/><Units:meter/>.</Syslog><Assign><Sequence/><ArgName="StartSmear"/><True/></Assign><Assign><Sequence/><ArgName="FromLastTimeFixToStartSmear"/><Elapsed><Universal:time_fix/></Elapsed></Assign><!--debug <Syslog Severity="Important">FromLastTimeFixToStartSmear = <Arg Name="FromLastTimeFixToStartSmear"/><Units:minute/></Syslog>--></Aggregate><AggregateId="SmearSampling"><AggregateId="GoDownGoUp"><Sequence/><AggregateId="GoDownInSpiralMode"><While><ArgName="FlagGoDown"/><And><ArgName="StartSmear"/></And></While><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depthRate/><ArgName="DownRate"/></Setting></Guidance:Pitch><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SpeedSmearSampling"/></Setting></Guidance:SetSpeed><Guidance:Point><Parallel/><Setting><Guidance:Point.rudderAngle/><ArgName="RudderAngle"/></Setting></Guidance:Point><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="BuoyancyNeutral"/></Setting></Guidance:Buoyancy></Aggregate><AggregateId="GoUpInSpiralMode"><While><ArgName="FlagGoUp"/><And><ArgName="StartSmear"/></And></While><Guidance:Pitch><Parallel/><Setting><Guidance:Pitch.depthRate/><ArgName="UpRate"/></Setting></Guidance:Pitch><Guidance:SetSpeed><Parallel/><Setting><Guidance:SetSpeed.speed/><ArgName="SpeedSmearSampling"/></Setting></Guidance:SetSpeed><Guidance:Point><Parallel/><Setting><Guidance:Point.rudderAngle/><ArgName="RudderAngle"/></Setting></Guidance:Point><Guidance:Buoyancy><Parallel/><Setting><Guidance:Buoyancy.position/><ArgName="BuoyancyNeutral"/></Setting></Guidance:Buoyancy></Aggregate><AggregateId="ResetFlagGoDownSetFlagGoUp"><When><Universal:depth/><Ge><ArgName="DeepBoundSmear"/></Ge><And><ArgName="StartSmear"/></And><And><Not><ArgName="FlagGoUp"/></Not></And></When><Assign><Sequence/><ArgName="FlagGoDown"/><False/></Assign><Assign><Sequence/><ArgName="FlagGoUp"/><True/></Assign><Assign><Sequence/><ArgName="EnableFiring"/><True/></Assign><SyslogSeverity="Important">Go up at <Universal:depth/><Units:meter/>.</Syslog></Aggregate><AggregateId="ResetFlagGoUpSetFlagGoDown"><When><Universal:depth/><Le><ArgName="ShallowBoundSmear"/></Le><And><ArgName="StartSmear"/></And><And><Not><ArgName="FlagGoDown"/></Not></And></When><Assign><Sequence/><ArgName="FlagGoUp"/><False/></Assign><Assign><Sequence/><ArgName="FlagGoDown"/><True/></Assign><Assign><Sequence/><ArgName="EnableFiring"/><True/></Assign><SyslogSeverity="Important">Go down at <Universal:depth/><Units:meter/>.</Syslog></Aggregate></Aggregate><AggregateId="TakeSamples"><Parallel/><AggregateId="NoFiringForTooLong"><When><Elapsed><Universal:time_fix/></Elapsed><Gt><ArgName="FromLastTimeFixToStartSmear"/><Add><ArgName="MaxWaitNoFiring"/></Add></Gt><And><Not><ArgName="FlagSamplingOngoing"/></Not></And><And><ArgName="CntSamples"/><Eq><Units:count/><Value>1</Value></Eq></And><And><Not><ArgName="FlagFired"/></Not></And><And><Not><ArgName="StoppedForNoFiringForTooLong"/></Not></And><Or><Elapsed><Universal:time_fix/></Elapsed><Gt><ArgName="FromLastTimeFixToLastFiring"/><Add><ArgName="MaxWaitNoFiring"/></Add></Gt><And><Not><ArgName="FlagSamplingOngoing"/></Not></And><And><ArgName="CntSamples"/><Ge><Units:count/><Value>2</Value></Ge></And><And><Not><ArgName="StoppedForNoFiringForTooLong"/></Not></And></Or></When><Assign><Sequence/><ArgName="FromLastTimeFixToNow"/><Elapsed><Universal:time_fix/></Elapsed></Assign><SyslogSeverity="Important">No firing for too long. Stopping mission. FromLastTimeFixToNow, FromLastTimeFixToLastFiring = <ArgName="FromLastTimeFixToNow"/><Units:minute/>, <ArgName="FromLastTimeFixToLastFiring"/><Units:minute/></Syslog><Guidance:Execute><Sequence/><Setting><Guidance:Execute.command/><String>stop</String></Setting></Guidance:Execute><Assign><Sequence/><ArgName="StoppedForNoFiringForTooLong"/><True/></Assign></Aggregate><AggregateId="Firing"><When><ArgName="MissionStartCommsCompleted"/><And><ArgName="StartSmear"/></And><And><ArgName="EnableFiring"/></And><And><ArgName="FlagGoDown"/></And><And><Universal:depth/><Ge><ArgName="ShallowBoundSmear"/></Ge></And><And><Not><ArgName="FlagSamplingOngoing"/></Not></And><And><ArgName="CntSamples"/><Le><ArgName="NumESPSamplers"/></Le></And><And><Not><ArgName="SampleCompleted"/></Not></And><Or><ArgName="StartSmear"/><And><ArgName="EnableFiring"/></And><And><ArgName="FlagGoUp"/></And><And><Universal:depth/><Le><ArgName="DeepBoundSmear"/></Le></And><And><Not><ArgName="FlagSamplingOngoing"/></Not></And><And><ArgName="CntSamples"/><Le><ArgName="NumESPSamplers"/></Le></And><And><Not><ArgName="SampleCompleted"/></Not></And></Or></When><Assign><Sequence/><ArgName="FlagSamplingOngoing"/><True/></Assign><SyslogSeverity="Important">Taking ESP sample No.<ArgName="CntSamples"/><Units:count/>.</Syslog><Assign><Sequence/><ArgName="FlagFired"/><True/></Assign><Assign><Sequence/><ArgName="FromLastTimeFixToLastFiring"/><Elapsed><Universal:time_fix/></Elapsed></Assign><!--debug <Syslog Severity="Important">FromLastTimeFixToLastFiring = <Arg Name="FromLastTimeFixToLastFiring"/><Units:minute/></Syslog>--><CallId="Sampling"RefId="ESPSampling"/><SyslogSeverity="Important"> ESP sample No.<ArgName="CntSamples"/><Units:count/> completed.</Syslog><Assign><Sequence/><ArgName="FlagSamplingOngoing"/><False/></Assign><Assign><Sequence/><ArgName="SampleCompleted"/><True/></Assign><Assign><Sequence/><ArgName="EnableFiring"/><False/></Assign></Aggregate><AggregateId="IncrementSampleCounter"><When><ArgName="SampleCompleted"/></When><Assign><Sequence/><ArgName="CntSamples"/><ArgName="CntSamples"/><Add><Units:count/><Value>1</Value></Add></Assign><Assign><Sequence/><ArgName="SampleCompleted"/><False/></Assign></Aggregate></Aggregate><AggregateId="MissionCompleted"><When><ArgName="CntSamples"/><Eq><ArgName="NumESPSamplers"/><Add><Units:count/><Value>1</Value></Add></Eq></When><SyslogSeverity="Important">Completed sampling. Stopping mission.</Syslog><Guidance:Execute><Sequence/><Setting><Guidance:Execute.command/><String>stop</String></Setting></Guidance:Execute><Assign><Sequence/><ArgName="CntSamples"/><ArgName="CntSamples"/><Add><Units:count/><Value>1</Value></Add></Assign></Aggregate></Aggregate></Mission>