You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
1013 B

import { deepFreeze, isFiniteNumber } from "../../utils/index.js";
import { validateCadenceQuality } from "../cadence.js";
export class Sensors {
constructor({
supportsHeartRate = false,
supportsCadence = false,
supportsPower = false,
hrSamplingHz,
cadenceSamplingHz,
powerSamplingHz,
cadenceSourceQuality,
} = {}) {
this.supportsHeartRate = Boolean(supportsHeartRate);
this.supportsCadence = Boolean(supportsCadence);
this.supportsPower = Boolean(supportsPower);
this.hrSamplingHz = isFiniteNumber(hrSamplingHz)
? Number(hrSamplingHz)
: undefined;
this.cadenceSamplingHz = isFiniteNumber(cadenceSamplingHz)
? Number(cadenceSamplingHz)
: undefined;
this.powerSamplingHz = isFiniteNumber(powerSamplingHz)
? Number(powerSamplingHz)
: undefined;
this.cadenceSourceQuality = validateCadenceQuality(cadenceSourceQuality);
deepFreeze(this);
}
merge = (partial) => new Sensors(Object.assign({}, this, partial));
}