| // ***************************************************************************** |
| // Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // which accompanies this distribution, and is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // Contributors: |
| // Pierre Allard - initial API and implementation |
| // Regent L'Archeveque |
| // |
| // SPDX-License-Identifier: EPL-1.0 |
| // ***************************************************************************** |
| @GenModel(prefix="ApogyAddonsSensors", |
| childCreationExtenders="true", |
| extensibleProviderFactory="true", |
| multipleEditorPages="false", |
| copyrightText="******************************************************************************* |
| Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency |
| All rights reserved. This program and the accompanying materials |
| are made available under the terms of the Eclipse Public License v1.0 |
| which accompanies this distribution, and is available at |
| http://www.eclipse.org/legal/epl-v10.html |
| |
| Contributors: |
| Pierre Allard - initial API and implementation |
| Regent L'Archeveque |
| |
| SPDX-License-Identifier: EPL-1.0 |
| *******************************************************************************", |
| modelName="ApogyAddonsSensors", |
| suppressGenModelAnnotations="false", |
| dynamicTemplates="true", |
| templateDirectory="platform:/plugin/org.eclipse.apogy.common.emf.codegen/templates") |
| @GenModel(modelDirectory="/org.eclipse.apogy.addons.sensors/src-gen") |
| @GenModel(editDirectory="/org.eclipse.apogy.addons.sensors.edit/src-gen") |
| |
| package org.eclipse.apogy.addons.sensors |
| |
| import org.eclipse.apogy.common.topology.Node |
| import org.eclipse.apogy.common.topology.AggregateGroupNode |
| |
| /** |
| * Represents the various states that a sensor could be in. |
| * |
| * Typical status transitions : |
| * |
| * Power up (nominal) : OFF -> BUSY (initialization) -> READY |
| * Power up (off-nominal) : OFF -> BUSY (initialization) -> FAILED |
| * |
| * Data acquisition (nominal): READY -> BUSY (Acquisition) -> READY |
| * Data acquisition (off-nominal): READY -> BUSY (Acquisition) -> FAILED |
| */ |
| enum SensorStatus |
| { |
| OFF as "OFF" = 0 |
| READY as "READY" = 1 |
| BUSY as "BUSY" = 2 |
| FAILED as "FAILED" = 3 |
| } |
| |
| /** |
| * Base class for Sensors. |
| */ |
| class Sensor extends AggregateGroupNode |
| { |
| transient SensorStatus status = "OFF" |
| } |
| |
| /** |
| * Defines a item that is referenced relative to a Node. |
| */ |
| class Referenceable |
| { |
| /** |
| * The Node that is the reference. |
| */ |
| refers Node referenceFrame |
| } |