ROWFILE/1
Eine .rowfile bewahrt eine vollständige Rudereinheit in einer Datei. Row Smarter kann sie bereits exportieren und importieren. Sie enthält die verlustfreien Einheitsdaten neben CSV- und TCX-Exporten für Tabellen und Trainingsseiten.
Du kannst diese Datei bereits direkt teilen. Sie enthält die ganze Einheit; unterwegs geht nichts verloren.
Containeraufbau
Der Container ist eine deterministische Verkettung, keine ZIP-Datei. ASCII-Rahmen umschließen die Rohbytes jedes Eintrags:
ROWFILE/1\n
>> <name> <size in bytes, decimal>\n
<size raw bytes>\n
...repeated per entry...manifest.json wird zuerst geschrieben. Leser müssen Einträge in beliebiger Reihenfolge annehmen, unbekannte Namen überspringen und doppelt vorkommende Namen ablehnen.
Eintragsnamen
Row Smarter schreibt diese festen Namen:
manifest.json: Archivversion und Angaben zum schreibenden Programm.session.json: die verlustfreie Kopie, auf die sich der Importer stützt.summary.csv: Export der Einheitenzusammenfassung.samples.csv: aufgezeichnete Messungen.strokes.csv: aufgezeichnete Schläge.rowingdata.csv: Export im rowingdata-Stil.beats.csv: rohe RR-Intervalle.session.tcx: TCX-Export.
CSV- und TCX-Einträge sind bytegenau identisch mit den einzelnen Exportdateien. Ein zusammengesetztes Archiv kann ohne session.json vorliegen. Der Importer stellt dann aus diesen Einträgen wieder her, was möglich ist.
manifest.json
Nur formatVersion ist erforderlich. Die anderen Werte können fehlen, wenn ein Werkzeug einzelne Dateien zu einem Archiv zusammensetzt.
formatVersion: Ganzzahl. Das aktuelle Containerformat ist1.sessionID: optionale UUID-Zeichenfolge.appVersion: optionale Zeichenfolge.writer: optionale Zeichenfolge. Row Smarter schreibtRowSmarter; das Wiederherstellungswerkzeug schreibtstitch-rowfile.
session.json
Das Einheitenschema hat Version 1. Werte werden nicht gerundet. Erforderliche Schlüssel sind unten gekennzeichnet; alle anderen sind optional.
Einheit
v: erforderliche Ganzzahl, Version des Einheitenschemas.id: erforderliche UUID-Zeichenfolge, Identität der Einheit.start: erforderliche Zahl, Sekunden seit dem Referenzdatum vonDateauf der Plattform.dur: erforderliches Dauerobjekt;mov: Dauerobjekt für die Bewegungszeit.dist: erforderliche Zahl, Distanz in Metern.name: Trainingsname;tz: Zeitzonenkennung beim Start;utc: UTC-Abweichung beim Start in Sekunden.mass: Körpergewicht in Kilogramm;age: Alter in Jahren.maxW: höchste Leistung in Watt;minSplit: niedrigste Sekunden pro 500 Meter;maxSR: höchste Schlagzahl.plan: gespeichertesWorkoutPlan-Dokument;race: Rennobjekt.avgPace: durchschnittliche Sekunden pro 500 Meter;avgW: durchschnittliche Watt;work: gesamte Arbeit in Joule;kcal: Kilokalorien.strokeCount: erforderliche Ganzzahl;avgSR: durchschnittliche Schlagzahl.avgHR: durchschnittliche Herzfrequenz in Schlägen pro Minute;peakHR: höchste Herzfrequenz in Schlägen pro Minute.avgLen: durchschnittliche Schlaglänge in Zentimetern;avgRatio: durchschnittliches Verhältnis von Durchzug zu Rollphase.samples: erforderliche Liste von Messobjekten;strokes: erforderliche Liste von Schlagobjekten;beats: erforderliche Liste von Herzschlagobjekten.prov: Herkunftsobjekt;hk: UUID-Zeichenfolge des HealthKit-Trainings.
Dauerobjekt
s: erforderliche Ganzzahl, ganze Sekunden.a: erforderliche Ganzzahl, Attosekunden.
Messobjekt
t: erforderliches Dauerobjekt, vergangene Zeit.d: Distanz in Metern;p: Tempo in Sekunden pro 500 Meter;w: Watt.sr: Schlagzahl;sc: Schlaganzahl;hr: Herzfrequenz.df: Drag Factor;sl: Schlaglänge in Zentimetern.ap: durchschnittliches Tempo in Sekunden pro 500 Meter;aw: durchschnittliche Watt;wj: Arbeit in Joule.hr0: rohe Herzfrequenz in Schlägen pro Minute.
Schlagobjekt
i: erforderliche Ganzzahl, Schlagidentität;t: erforderliches Dauerobjekt, Startzeit.dr: Dauer des Durchzugs;rc: Dauer der Rollphase;ds: wahr, wenn die Zeit abgeleitet statt gemeldet wurde.d: Distanz in Metern;w: durchschnittliche Watt.fc: Kraftkurvenobjekt;pf: Spitzenkraft in Newton;af: durchschnittliche Kraft in Newton.dl: Durchzugslänge in Zentimetern;sd: Distanz pro Schlag in Metern.
Kraftkurvenobjekt
f: erforderliche Liste von Kraftmessungen.dt: erforderliches Dauerobjekt, Messintervall.cal: erforderlicher boolescher Wert, ob die Messungen kalibriert sind.
Herzschlagobjekt
e: erforderliches Dauerobjekt, vergangene Zeit.r: erforderliche Zahl, Intervall zwischen Herzschlägen in Sekunden.
Rennobjekt
id: erforderliche Rennidentität;name: Rennname;dist: Renndistanz in Metern.own: Teilnehmeridentität des Sportlers;src: Quelle des Ergebnisses.field: erforderliche Liste von Teilnehmern. Jeder hat die erforderliche Identitätpund optional Anzeigenamen, Bahnl, Rangr, Distanz in Meternd, vergangene Millisekundeneund Zielankunftskennzeichenf.
Herkunftsobjekt
kind: Ergometertyp;erg: Ergometername;hrm: Name des Herzfrequenzmessers.app: App-Version;build: App-Build;ver: Aufnahmeversion.si: Messintervall in Sekunden;npc: Kraft in Newton pro Zähleinheit;hrfix: Anzahl korrigierter Herzfrequenzmessungen.imf: Importformat;isrc: Quell-App des Imports;iat: Importzeit in Sekunden seit dem Referenzdatum vonDateauf der Plattform;ifn: importierter Dateiname.fid: Vollständigkeit der Einheit;mtd: ob die Bewegungszeit abgeleitet wurde.