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/OfOpticalSwitchImplLinc13.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/OfOpticalSwitchImplLinc13.java')
-rw-r--r-- | framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/OfOpticalSwitchImplLinc13.java | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/OfOpticalSwitchImplLinc13.java b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/OfOpticalSwitchImplLinc13.java index f91e2a7e..23378e95 100644 --- a/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/OfOpticalSwitchImplLinc13.java +++ b/framework/src/onos/drivers/src/main/java/org/onosproject/driver/handshaker/OfOpticalSwitchImplLinc13.java @@ -16,7 +16,13 @@ package org.onosproject.driver.handshaker; import com.google.common.collect.ImmutableSet; +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; @@ -42,7 +48,6 @@ import org.projectfloodlight.openflow.protocol.match.Match; import org.projectfloodlight.openflow.protocol.match.MatchField; import org.projectfloodlight.openflow.protocol.oxm.OFOxmExpOchSigId; import org.projectfloodlight.openflow.types.CircuitSignalID; -import org.projectfloodlight.openflow.types.OFPort; import org.projectfloodlight.openflow.types.U8; import java.io.IOException; @@ -51,7 +56,11 @@ import java.util.Collections; import java.util.LinkedList; 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; /** * LINC-OE Optical Emulator switch class. @@ -65,10 +74,13 @@ import java.util.concurrent.atomic.AtomicBoolean; * As LINC implements custom OF optical extensions (in contrast to the final standard as specified in * ONF TS-022 (March 15, 2015), we need to rewrite flow stat requests and flow mods in {@link #sendMsg(OFMessage)}. * + * LINC exposes OchSignal resources: 80 lambdas of 50 GHz around ITU-T G.694.1 center frequency 193.1 GHz. + * */ public class OfOpticalSwitchImplLinc13 - extends AbstractOpenFlowSwitch implements OpenFlowOpticalSwitch { + extends AbstractOpenFlowSwitch implements OpenFlowOpticalSwitch, LambdaQuery { + private static final int LAMBDA_COUNT = 80; private final AtomicBoolean driverHandshakeComplete = new AtomicBoolean(false); private long barrierXidToWaitFor = -1; @@ -267,13 +279,13 @@ public class OfOpticalSwitchImplLinc13 /** * Checks if given port is also part of the regular port desc stats, i.e., is the port a tap port. * - * @param port given OF port + * @param port given port number * @return true if the port is a tap (OCh), false otherwise (OMS port) */ - private boolean hasPort(OFPort port) { + private boolean isOChPort(long port) { for (OFPortDescStatsReply reply : this.ports) { for (OFPortDesc p : reply.getEntries()) { - if (p.getPortNo().equals(port)) { + if (p.getPortNo().getPortNumber() == port) { return true; } } @@ -328,7 +340,7 @@ public class OfOpticalSwitchImplLinc13 short signalType; // FIXME: use constants once loxi has full optical extensions - if (hasPort(p.getPortNo())) { + if (isOChPort(p.getPortNo().getPortNumber())) { signalType = 5; // OCH port } else { signalType = 2; // OMS port @@ -351,4 +363,23 @@ public class OfOpticalSwitchImplLinc13 public Set<PortDescPropertyType> getPortTypes() { return ImmutableSet.of(PortDescPropertyType.OPTICAL_TRANSPORT); } + + @Override + public SortedSet<OchSignal> queryLambdas(PortNumber port) { + // OCh ports don't have lambdas + if (isOChPort(port.toLong())) { + return Collections.emptySortedSet(); + } + + // OMS ports expose 80 lambdas of 50GHz width, centered around the ITU-T center frequency. + // We report these with a spacing of 12.5 GHz. + List<OchSignal> lambdas = IntStream.range(0, LAMBDA_COUNT) + .mapToObj(x -> new OchSignal(GridType.FLEX, ChannelSpacing.CHL_12P5GHZ, x - (LAMBDA_COUNT / 2), 1)) + .collect(Collectors.toList()); + + SortedSet<OchSignal> result = new TreeSet<>(new DefaultOchSignalComparator()); + result.addAll(lambdas); + + return result; + } } |