VEU.WathBody/3-app/5-watch/FenixDataField/source/SetTracker.mc

55 lines
1.7 KiB
MonkeyC
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Метрики подхода между нажатиями Lap (errata Ф-2.3):
// «время подхода» = время с последнего Lap по timerTime (включает предшествующий
// отдых — errata Ф-2.1), «средний пульс подхода» = среднее сэмплов за интервал.
// Часы ядра — Activity.Info.timerTime (при паузе активности стоит сам).
class SetTracker {
var lapAtMs; // timerTime последнего Lap (мс)
var sumBpm;
var nBpm;
function initialize() {
lapAtMs = 0;
sumBpm = 0;
nBpm = 0;
}
// Lap = граница подхода: метрики обнуляются
function onLap(timerTimeMs) {
lapAtMs = timerTimeMs;
sumBpm = 0;
nBpm = 0;
}
// null-пульс (датчик не готов) в среднее не попадает
function onSample(bpm) {
if (bpm != null && bpm > 0) {
sumBpm += bpm;
nBpm += 1;
}
}
// Время с границы подхода, мс
function elapsedMs(timerTimeMs) {
return timerTimeMs - lapAtMs;
}
// Средний пульс интервала (округление к ближайшему, целочисленно — без
// Float), null пока нет сэмплов
function avgBpm() {
if (nBpm > 0) {
var num = sumBpm * 2;
var den = nBpm * 2;
var q = 0;
while (num >= den) {
num -= den;
q += 1;
}
if (num * 2 >= den) {
q += 1;
}
return q;
}
return null;
}
}