Refactor DpQpsk/DpQam16 100G OFEC support 18/101318/2
authorguillaume.lambert <guillaume.lambert@orange.com>
Sat, 28 May 2022 14:52:43 +0000 (16:52 +0200)
committerguillaume.lambert <guillaume.lambert@orange.com>
Sat, 28 May 2022 15:07:46 +0000 (17:07 +0200)
JIRA: TRNSPRTPCE-636
Signed-off-by: guillaume.lambert <guillaume.lambert@orange.com>
Change-Id: Idfae5b92ba0b2bddd366ee2fbf03c5fd3978eb19

renderer/src/main/java/org/opendaylight/transportpce/renderer/openroadminterface/OpenRoadmInterface710.java

index 51fdf96269f14444154ed275a2494318baaa050e..ecbb6eb7525393b85de93ef622577fbdf799aa08 100644 (file)
@@ -12,6 +12,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.IntStream;
 import org.opendaylight.transportpce.common.StringConstants;
@@ -1090,45 +1091,41 @@ public class OpenRoadmInterface710 {
         justification = "call in call() method")
     private int getServiceRate(ModulationFormat modulationFormat, SpectrumInformation spectrumInformation) {
 
-        double spectralWidth = (spectrumInformation.getHigherSpectralSlotNumber()
-            - spectrumInformation.getLowerSpectralSlotNumber() + 1) * GridConstant.GRANULARITY;
+        int rate;
         switch (modulationFormat) {
             case DpQpsk:
-                // DpQpsk is possible for both 31.6 or 63.1 GBaud, for which spectral width is different
-                // Here take the difference of highest and lowest spectral numbers and determine the width
-                LOG.info("The width with guard band {}", spectralWidth);
-                if (spectralWidth == 50.0) {
-                    // Based on roll-of-factor of 0.2, 50 - 12.5 = 37.5GHz translates to 31.6 GBaud
-                    LOG.info("The baud-rate is 31.6 GBaud");
-                    LOG.info("Given modulation format {} with 31.6 Gbaud rate is 100G", modulationFormat);
-                    return 100;
-                } else {
-                    // Based on roll-of-factor of 0.2, 87.5 - 12.5 = 75GHz translates to 63.1 GBaud
-                    LOG.info("The baud-rate is 63.1 GBaud");
-                    return 200;
-                }
-            case DpQam8:
-                LOG.info("Given modulation format is {} and thus rate is 300G", modulationFormat);
-                return 300;
             case DpQam16:
-                // DpQam16 is possible for both 31.6 or 63.1 GBaud, for which spectral width is different
+                // DpQpsk and DpQam16 are possible for both 31.6 or 63.1 GBaud, for which spectral width is different
                 // Here take the difference of highest and lowest spectral numbers and determine the width
+                double spectralWidth = (spectrumInformation.getHigherSpectralSlotNumber()
+                    - spectrumInformation.getLowerSpectralSlotNumber() + 1) * GridConstant.GRANULARITY;
                 LOG.info("The width with guard band {}", spectralWidth);
+                Map<ModulationFormat, Integer> rateMap;
                 if (spectralWidth == 50.0) {
+                    rateMap = Map.of(
+                            ModulationFormat.DpQpsk , 100,
+                            ModulationFormat.DpQam16 , 200);
                     // Based on roll-of-factor of 0.2, 50 - 12.5 = 37.5GHz translates to 31.6 GBaud
                     LOG.info("The baud-rate is 31.6 GBaud");
-                    LOG.info("Given modulation format {} with 31.6 Gbaud rate is 200G", modulationFormat);
-                    return 200;
+                    return rateMap.get(modulationFormat);
                 } else {
+                    rateMap = Map.of(
+                            ModulationFormat.DpQpsk , 200,
+                            ModulationFormat.DpQam16 , 400);
                     // Based on roll-of-factor of 0.2, 87.5 - 12.5 = 75GHz translates to 63.1 GBaud
                     LOG.info("The baud-rate is 63.1 GBaud");
-                    return 400;
                 }
+                rate = rateMap.get(modulationFormat);
+                break;
+            case DpQam8:
+                rate = 300;
+                break;
             default:
                 LOG.error("Modulation format is required to select the rate");
-                break;
+                return 0;
         }
-        return 0;
+        LOG.info("Given modulation format {} rate is {}", modulationFormat, rate);
+        return rate;
     }
 
 }