| /* |
| * Copyright 2015-present Open Networking Laboratory |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.onosproject.xran.entities; |
| |
| 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.BerInteger; |
| |
| import java.util.Timer; |
| |
| /** |
| * Created by dimitris on 7/22/17. |
| */ |
| public class RnibLink { |
| private LinkId linkId; |
| // private String type; |
| private RRMConfig rrmParameters; |
| |
| private TrafficSplitPercentage trafficPercent; |
| private ERABParams bearerParameters; |
| |
| private LinkQuality quality; |
| private PDCPThroughput pdcpThroughput; |
| private PDCPPacketDelay pdcpPackDelay; |
| private ResourceUsage resourceUsage; |
| private Type type; |
| private Timer timer; |
| |
| public RnibLink() { |
| trafficPercent = new TrafficSplitPercentage(); |
| trafficPercent.setTrafficPercentDl(new BerInteger(100)); |
| trafficPercent.setTrafficPercentUl(new BerInteger(100)); |
| |
| pdcpThroughput = new PDCPThroughput(); |
| quality = new LinkQuality(); |
| pdcpPackDelay = new PDCPPacketDelay(); |
| resourceUsage = new ResourceUsage(); |
| timer = new Timer(); |
| } |
| |
| public Timer getTimer() { |
| return timer; |
| } |
| |
| public void setTimer(Timer timer) { |
| this.timer.cancel(); |
| this.timer.purge(); |
| this.timer = timer; |
| } |
| |
| public LinkId getLinkId() { |
| return linkId; |
| } |
| |
| public void setLinkId(LinkId linkId) { |
| this.linkId = linkId; |
| } |
| |
| public void setLinkId(RnibCell cell, RnibUe ue) { |
| this.linkId = new LinkId(cell.getEcgi(), ue.getMmeS1apId()); |
| trafficPercent.setEcgi(cell.getEcgi()); |
| } |
| |
| public Type getType() { |
| return type; |
| } |
| |
| public void setType(Type type) { |
| this.type = type; |
| } |
| |
| public TrafficSplitPercentage getTrafficPercent() { |
| return trafficPercent; |
| } |
| |
| public void setTrafficPercent(TrafficSplitPercentage trafficPercent) { |
| this.trafficPercent = trafficPercent; |
| } |
| |
| public ERABParams getBearerParameters() { |
| return bearerParameters; |
| } |
| |
| public void setBearerParameters(ERABParams bearerParameters) { |
| this.bearerParameters = bearerParameters; |
| } |
| |
| public LinkQuality getQuality() { |
| return quality; |
| } |
| |
| public void setQuality(LinkQuality quality) { |
| this.quality = quality; |
| } |
| |
| public RRMConfig getRrmParameters() { |
| return rrmParameters; |
| } |
| |
| public void setRrmParameters(RRMConfig rrmParameters) { |
| this.rrmParameters = rrmParameters; |
| } |
| |
| public PDCPThroughput getPdcpThroughput() { |
| return pdcpThroughput; |
| } |
| |
| public void setPdcpThroughput(PDCPThroughput pdcpThroughput) { |
| this.pdcpThroughput = pdcpThroughput; |
| } |
| |
| public PDCPPacketDelay getPdcpPackDelay() { |
| return pdcpPackDelay; |
| } |
| |
| public void setPdcpPackDelay(PDCPPacketDelay pdcpPackDelay) { |
| this.pdcpPackDelay = pdcpPackDelay; |
| } |
| |
| public ResourceUsage getResourceUsage() { |
| return resourceUsage; |
| } |
| |
| public void setResourceUsage(ResourceUsage resourceUsage) { |
| this.resourceUsage = resourceUsage; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("{\n") |
| .append(linkId != null ? "\"link-id\":" + linkId : "") |
| .append(type != null ? ",\n\"type\":" + type : "") |
| .append(rrmParameters != null ? ",\n\"rrm-params\":" + rrmParameters : "") |
| .append(trafficPercent != null ? ",\n\"traffic-percent\":" + trafficPercent : "") |
| .append(bearerParameters != null ? ",\n\"bearer-params\":" + bearerParameters : "") |
| .append(quality != null ? ",\n\"quality\":" + quality : "") |
| .append(pdcpThroughput != null ? ",\n\"pdcp-throughput\":" + pdcpThroughput : "") |
| .append(pdcpPackDelay != null ? ",\n\"pdcp-packet-delay\":" + pdcpPackDelay : "") |
| .append(resourceUsage != null ? ",\n\"resource-usage\":" + resourceUsage : "") |
| .append("\n}\n"); |
| return sb.toString(); |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (this == o) return true; |
| if (o == null || getClass() != o.getClass()) return false; |
| |
| RnibLink link = (RnibLink) o; |
| |
| return linkId.equals(link.linkId); |
| } |
| |
| @Override |
| public int hashCode() { |
| return linkId.hashCode(); |
| } |
| |
| public enum Type { |
| SERVING_PRIMARY { |
| @Override |
| public String toString() { |
| return "\"serving/primary\""; |
| } |
| }, |
| // TODO: Add CA/DC |
| SERVING_SECONDARY { |
| @Override |
| public String toString() { |
| return "\"serving/secondary\""; |
| } |
| }, |
| NON_SERVING { |
| @Override |
| public String toString() { |
| return "\"non-serving\""; |
| } |
| } |
| } |
| |
| public class PDCPThroughput { |
| private PDCPMeasReportPerUe.ThroughputDl dl; |
| private PDCPMeasReportPerUe.ThroughputUl ul; |
| |
| public PDCPMeasReportPerUe.ThroughputDl getDl() { |
| return dl; |
| } |
| |
| public void setDl(PDCPMeasReportPerUe.ThroughputDl dl) { |
| this.dl = dl; |
| } |
| |
| public PDCPMeasReportPerUe.ThroughputUl getUl() { |
| return ul; |
| } |
| |
| public void setUl(PDCPMeasReportPerUe.ThroughputUl ul) { |
| this.ul = ul; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("{\n") |
| .append(dl != null ? "\"dl\":" + dl : "") |
| .append(ul != null ? ",\n\"ul\":" + ul : "") |
| .append("\n}\n"); |
| return sb.toString(); |
| } |
| } |
| |
| public class PDCPPacketDelay { |
| PDCPMeasReportPerUe.PktDelayDl dl; |
| PDCPMeasReportPerUe.PktDelayUl ul; |
| |
| public PDCPMeasReportPerUe.PktDelayDl getDl() { |
| return dl; |
| } |
| |
| public void setDl(PDCPMeasReportPerUe.PktDelayDl dl) { |
| this.dl = dl; |
| } |
| |
| public PDCPMeasReportPerUe.PktDelayUl getUl() { |
| return ul; |
| } |
| |
| public void setUl(PDCPMeasReportPerUe.PktDelayUl ul) { |
| this.ul = ul; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("{\n") |
| .append(dl != null ? "\"dl\":" + dl : "") |
| .append(ul != null ? ",\n\"ul\":" + ul : "") |
| .append("\n}\n"); |
| return sb.toString(); |
| } |
| } |
| |
| public class ResourceUsage { |
| PRBUsage.PrbUsageDl dl; |
| PRBUsage.PrbUsageUl ul; |
| |
| public PRBUsage.PrbUsageDl getDl() { |
| return dl; |
| } |
| |
| public void setDl(PRBUsage.PrbUsageDl dl) { |
| this.dl = dl; |
| } |
| |
| public PRBUsage.PrbUsageUl getUl() { |
| return ul; |
| } |
| |
| public void setUl(PRBUsage.PrbUsageUl ul) { |
| this.ul = ul; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("{\n") |
| .append(dl != null ? "\"dl\":" + dl : "") |
| .append(ul != null ? ",\n\"ul\":" + ul : "") |
| .append("\n}\n"); |
| return sb.toString(); |
| } |
| } |
| |
| public class LinkQuality { |
| double rsrp; |
| double rsrq; |
| RadioRepPerServCell.CqiHist cqiHist; |
| double cqiMode; |
| double cqiMean; |
| SchedMeasRepPerServCell.McsDl mcs_dl; |
| SchedMeasRepPerServCell.McsUl mcs_ul; |
| |
| public double getRsrp() { |
| return rsrp; |
| } |
| |
| public void setRsrp(double rsrp) { |
| this.rsrp = rsrp; |
| } |
| |
| public double getRsrq() { |
| return rsrq; |
| } |
| |
| public void setRsrq(double rsrq) { |
| this.rsrq = rsrq; |
| } |
| |
| public RadioRepPerServCell.CqiHist getCqiHist() { |
| return cqiHist; |
| } |
| |
| public void setCqiHist(RadioRepPerServCell.CqiHist cqiHist) { |
| this.cqiHist = cqiHist; |
| } |
| |
| public double getCqiMode() { |
| return cqiMode; |
| } |
| |
| public void setCqiMode(double cqiMode) { |
| this.cqiMode = cqiMode; |
| } |
| |
| public double getCqiMean() { |
| return cqiMean; |
| } |
| |
| public void setCqiMean(double cqiMean) { |
| this.cqiMean = cqiMean; |
| } |
| |
| public SchedMeasRepPerServCell.McsDl getMcs_dl() { |
| return mcs_dl; |
| } |
| |
| public void setMcs_dl(SchedMeasRepPerServCell.McsDl mcs_dl) { |
| this.mcs_dl = mcs_dl; |
| } |
| |
| public SchedMeasRepPerServCell.McsUl getMcs_ul() { |
| return mcs_ul; |
| } |
| |
| public void setMcs_ul(SchedMeasRepPerServCell.McsUl mcs_ul) { |
| this.mcs_ul = mcs_ul; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("{\n") |
| .append("\"rsrp\":" + rsrp) |
| .append(",\n\"rsrq\":" + rsrq) |
| .append(",\n\"cqiMode\":" + cqiMode) |
| .append(",\n\"cqiMean\":" + cqiMean) |
| .append(mcs_dl != null ? ",\n\"mcs-dl\":" + mcs_dl : "") |
| .append(mcs_ul != null ? ",\n\"mcs-ul\":" + mcs_ul : "") |
| .append("\n}\n"); |
| return sb.toString(); |
| } |
| } |
| } |