<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="https://xmlschemas.movelab.studio/RowingTrackPointExtension/v1"
    targetNamespace="https://xmlschemas.movelab.studio/RowingTrackPointExtension/v1"
    elementFormDefault="qualified">

    <!--
        RowingTrackPointExtension v1
        Extension for TCX TrackPoint elements carrying per-stroke indoor rowing metrics.
        Intended to be embedded inside the TCX <Extensions> element of a <Trackpoint>.
    -->

    <xsd:element name="RowingTPX" type="RowingTrackPointExtension_t"/>

    <xsd:complexType name="RowingTrackPointExtension_t">
        <xsd:sequence>
            <!-- Stroke rate in strokes per minute (spm) -->
            <xsd:element name="StrokeRate" type="xsd:double" minOccurs="0"/>

            <!-- Length of the stroke in meters -->
            <xsd:element name="StrokeLength" type="xsd:double" minOccurs="0"/>

            <!-- Distance traveled per stroke in meters -->
            <xsd:element name="DistancePerStroke" type="xsd:double" minOccurs="0"/>

            <!-- Duration of the drive phase in seconds -->
            <xsd:element name="DriveTime" type="xsd:double" minOccurs="0"/>

            <!-- Duration of the recovery phase in seconds -->
            <xsd:element name="RecoverTime" type="xsd:double" minOccurs="0"/>

            <!-- Peak force applied during the stroke in Newtons -->
            <xsd:element name="PeakForce" type="xsd:double" minOccurs="0"/>

            <!-- Position along the stroke where peak force occurs, in meters from catch -->
            <xsd:element name="PeakForcePosition" type="xsd:double" minOccurs="0"/>

            <!-- Total energy expended during the stroke in Joules -->
            <xsd:element name="EnergyPerStroke" type="xsd:double" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

</xsd:schema>
