UNPKG

@hangtime/grip-connect

Version:

Griptonite Motherboard, Tindeq Progressor, PitchSix Force Board, WHC-06, Entralpi, Climbro, mySmartBoard: Bluetooth API Force-Sensing strength analysis for climbers

77 lines 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertForce = convertForce; exports.convertForceMeasurement = convertForceMeasurement; /** 1 kgf = this many N (standard gravity) */ const KG_TO_N = 9.80665; /** 1 lbf = this many N */ const LBS_TO_N = 4.4482216152605; function toNewtons(value, from) { switch (from) { case "kg": return value * KG_TO_N; case "lbs": return value * LBS_TO_N; case "n": return value; } } function fromNewtons(value, to) { switch (to) { case "kg": return value / KG_TO_N; case "lbs": return value / LBS_TO_N; case "n": return value; } } /** * Converts a force value between kg, lbs, and newtons. * @param value - The numeric force value in the source unit. * @param from - The unit of the input value. * @param to - The unit for the output value. * @returns The force value in the target unit. */ function convertForce(value, from, to) { if (from === to) return value; return fromNewtons(toNewtons(value, from), to); } /** * Converts all numeric force fields in a ForceMeasurement from one unit to another. * Recurses one level into distribution.left / center / right. * Used internally by the device model when building notify payloads. */ function convertForceMeasurement(measurement, from, to) { if (from === to) return measurement; const out = { unit: to, timestamp: measurement.timestamp, current: convertForce(measurement.current, from, to), peak: convertForce(measurement.peak, from, to), mean: convertForce(measurement.mean, from, to), min: convertForce(measurement.min, from, to), }; if (measurement.performance !== undefined) { out.performance = { ...measurement.performance }; } if (measurement.distribution && (measurement.distribution.left !== undefined || measurement.distribution.center !== undefined || measurement.distribution.right !== undefined)) { out.distribution = {}; if (measurement.distribution.left !== undefined) { out.distribution.left = convertForceMeasurement(measurement.distribution.left, from, to); } if (measurement.distribution.center !== undefined) { out.distribution.center = convertForceMeasurement(measurement.distribution.center, from, to); } if (measurement.distribution.right !== undefined) { out.distribution.right = convertForceMeasurement(measurement.distribution.right, from, to); } } return out; } //# sourceMappingURL=utils.js.map