Compare commits
1 Commits
context-me
...
enumerated
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
262354c8cf |
111
example/enumeratedTelemetry/bundle.js
Normal file
111
example/enumeratedTelemetry/bundle.js
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
* Open MCT Web includes source code licensed under additional open source
|
||||||
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||||
|
* this source code distribution or the Licensing information page available
|
||||||
|
* at runtime from the About dialog for additional information.
|
||||||
|
*****************************************************************************/
|
||||||
|
/*global define*/
|
||||||
|
|
||||||
|
define([
|
||||||
|
"./src/EnumeratedTelemetryProvider",
|
||||||
|
'legacyRegistry'
|
||||||
|
], function (
|
||||||
|
EnumeratedTelemetryProvider,
|
||||||
|
legacyRegistry
|
||||||
|
) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
legacyRegistry.register("example/enumeratedTelemetry", {
|
||||||
|
"name": "Enumerated telemetry generator",
|
||||||
|
"description": "Example telemetry source that provides enumerated telemetry.",
|
||||||
|
"extensions": {
|
||||||
|
"components": [
|
||||||
|
{
|
||||||
|
"implementation": EnumeratedTelemetryProvider,
|
||||||
|
"type": "provider",
|
||||||
|
"provides": "telemetryService",
|
||||||
|
"depends": [
|
||||||
|
"$q",
|
||||||
|
"$interval"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"key": "example.telemetry.enumerated",
|
||||||
|
"name": "Enumerated Telemetry Generator",
|
||||||
|
"glyph": "T",
|
||||||
|
"description": "Generated enumerated telemetry data",
|
||||||
|
"features": "creation",
|
||||||
|
"model": {
|
||||||
|
"telemetry": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"telemetry": {
|
||||||
|
"source": "example.telemetry.enumerated",
|
||||||
|
"domains": [
|
||||||
|
{
|
||||||
|
"key": "time",
|
||||||
|
"name": "Time"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ranges": [
|
||||||
|
{
|
||||||
|
"key": "eu",
|
||||||
|
"name": "Engineering Unit"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "eu",
|
||||||
|
"name": "Enum",
|
||||||
|
"type": "enum",
|
||||||
|
"format": "enum",
|
||||||
|
"enumerations": [
|
||||||
|
{
|
||||||
|
"key": "eu",
|
||||||
|
"format": "enum",
|
||||||
|
"value": 0,
|
||||||
|
"string": "OFF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "eu",
|
||||||
|
"format": "enum",
|
||||||
|
"value": 1,
|
||||||
|
"string": "IDLE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "eu",
|
||||||
|
"format": "enum",
|
||||||
|
"value": 2,
|
||||||
|
"string": "RECEIVE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "eu",
|
||||||
|
"format": "enum",
|
||||||
|
"value": 3,
|
||||||
|
"string": "TRANSMIT"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
163
example/enumeratedTelemetry/src/EnumeratedTelemetryProvider.js
Normal file
163
example/enumeratedTelemetry/src/EnumeratedTelemetryProvider.js
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
* Open MCT Web includes source code licensed under additional open source
|
||||||
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||||
|
* this source code distribution or the Licensing information page available
|
||||||
|
* at runtime from the About dialog for additional information.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
define(
|
||||||
|
["./EnumeratedTelemetrySeries"],
|
||||||
|
function (EnumeratedTelemetrySeries) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
function EnumeratedTelemetryProvider($q, $interval) {
|
||||||
|
this.$q = $q;
|
||||||
|
this.$interval = $interval;
|
||||||
|
}
|
||||||
|
|
||||||
|
EnumeratedTelemetryProvider.prototype.matchRequest = function (
|
||||||
|
request
|
||||||
|
) {
|
||||||
|
return request.source === 'example.telemetry.enumerated';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return a telemetry series between start and end time with
|
||||||
|
// 1000 telemetry points.
|
||||||
|
EnumeratedTelemetryProvider.prototype.getSeries = function (
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
request
|
||||||
|
) {
|
||||||
|
var elapsedSeconds = (end - start) / 1000,
|
||||||
|
valueEvery = elapsedSeconds / 1000,
|
||||||
|
currentSecond = 0,
|
||||||
|
values = [],
|
||||||
|
currentValue = 0;
|
||||||
|
|
||||||
|
while (currentSecond < elapsedSeconds) {
|
||||||
|
values.push({
|
||||||
|
time: +new Date(+start + (currentSecond * 1000)),
|
||||||
|
eu: currentValue
|
||||||
|
});
|
||||||
|
if ((values.length % Math.pow(3, currentValue + 1)) === 0) {
|
||||||
|
if (currentValue === 3) {
|
||||||
|
currentValue = 0;
|
||||||
|
} else {
|
||||||
|
currentValue += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentSecond += valueEvery;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new EnumeratedTelemetrySeries(values);
|
||||||
|
};
|
||||||
|
|
||||||
|
EnumeratedTelemetryProvider.prototype.requestTelemetry = function (
|
||||||
|
requests
|
||||||
|
) {
|
||||||
|
var validRequests = requests.filter(this.matchRequest),
|
||||||
|
generatedTelemetry = {},
|
||||||
|
response = {
|
||||||
|
'example.telemetry.enumerated': generatedTelemetry
|
||||||
|
};
|
||||||
|
|
||||||
|
validRequests.forEach(function (validRequest) {
|
||||||
|
var start = validRequest.start,
|
||||||
|
end = validRequest.end;
|
||||||
|
|
||||||
|
if (!end) {
|
||||||
|
end = new Date(Date.now());
|
||||||
|
}
|
||||||
|
if (!start) {
|
||||||
|
start = new Date(Date.UTC(
|
||||||
|
end.getUTCFullYear(),
|
||||||
|
end.getUTCMonth(),
|
||||||
|
end.getUTCDate() - 1,
|
||||||
|
end.getUTCHours(),
|
||||||
|
end.getUTCMinutes(),
|
||||||
|
end.getUTCSeconds(),
|
||||||
|
end.getUTCMilliseconds()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
generatedTelemetry[validRequest.key] =
|
||||||
|
this.getSeries(start, end);
|
||||||
|
}, this);
|
||||||
|
|
||||||
|
return this.$q.resolve(response);
|
||||||
|
};
|
||||||
|
|
||||||
|
EnumeratedTelemetryProvider.prototype.makeTelemetryEmitter = function (
|
||||||
|
request,
|
||||||
|
callback
|
||||||
|
) {
|
||||||
|
var valueEvery = 1000,
|
||||||
|
currentSecond = 0,
|
||||||
|
valuesGenerated = 0,
|
||||||
|
currentValue = 0,
|
||||||
|
interval;
|
||||||
|
|
||||||
|
interval = this.$interval(function () {
|
||||||
|
var value = {
|
||||||
|
time: +new Date(Date.now()),
|
||||||
|
eu: currentValue
|
||||||
|
},
|
||||||
|
series = new EnumeratedTelemetrySeries([value]);
|
||||||
|
|
||||||
|
valuesGenerated += 1;
|
||||||
|
if ((valuesGenerated % Math.pow(3, currentValue + 1)) === 0) {
|
||||||
|
if (currentValue === 3) {
|
||||||
|
currentValue = 0;
|
||||||
|
} else {
|
||||||
|
currentValue += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(series);
|
||||||
|
}, valueEvery);
|
||||||
|
|
||||||
|
return function () {
|
||||||
|
this.$interval.cancel(interval);
|
||||||
|
}.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
EnumeratedTelemetryProvider.prototype.subscribe = function (
|
||||||
|
callback,
|
||||||
|
requests
|
||||||
|
) {
|
||||||
|
var validRequests = requests.filter(this.matchRequest),
|
||||||
|
unsubscribes = validRequests.map(function (request) {
|
||||||
|
var cb = function (series) {
|
||||||
|
var telem = {},
|
||||||
|
response = {
|
||||||
|
'example.telemetry.enumerated': telem
|
||||||
|
};
|
||||||
|
telem[request.key] = series;
|
||||||
|
callback(response);
|
||||||
|
}
|
||||||
|
return this.makeTelemetryEmitter(request, cb);
|
||||||
|
}, this)
|
||||||
|
return function () {
|
||||||
|
unsubscribes.forEach(function(unsubscribe) {
|
||||||
|
unsubscribe();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
return EnumeratedTelemetryProvider;
|
||||||
|
}
|
||||||
|
);
|
||||||
63
example/enumeratedTelemetry/src/EnumeratedTelemetrySeries.js
Normal file
63
example/enumeratedTelemetry/src/EnumeratedTelemetrySeries.js
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
* Open MCT Web includes source code licensed under additional open source
|
||||||
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||||
|
* this source code distribution or the Licensing information page available
|
||||||
|
* at runtime from the About dialog for additional information.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
define([
|
||||||
|
|
||||||
|
], function (
|
||||||
|
|
||||||
|
) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
|
function EnumeratedTelemetrySeries(data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
EnumeratedTelemetrySeries.prototype.getPointCount = function (index) {
|
||||||
|
return this.data.length;
|
||||||
|
};
|
||||||
|
|
||||||
|
EnumeratedTelemetrySeries.prototype.getDatum = function (index) {
|
||||||
|
if (index > this.data.length || index < 0) {
|
||||||
|
throw new Error('IndexOutOfRange: index not available in series.');
|
||||||
|
}
|
||||||
|
return this.data[index];
|
||||||
|
};
|
||||||
|
|
||||||
|
EnumeratedTelemetrySeries.prototype.getRangeValue = function (
|
||||||
|
index,
|
||||||
|
range
|
||||||
|
) {
|
||||||
|
range = range || 'eu';
|
||||||
|
return this.getDatum(index)[range];
|
||||||
|
};
|
||||||
|
|
||||||
|
EnumeratedTelemetrySeries.prototype.getDomainValue = function (
|
||||||
|
index,
|
||||||
|
domain
|
||||||
|
) {
|
||||||
|
domain = domain || 'time';
|
||||||
|
return this.getDatum(index)[domain];
|
||||||
|
};
|
||||||
|
|
||||||
|
return EnumeratedTelemetrySeries;
|
||||||
|
});
|
||||||
6
main.js
6
main.js
@@ -93,7 +93,9 @@ define([
|
|||||||
|
|
||||||
'./example/imagery/bundle',
|
'./example/imagery/bundle',
|
||||||
'./example/eventGenerator/bundle',
|
'./example/eventGenerator/bundle',
|
||||||
'./example/generator/bundle'
|
'./example/generator/bundle',
|
||||||
|
'./example/enumeratedTelemetry/bundle'
|
||||||
|
|
||||||
], function (Main, legacyRegistry) {
|
], function (Main, legacyRegistry) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@@ -103,4 +105,4 @@ define([
|
|||||||
return new Main().run(legacyRegistry);
|
return new Main().run(legacyRegistry);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user