mirror of
https://github.com/nasa/openmct.git
synced 2025-04-09 04:14:32 +00:00
[Telemetry Mean] Addressed code review issues
This commit is contained in:
parent
8a66731271
commit
2390278b97
@ -65,15 +65,10 @@ define([
|
||||
};
|
||||
|
||||
MeanTelemetryProvider.prototype.subscribeToAverage = function (domainObject, samples, callback) {
|
||||
var telemetryAverager = new TelemetryAverager(this.telemetryAPI, this.timeAPI, domainObject, samples);
|
||||
var telemetryAverager = new TelemetryAverager(this.telemetryAPI, this.timeAPI, domainObject, samples, callback);
|
||||
var createAverageDatum = telemetryAverager.createAverageDatum.bind(telemetryAverager);
|
||||
|
||||
return this.telemetryAPI.subscribe(domainObject, function (telemetryDatum) {
|
||||
var avgData = telemetryAverager.createAverageDatum(telemetryDatum);
|
||||
|
||||
if (telemetryAverager.sampleCount() === samples) {
|
||||
callback(avgData);
|
||||
}
|
||||
}.bind(this));
|
||||
return this.telemetryAPI.subscribe(domainObject, createAverageDatum);
|
||||
};
|
||||
|
||||
MeanTelemetryProvider.prototype.request = function (domainObject, request) {
|
||||
@ -90,19 +85,15 @@ define([
|
||||
*/
|
||||
MeanTelemetryProvider.prototype.requestAverageTelemetry = function (domainObject, request, samples) {
|
||||
var averageData = [];
|
||||
var telemetryAverager = new TelemetryAverager(this.telemetryAPI, this.timeAPI, domainObject, samples);
|
||||
var addToAverageData = averageData.push.bind(averageData);
|
||||
var telemetryAverager = new TelemetryAverager(this.telemetryAPI, this.timeAPI, domainObject, samples, addToAverageData);
|
||||
var createAverageDatum = telemetryAverager.createAverageDatum.bind(telemetryAverager);
|
||||
|
||||
return this.telemetryAPI.request(domainObject, request).then(function (telemetryData) {
|
||||
telemetryData.forEach(function (datum) {
|
||||
var avgDatum = telemetryAverager.createAverageDatum(datum);
|
||||
|
||||
if (telemetryAverager.sampleCount() === samples) {
|
||||
averageData.push(avgDatum);
|
||||
}
|
||||
}.bind(this));
|
||||
telemetryData.forEach(createAverageDatum);
|
||||
|
||||
return averageData;
|
||||
}.bind(this));
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
define([], function () {
|
||||
|
||||
function TelemetryAverager(telemetryAPI, timeAPI, domainObject, samples) {
|
||||
function TelemetryAverager(telemetryAPI, timeAPI, domainObject, samples, averageDatumCallback) {
|
||||
this.telemetryAPI = telemetryAPI;
|
||||
this.timeAPI = timeAPI;
|
||||
|
||||
@ -37,6 +37,8 @@ define([], function () {
|
||||
// Defined dynamically based on current time system
|
||||
this.domainKey = undefined;
|
||||
this.domainFormatter = undefined;
|
||||
|
||||
this.averageDatumCallback = averageDatumCallback;
|
||||
}
|
||||
|
||||
TelemetryAverager.prototype.createAverageDatum = function (telemetryDatum) {
|
||||
@ -46,16 +48,22 @@ define([], function () {
|
||||
var rangeValue = this.rangeFormatter.parse(telemetryDatum);
|
||||
|
||||
this.averagingWindow.push(rangeValue);
|
||||
if (this.averagingWindow.length > this.samples) {
|
||||
|
||||
if (this.averagingWindow.length < this.samples) {
|
||||
// We do not have enough data to produce an average
|
||||
return;
|
||||
} else if (this.averagingWindow.length > this.samples) {
|
||||
//Do not let averaging window grow beyond defined sample size
|
||||
this.averagingWindow.shift();
|
||||
}
|
||||
|
||||
var averageValue = this.calculateMean();
|
||||
|
||||
var meanDatum = {};
|
||||
meanDatum[this.domainKey] = timeValue;
|
||||
meanDatum.value = averageValue;
|
||||
|
||||
return meanDatum;
|
||||
this.averageDatumCallback(meanDatum);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -73,6 +81,10 @@ define([], function () {
|
||||
};
|
||||
|
||||
/**
|
||||
* The mean telemetry filter produces domain values in whatever time
|
||||
* system is currently selected from the conductor. Because this can
|
||||
* change dynamically, the averager needs to be updated regularly with
|
||||
* the current domain.
|
||||
* @private
|
||||
*/
|
||||
TelemetryAverager.prototype.setDomainKeyAndFormatter = function () {
|
||||
@ -104,9 +116,5 @@ define([], function () {
|
||||
return this.telemetryAPI.getValueFormatter(valueMetadata);
|
||||
};
|
||||
|
||||
TelemetryAverager.prototype.sampleCount = function () {
|
||||
return this.averagingWindow.length;
|
||||
};
|
||||
|
||||
return TelemetryAverager;
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user