[PATCH 3/3] Select only "meaningful" samples for divelogs.de export

Miika Turkia miika.turkia at gmail.com
Thu Apr 30 16:48:08 PDT 2015


The logic to select samples from EON Steel for divelogs.de export is the
following:
- Ignore sample at time zero, as that is surface, and the second "odd"
  sample contains information we are interested in
- Grab the second sample, first sample with pressure and temperature
  readings
- Grab the third sample - "grand parent" is 0, thus our first interval
  sample
- Grab the samples when the predecessor (or grand parent) is at least 10
  seconds away

This logic seems to produce reasonable results when exporting EON Steel
logs to divelogs.de. Naturally there might be corner cases, that are not
taken into account, but this basic logic seems reasonable in normal
cases. (Unfortunately analysis is done based on a single dive.)

Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
---
 xslt/divelogs-export.xslt | 47 ++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 42 insertions(+), 5 deletions(-)

diff --git a/xslt/divelogs-export.xslt b/xslt/divelogs-export.xslt
index f231060..f912feb 100644
--- a/xslt/divelogs-export.xslt
+++ b/xslt/divelogs-export.xslt
@@ -290,11 +290,48 @@
           <!--  <name select="{concat(@time, ' - ', preceding-sibling::sample[1]/@time)}"/>-->
         </xsl:when>
         <xsl:otherwise>
-          <SAMPLE>
-            <DEPTH>
-              <xsl:value-of select="substring-before(./@depth, ' ')"/>
-            </DEPTH>
-          </SAMPLE>
+          <xsl:choose>
+            <!-- Suunto EON Steel special case -->
+            <xsl:when test="$special = 1">
+              <xsl:variable name="cur">
+                <xsl:call-template name="time2sec">
+                  <xsl:with-param name="time">
+                    <xsl:value-of select="@time"/>
+                  </xsl:with-param>
+                </xsl:call-template>
+              </xsl:variable>
+              <xsl:variable name="prev">
+                <xsl:call-template name="time2sec">
+                  <xsl:with-param name="time">
+                    <xsl:value-of select="preceding-sibling::sample[1]/@time"/>
+                  </xsl:with-param>
+                </xsl:call-template>
+              </xsl:variable>
+              <xsl:variable name="prevprev">
+                <xsl:call-template name="time2sec">
+                  <xsl:with-param name="time">
+                    <xsl:value-of select="preceding-sibling::sample[2]/@time"/>
+                  </xsl:with-param>
+                </xsl:call-template>
+              </xsl:variable>
+              <xsl:choose>
+                <xsl:when test="$cur - $prev >= 10 or $prev = 0 or $prevprev = 0">
+                  <SAMPLE>
+                    <DEPTH>
+                      <xsl:value-of select="substring-before(./@depth, ' ')"/>
+                    </DEPTH>
+                  </SAMPLE>
+                </xsl:when>
+              </xsl:choose>
+            </xsl:when>
+            <xsl:otherwise>
+              <SAMPLE>
+                <DEPTH>
+                  <xsl:value-of select="substring-before(./@depth, ' ')"/>
+                </DEPTH>
+              </SAMPLE>
+            </xsl:otherwise>
+          </xsl:choose>
         </xsl:otherwise>
       </xsl:choose>
     </xsl:for-each>
-- 
2.1.0



More information about the subsurface mailing list