Static optical madness. Fix in device resource store. Javadoc.
Change-Id: Iaba6b62094b3d2023f352d52037c6d1535c31b88
diff --git a/core/api/src/main/java/org/onosproject/net/OchSignal.java b/core/api/src/main/java/org/onosproject/net/OchSignal.java
index 356950c..e775521 100644
--- a/core/api/src/main/java/org/onosproject/net/OchSignal.java
+++ b/core/api/src/main/java/org/onosproject/net/OchSignal.java
@@ -17,6 +17,7 @@
import com.google.common.base.MoreObjects;
import org.onlab.util.Frequency;
+import org.onosproject.net.resource.link.LambdaResourceAllocation;
import java.util.Objects;
@@ -34,6 +35,9 @@
public static final Frequency CENTER_FREQUENCY = Frequency.ofTHz(193.1);
public static final Frequency FLEX_GRID_SLOT = Frequency.ofGHz(12.5);
+ private static final GridType DEFAULT_OCH_GRIDTYPE = GridType.DWDM;
+ private static final ChannelSpacing DEFAULT_CHANNEL_SPACING = ChannelSpacing.CHL_50GHZ;
+
private final GridType gridType;
private final ChannelSpacing channelSpacing;
@@ -63,6 +67,33 @@
}
/**
+ * Create OCh signal from lambda resource allocation.
+ *
+ * @param alloc lambda resource allocation
+ * @param maxFrequency maximum frequency
+ * @param grid grid spacing frequency
+ */
+ public OchSignal(LambdaResourceAllocation alloc, Frequency maxFrequency, Frequency grid) {
+ int channel = alloc.lambda().toInt();
+
+ // Calculate center frequency
+ Frequency centerFrequency = maxFrequency.subtract(grid.multiply(channel - 1));
+
+ this.gridType = DEFAULT_OCH_GRIDTYPE;
+ this.channelSpacing = DEFAULT_CHANNEL_SPACING;
+ this.spacingMultiplier = (int) (centerFrequency.subtract(OchSignal.CENTER_FREQUENCY).asHz() / grid.asHz());
+ this.slotGranularity = (int) Math.round((double) grid.asHz() / ChannelSpacing.CHL_12P5GHZ.frequency().asHz());
+ }
+
+ public OchSignal(Frequency centerFrequency, ChannelSpacing channelSpacing, int slotGranularity) {
+ this.gridType = DEFAULT_OCH_GRIDTYPE;
+ this.channelSpacing = channelSpacing;
+ this.spacingMultiplier = (int) Math.round((double) centerFrequency.
+ subtract(OchSignal.CENTER_FREQUENCY).asHz() / channelSpacing().frequency().asHz());
+ this.slotGranularity = slotGranularity;
+ }
+
+ /**
* Returns grid type.
*
* @return grid type