changed API ID order, added xICIC support, added config fields for adm and bearer requests
diff --git a/src/main/java/org.onosproject.xran/entities/RnibCell.java b/src/main/java/org.onosproject.xran/entities/RnibCell.java
index d917f02..81aeafd 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibCell.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibCell.java
@@ -35,6 +35,8 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Created by dimitris on 7/22/17.
@@ -49,10 +51,12 @@
private RRMConfig rrmConfig;
private L2MeasConfig measConfig;
+ private String version;
+
public RnibCell() {
prbUsage = new PrbUsageContainer();
setDefaultRRMConf();
-
+ version = "3";
}
public static URI uri(ECGI ecgi) {
@@ -81,6 +85,14 @@
return ecgi;
}
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
public RRMConfig getRrmConfig() {
return rrmConfig;
}
@@ -100,10 +112,6 @@
private void setDefaultRRMConf() {
rrmConfig = new RRMConfig();
- RRMConfig.Crnti crnti2 = new RRMConfig.Crnti();
-
- rrmConfig.setCrnti(crnti2);
-
rrmConfig.setEcgi(ecgi);
RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
@@ -164,27 +172,71 @@
RRMConfig.Crnti crnti = new RRMConfig.Crnti();
ueList.forEach(ue -> crnti.addCRNTI(ue.getRanId()));
- RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
- RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
- int i = 0;
- if (rrmConfigNode.get("start_prb_dl").isArray()) {
- for (final JsonNode config : rrmConfigNode) {
- startPrbDl.getSeqOf().set(i, new BerInteger(config.asInt()));
- i++;
+ {
+ JsonNode start_prb_dl = rrmConfigNode.get("start_prb_dl");
+ if (start_prb_dl != null) {
+ RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
+ if (start_prb_dl.isArray()) {
+ if (rrmConfig.getStartPrbDl().getSeqOf().size() == start_prb_dl.size()) {
+ List<BerInteger> collect = Stream.of(start_prb_dl)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ startPrbDl.setSeqOf(collect);
+ }
+ }
+ rrmConfig.setStartPrbDl(startPrbDl);
}
}
- i = 0;
- if (rrmConfigNode.get("end_prb_dl").isArray()) {
- for (final JsonNode config : rrmConfigNode) {
- endPrbDl.getSeqOf().set(i, new BerInteger(config.asInt()));
- i++;
- }
- }
- rrmConfig.setEndPrbDl(endPrbDl);
- rrmConfig.setStartPrbDl(startPrbDl);
- rrmConfig.setCrnti(crnti);
- rrmConfig.setEcgi(ecgi);
+ {
+ JsonNode end_prb_dl = rrmConfigNode.get("end_prb_dl");
+ if (end_prb_dl != null) {
+ RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
+ if (end_prb_dl.isArray()) {
+ if (rrmConfig.getEndPrbDl().getSeqOf().size() == end_prb_dl.size()) {
+ List<BerInteger> collect = Stream.of(end_prb_dl)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ endPrbDl.setSeqOf(collect);
+ }
+ }
+ rrmConfig.setEndPrbDl(endPrbDl);
+ }
+ }
+
+ {
+ JsonNode start_prb_ul = rrmConfigNode.get("start_prb_ul");
+ if (start_prb_ul != null) {
+ RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
+ if (start_prb_ul.isArray()) {
+ if (rrmConfig.getStartPrbUl().getSeqOf().size() == start_prb_ul.size()) {
+ List<BerInteger> collect = Stream.of(start_prb_ul)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ startPrbUl.setSeqOf(collect);
+ }
+ }
+ rrmConfig.setStartPrbUl(startPrbUl);
+ }
+ }
+
+ {
+ JsonNode end_prb_ul = rrmConfigNode.get("end_prb_ul");
+ if (end_prb_ul != null) {
+ RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
+ if (end_prb_ul.isArray()) {
+ if (rrmConfig.getEndPrbUl().getSeqOf().size() == end_prb_ul.size()) {
+ List<BerInteger> collect = Stream.of(end_prb_ul)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ endPrbUl.setSeqOf(collect);
+ }
+ }
+ rrmConfig.setEndPrbUl(endPrbUl);
+ }
+ }
+
+ rrmConfig.setCrnti(crnti);
// TODO
}
diff --git a/src/main/java/org.onosproject.xran/entities/RnibLink.java b/src/main/java/org.onosproject.xran/entities/RnibLink.java
index d9f39cc..8af1644 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibLink.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibLink.java
@@ -16,15 +16,20 @@
package org.onosproject.xran.entities;
+import com.fasterxml.jackson.databind.JsonNode;
import org.onosproject.xran.codecs.api.*;
import org.onosproject.xran.codecs.pdu.PDCPMeasReportPerUe;
import org.onosproject.xran.codecs.pdu.RRMConfig;
import org.onosproject.xran.identifiers.LinkId;
+import org.openmuc.jasn1.ber.types.BerBitString;
import org.openmuc.jasn1.ber.types.BerInteger;
import java.util.Arrays;
+import java.util.List;
import java.util.Optional;
import java.util.Timer;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Created by dimitris on 7/22/17.
@@ -59,6 +64,8 @@
type = Type.NON_SERVING;
linkId = LinkId.valueOf(cell, ue);
+
+ setDefaultRRMConf();
}
public Timer getTimer() {
@@ -124,6 +131,74 @@
this.rrmParameters = rrmParameters;
}
+ public void modifyRrmParameters(JsonNode rrmConfigNode) {
+ {
+ JsonNode start_prb_dl = rrmConfigNode.get("start_prb_dl");
+ if (start_prb_dl != null) {
+ RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
+ if (start_prb_dl.isArray()) {
+ if (rrmParameters.getStartPrbDl().getSeqOf().size() == start_prb_dl.size()) {
+ List<BerInteger> collect = Stream.of(start_prb_dl)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ startPrbDl.setSeqOf(collect);
+ }
+ }
+ rrmParameters.setStartPrbDl(startPrbDl);
+ }
+ }
+
+ {
+ JsonNode end_prb_dl = rrmConfigNode.get("end_prb_dl");
+ if (end_prb_dl != null) {
+ RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
+ if (end_prb_dl.isArray()) {
+ if (rrmParameters.getEndPrbDl().getSeqOf().size() == end_prb_dl.size()) {
+ List<BerInteger> collect = Stream.of(end_prb_dl)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ endPrbDl.setSeqOf(collect);
+ }
+ }
+ rrmParameters.setEndPrbDl(endPrbDl);
+ }
+ }
+
+ {
+ JsonNode start_prb_ul = rrmConfigNode.get("start_prb_ul");
+ if (start_prb_ul != null) {
+ RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
+ if (start_prb_ul.isArray()) {
+ if (rrmParameters.getStartPrbUl().getSeqOf().size() == start_prb_ul.size()) {
+ List<BerInteger> collect = Stream.of(start_prb_ul)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ startPrbUl.setSeqOf(collect);
+ }
+ }
+ rrmParameters.setStartPrbUl(startPrbUl);
+ }
+ }
+
+ {
+ JsonNode end_prb_ul = rrmConfigNode.get("end_prb_ul");
+ if (end_prb_ul != null) {
+ RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
+ if (end_prb_ul.isArray()) {
+ if (rrmParameters.getEndPrbUl().getSeqOf().size() == end_prb_ul.size()) {
+ List<BerInteger> collect = Stream.of(end_prb_ul)
+ .map(val -> new BerInteger(val.asInt()))
+ .collect(Collectors.toList());
+ endPrbUl.setSeqOf(collect);
+ }
+ }
+ rrmParameters.setEndPrbUl(endPrbUl);
+ }
+ }
+
+ // TODO
+ }
+
public PDCPThroughput getPdcpThroughput() {
return pdcpThroughput;
}
@@ -148,6 +223,50 @@
this.resourceUsage = resourceUsage;
}
+ private void setDefaultRRMConf() {
+ rrmParameters = new RRMConfig();
+
+ RRMConfig.Crnti crnti = new RRMConfig.Crnti();
+ crnti.addCRNTI(linkId.getUe().getRanId());
+
+ rrmParameters.setCrnti(crnti);
+
+ rrmParameters.setEcgi(linkId.getEcgi());
+
+ RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
+ startPrbDl.addBerInteger(new BerInteger(0));
+ startPrbDl.addBerInteger(new BerInteger(50));
+
+ rrmParameters.setStartPrbDl(startPrbDl);
+
+ RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
+ startPrbUl.addBerInteger(new BerInteger(50));
+ startPrbUl.addBerInteger(new BerInteger(100));
+
+ rrmParameters.setStartPrbUl(startPrbUl);
+
+ RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
+ endPrbDl.addBerInteger(new BerInteger(50));
+ endPrbDl.addBerInteger(new BerInteger(100));
+
+ rrmParameters.setEndPrbDl(endPrbDl);
+
+ RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
+ endPrbUl.addBerInteger(new BerInteger(50));
+ endPrbUl.addBerInteger(new BerInteger(100));
+
+ rrmParameters.setEndPrbUl(endPrbUl);
+
+ RRMConfig.SubframeBitmaskDl subframeBitmaskDl = new RRMConfig.SubframeBitmaskDl();
+ BerBitString berBitString = new BerBitString(new byte[]{(byte) 0xAA, (byte) 0x80}, 10);
+ BerBitString berBitString1 = new BerBitString(new byte[]{(byte) 0x55, (byte) 0x40}, 10);
+
+ subframeBitmaskDl.addBerBitString(berBitString);
+ subframeBitmaskDl.addBerBitString(berBitString1);
+
+ rrmParameters.setSubframeBitmaskDl(subframeBitmaskDl);
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();