ROWFILE/1
.rowfile зберігає одне повне веслувальне тренування в одному файлі. Row Smarter уже експортує та імпортує його. Він містить запис без втрати даних поряд з експортами CSV і TCX для електронних таблиць та тренувальних сайтів.
Цим файлом уже можна ділитися безпосередньо. Він містить усе тренування, тож у дорозі нічого не губиться.
Структура контейнера
Контейнер — детермінована послідовність, а не zip-файл. ASCII-обрамлення оточує сирі байти кожного запису:
ROWFILE/1\n
>> <name> <size in bytes, decimal>\n
<size raw bytes>\n
...repeated per entry...manifest.json записується першим. Читачі мають приймати записи в будь-якому порядку, пропускати невідомі назви й відхиляти повторення назви.
Назви записів
Row Smarter використовує ці фіксовані назви:
manifest.json: версія архіву й відомості про програму-записувач.session.json: копія без втрат, якій довіряє імпортер.summary.csv: експорт підсумку тренування.samples.csv: записані відліки.strokes.csv: записані гребки.rowingdata.csv: експорт у стилі rowingdata.beats.csv: сирі RR-інтервали.session.tcx: експорт TCX.
Записи CSV і TCX байт у байт збігаються з окремими експортами. У зібраному архіві може не бути session.json; тоді імпортер відновлює те, що може, з цих записів.
manifest.json
formatVersion — єдиний обов'язковий ключ. Інші значення можуть бути відсутні, коли інструмент збирає архів з окремих файлів.
formatVersion: ціле число. Поточний формат контейнера —1.sessionID: необов'язковий рядок UUID.appVersion: необов'язковий рядок.writer: необов'язковий рядок. Row Smarter записуєRowSmarter; інструмент відновлення —stitch-rowfile.
session.json
Версія схеми тренування — 1. Значення не округлюються. Обов'язкові ключі позначено нижче; решта необов'язкові.
Тренування
v: обов'язкове ціле число, версія схеми тренування.id: обов'язковий рядок UUID, ідентичність тренування.start: обов'язкове число, секунди від опорної датиDateплатформи.dur: обов'язковий об'єкт тривалості;mov: об'єкт тривалості часу в русі.dist: обов'язкове число, дистанція в метрах.name: назва тренування;tz: ідентифікатор початкового часового поясу;utc: початковий зсув від UTC у секундах.mass: маса тіла спортсмена в кілограмах;age: вік у роках.maxW: максимальні вати;minSplit: мінімальні секунди на 500 метрів;maxSR: максимальний темп.plan: збережений документWorkoutPlan;race: об'єкт перегонів.avgPace: середні секунди на 500 метрів;avgW: середні вати;work: загальна робота в джоулях;kcal: кілокалорії.strokeCount: обов'язкове ціле число;avgSR: середній темп.avgHR: середній пульс в ударах за хвилину;peakHR: піковий пульс в ударах за хвилину.avgLen: середня довжина гребка в сантиметрах;avgRatio: середнє співвідношення проводки й підготовки.samples: обов'язковий масив об'єктів відліків;strokes: обов'язковий масив об'єктів гребків;beats: обов'язковий масив об'єктів ударів серця.prov: об'єкт походження;hk: рядок UUID тренування HealthKit.
Об'єкт тривалості
s: обов'язкове ціле число, цілі секунди.a: обов'язкове ціле число, атосекунди.
Об'єкт відліку
t: обов'язковий об'єкт тривалості, час від початку.d: дистанція в метрах;p: час у секундах на 500 метрів;w: вати.sr: темп;sc: кількість гребків;hr: пульс в ударах за хвилину.df: драг-фактор;sl: довжина гребка в сантиметрах.ap: середній час у секундах на 500 метрів;aw: середні вати;wj: робота в джоулях.hr0: сирий пульс в ударах за хвилину.
Об'єкт гребка
i: обов'язкове ціле число, ідентичність гребка;t: обов'язковий об'єкт тривалості, час початку.dr: тривалість проводки;rc: тривалість підготовки;ds: істина, якщо час розраховано, а не отримано.d: дистанція в метрах;w: середні вати.fc: об'єкт кривої зусилля;pf: пікове зусилля в ньютонах;af: середнє зусилля в ньютонах.dl: довжина проводки в сантиметрах;sd: дистанція гребка в метрах.
Об'єкт кривої зусилля
f: обов'язковий масив відліків зусилля.dt: обов'язковий об'єкт тривалості, інтервал відліків.cal: обов'язкове логічне значення, чи калібровані відліки.
Об'єкт удару серця
e: обов'язковий об'єкт тривалості, час від початку.r: обов'язкове число, RR-інтервал у секундах.
Об'єкт перегонів
id: обов'язкова ідентичність перегонів;name: назва;dist: дистанція перегонів у метрах.own: ідентичність спортсмена як учасника;src: джерело результату.field: обов'язковий масив суперників. Кожен має обов'язкову ідентичність учасникаp, а далі необов'язкові ім'яn, доріжкуl, місцеr, дистанцію в метрахd, час у мілісекундахeі прапорець фінішуf.
Об'єкт походження
kind: тип ергометра;erg: назва ергометра;hrm: назва пульсометра.app: версія застосунку;build: збірка;ver: версія запису.si: інтервал відліків у секундах;npc: ньютонів зусилля на одиницю відліку;hrfix: кількість виправлень пульсу.imf: формат імпорту;isrc: застосунок-джерело імпорту;iat: час імпорту в секундах від опорної датиDateплатформи;ifn: назва імпортованого файлу.fid: повнота даних тренування;mtd: чи розраховано час у русі.