diff options
author | Ashlee Young <ashlee@wildernessvoice.com> | 2015-12-06 07:15:03 -0800 |
---|---|---|
committer | Ashlee Young <ashlee@wildernessvoice.com> | 2015-12-08 10:55:21 -0800 |
commit | 76dc892491948adae5e5e62cf94448967e8d865b (patch) | |
tree | 7a33ef05cc583946db21edad627060f280a53549 /framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java | |
parent | d333c63fdec8b064184b0a26f8d777f267577fde (diff) |
Fixes bad POM file with ONOS commit 8c68536972f63069c263635c9d9f4f31d7f3e9a2
Change-Id: I7adb5a2d3738d53dbc41db7577768b0e7ced5450
Signed-off-by: Ashlee Young <ashlee@wildernessvoice.com>
Diffstat (limited to 'framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java')
-rw-r--r-- | framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java index df4dfa53..270008f3 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/CalientFiberSwitchHandshaker.java @@ -17,7 +17,14 @@ package org.onosproject.driver.handshaker; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import org.onlab.util.Spectrum; +import org.onosproject.net.ChannelSpacing; +import org.onosproject.net.DefaultOchSignalComparator; import org.onosproject.net.Device; +import org.onosproject.net.GridType; +import org.onosproject.net.OchSignal; +import org.onosproject.net.PortNumber; +import org.onosproject.net.behaviour.LambdaQuery; import org.onosproject.openflow.controller.OpenFlowOpticalSwitch; import org.onosproject.openflow.controller.PortDescPropertyType; import org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch; @@ -41,9 +48,24 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; +import java.util.stream.IntStream; -public class CalientFiberSwitchHandshaker extends AbstractOpenFlowSwitch implements OpenFlowOpticalSwitch { +/** + * Driver for Calient S160 Optical Circuit Switch. Untested on Calient S320 but probably works ok. + * + * Driver implements custom handshaker, and rewrites flow stats as expected by the device. Port stats are currently + * not supported. + * + * The device consists of OMS ports only, and each port exposes lambda resources covering the whole + * usable optical spectrum (U to O band, see {@link Spectrum} for spectrum definitions). + */ +public class CalientFiberSwitchHandshaker + extends AbstractOpenFlowSwitch + implements OpenFlowOpticalSwitch, LambdaQuery { private final AtomicBoolean driverHandshakeComplete = new AtomicBoolean(false); private List<OFCalientPortDescStatsEntry> fiberPorts = new ArrayList<>(); @@ -178,4 +200,22 @@ public class CalientFiberSwitchHandshaker extends AbstractOpenFlowSwitch impleme super.sendMsg(newMsg); } + + @Override + public SortedSet<OchSignal> queryLambdas(PortNumber port) { + // S160 data sheet + // Wavelength range: 1260 - 1630 nm + long startSpacingMultiplier = Spectrum.U_BAND_MIN.subtract(Spectrum.CENTER_FREQUENCY).asHz() / + ChannelSpacing.CHL_12P5GHZ.frequency().asHz(); + long stopSpacingMultiplier = Spectrum.O_BAND_MAX.subtract(Spectrum.CENTER_FREQUENCY).asHz() / + ChannelSpacing.CHL_12P5GHZ.frequency().asHz(); + List<OchSignal> lambdas = IntStream.rangeClosed((int) startSpacingMultiplier, (int) stopSpacingMultiplier) + .mapToObj(x -> new OchSignal(GridType.FLEX, ChannelSpacing.CHL_12P5GHZ, x, 1)) + .collect(Collectors.toList()); + + SortedSet<OchSignal> result = new TreeSet<>(new DefaultOchSignalComparator()); + result.addAll(lambdas); + + return result; + } } |