@openhps/core
Version:
Open Hybrid Positioning System - Core component
91 lines • 3.76 kB
JavaScript
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 };