UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

91 lines 3.76 kB
import { __decorate, __metadata } from "tslib"; import { Unit } from '../../utils'; import { NumberType, SerializableMember, SerializableObject } from '../decorators'; import { Orientation } from '../position'; import { SensorValue } from '../values'; import { DataObject } from './DataObject'; /** * Sensor calibration data */ let SensorCalibrationData = class SensorCalibrationData {}; __decorate([SerializableMember(() => Unit), __metadata("design:type", Unit)], SensorCalibrationData.prototype, "unit", void 0); __decorate([SerializableMember(), __metadata("design:type", Object)], SensorCalibrationData.prototype, "offset", void 0); __decorate([SerializableMember(), __metadata("design:type", Object)], SensorCalibrationData.prototype, "multiplier", void 0); SensorCalibrationData = __decorate([SerializableObject()], SensorCalibrationData); export { SensorCalibrationData }; /** * A sensor object is a {@link DataObject} that is a sensor with a value. */ let SensorObject = class SensorObject extends DataObject { constructor(uid, value, frequency, displayName) { super(uid, displayName); this.value = value !== null && value !== void 0 ? value : {}; this.frequency = frequency; } /** * Get the sensor timestamp * @returns {number} timestamp */ get timestamp() { return this.value instanceof SensorValue || this.value instanceof Orientation ? this.value.timestamp : this.createdTimestamp; } /** * Raw value before calibration * @returns {SensorValue | object | Orientation} raw sensor value */ get raw() { if (this.calibrationData) { if (this.value instanceof SensorValue) { let result = this.value.clone(); const offset = this.calibrationData.offset; const multiplier = this.calibrationData.multiplier; if (multiplier) { result = result.divide(multiplier); } if (offset) { result = result.sub(offset); } return result; } else { return this.value; } } else if (typeof this.value === 'number') { const offset = this.calibrationData.offset; const multiplier = this.calibrationData.multiplier; return this.value / (multiplier !== null && multiplier !== void 0 ? multiplier : 1) - (offset !== null && offset !== void 0 ? offset : 0); } else { return this.value; } } set raw(value) { if (this.calibrationData) { if (value instanceof SensorValue) { let result = value.clone(); const offset = this.calibrationData.offset; const multiplier = this.calibrationData.multiplier; if (offset) { result = result.add(offset); } if (multiplier) { result = result.multiply(multiplier); } this.value = result; } else { this.value = value; } } else if (typeof value === 'number') { const offset = this.calibrationData.offset; const multiplier = this.calibrationData.multiplier; this.value = (value + (offset !== null && offset !== void 0 ? offset : 0)) * (multiplier !== null && multiplier !== void 0 ? multiplier : 1); } else { this.value = value; } } }; __decorate([SerializableMember(), __metadata("design:type", Object)], SensorObject.prototype, "value", void 0); __decorate([SerializableMember({ numberType: NumberType.DECIMAL }), __metadata("design:type", Number)], SensorObject.prototype, "frequency", void 0); __decorate([SerializableMember(), __metadata("design:type", SensorCalibrationData)], SensorObject.prototype, "calibrationData", void 0); SensorObject = __decorate([SerializableObject(), __metadata("design:paramtypes", [String, Object, Number, String])], SensorObject); export { SensorObject };