@openhps/core
Version:
Open Hybrid Positioning System - Core component
127 lines • 4.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SensorObject = exports.SensorCalibrationData = void 0;
const tslib_1 = require("tslib");
const utils_1 = require("../../utils");
const decorators_1 = require("../decorators");
const position_1 = require("../position");
const values_1 = require("../values");
const DataObject_1 = require("./DataObject");
/**
* Sensor calibration data
*/
let SensorCalibrationData = class SensorCalibrationData {
};
exports.SensorCalibrationData = SensorCalibrationData;
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(() => utils_1.Unit),
tslib_1.__metadata("design:type", utils_1.Unit)
], SensorCalibrationData.prototype, "unit", void 0);
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(),
tslib_1.__metadata("design:type", Object)
], SensorCalibrationData.prototype, "offset", void 0);
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(),
tslib_1.__metadata("design:type", Object)
], SensorCalibrationData.prototype, "multiplier", void 0);
exports.SensorCalibrationData = SensorCalibrationData = tslib_1.__decorate([
(0, decorators_1.SerializableObject)()
], SensorCalibrationData);
/**
* A sensor object is a {@link DataObject} that is a sensor with a value.
*/
let SensorObject = class SensorObject extends DataObject_1.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 values_1.SensorValue || this.value instanceof position_1.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 values_1.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 values_1.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;
}
}
};
exports.SensorObject = SensorObject;
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(),
tslib_1.__metadata("design:type", Object)
], SensorObject.prototype, "value", void 0);
tslib_1.__decorate([
(0, decorators_1.SerializableMember)({
numberType: decorators_1.NumberType.DECIMAL,
}),
tslib_1.__metadata("design:type", Number)
], SensorObject.prototype, "frequency", void 0);
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(),
tslib_1.__metadata("design:type", SensorCalibrationData)
], SensorObject.prototype, "calibrationData", void 0);
exports.SensorObject = SensorObject = tslib_1.__decorate([
(0, decorators_1.SerializableObject)(),
tslib_1.__metadata("design:paramtypes", [String, Object, Number, String])
], SensorObject);
//# sourceMappingURL=SensorObject.js.map