Compare commits
	
		
			1 Commits
		
	
	
		
			release/2.
			...
			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/eventGenerator/bundle',
 | 
			
		||||
    './example/generator/bundle'
 | 
			
		||||
    './example/generator/bundle',
 | 
			
		||||
    './example/enumeratedTelemetry/bundle'
 | 
			
		||||
 | 
			
		||||
], function (Main, legacyRegistry) {
 | 
			
		||||
    'use strict';
 | 
			
		||||
 | 
			
		||||
@@ -103,4 +105,4 @@ define([
 | 
			
		||||
            return new Main().run(legacyRegistry);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
});
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user