Avoid converting spanloss to double when calculating target power value 73/90173/2
authorJonas Mårtensson <jonas.martensson@ri.se>
Sun, 31 May 2020 18:02:09 +0000 (20:02 +0200)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Tue, 9 Jun 2020 14:51:43 +0000 (14:51 +0000)
Currently spanloss is measured and set without any fractional digits.
We would like to have one fractional digit but this creates problems
because of the conversion to double when calculating target power
resulting in the power value having more than the two fractional digits
allowed by the yang module. This patch proposes to skip the conversion
to double and only use BigDecimal to avoid the problem.

The proposal to measure spanloss with one fractional digit will be
submitted in a separate patch.

Signed-off-by: Jonas Mårtensson <jonas.martensson@ri.se>
Change-Id: Ibd13c991d43f2e94739710412e8edadcc0c537bf

olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtImpl.java

index 9b05e83a9911a18e9ef634cba718f9e59d61660f..e8da5c3f8bae688f6662800e5c2b99c8b9b40b17 100644 (file)
@@ -260,7 +260,8 @@ public class PowerMgmtImpl implements PowerMgmt {
                                 "Power Value is null: spanLossTx null or out of openROADM range ]0,28] {}", spanLossTx);
                             return false;
                         }
-                        BigDecimal powerValue = BigDecimal.valueOf(Math.min(spanLossTx.doubleValue() - 9, 2));
+                        BigDecimal powerValue = spanLossTx.subtract(BigDecimal.valueOf(9));
+                        powerValue = powerValue.min(BigDecimal.valueOf(2));
                         LOG.info("Power Value is {}", powerValue);
 
                         try {