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
1001 B
32 lines
1001 B
import { deepFreeze, isFiniteNumber } from "../../utils";
|
|
import { validateCadenceQuality } from "../cadence";
|
|
|
|
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));
|
|
}
|