slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 1 | /* |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 2 | * Copyright 2015-present Open Networking Foundation |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | package org.onosproject.xran.entities; |
| 18 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 19 | import com.fasterxml.jackson.annotation.JsonCreator; |
| 20 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 21 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
| 22 | import com.fasterxml.jackson.annotation.JsonProperty; |
| 23 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 24 | import com.fasterxml.jackson.databind.JsonNode; |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 25 | import com.google.common.collect.Lists; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 26 | import org.onosproject.store.service.WallClockTimestamp; |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 27 | import org.onosproject.xran.codecs.api.ERABParams; |
| 28 | import org.onosproject.xran.codecs.api.RadioRepPerServCell; |
| 29 | import org.onosproject.xran.codecs.api.TrafficSplitPercentage; |
| 30 | import org.onosproject.xran.codecs.api.XICICPA; |
| 31 | import org.onosproject.xran.codecs.api.SchedMeasRepPerServCell; |
| 32 | import org.onosproject.xran.codecs.api.PRBUsage; |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 33 | import org.onosproject.xran.codecs.ber.types.BerBitString; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 34 | import org.onosproject.xran.codecs.ber.types.BerInteger; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 35 | import org.onosproject.xran.codecs.pdu.PDCPMeasReportPerUe; |
| 36 | import org.onosproject.xran.codecs.pdu.RRMConfig; |
| 37 | import org.onosproject.xran.identifiers.LinkId; |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 38 | import org.slf4j.Logger; |
| 39 | import org.slf4j.LoggerFactory; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 40 | |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 41 | import javax.xml.bind.DatatypeConverter; |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 42 | import java.util.Arrays; |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 43 | import java.util.List; |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 44 | import java.util.Optional; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 45 | import java.util.Timer; |
| 46 | |
| 47 | /** |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 48 | * R-NIB Link and its properties. |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 49 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 50 | @JsonPropertyOrder({ |
| 51 | "Link-ID", |
| 52 | "Type", |
| 53 | "RRMConfiguration", |
| 54 | "TrafficPercent", |
| 55 | "BearerParameters", |
| 56 | "Quality", |
| 57 | "PDCP-Throughput", |
| 58 | "PDCP-Packet-Delay", |
| 59 | "Resource-Usage" |
| 60 | }) |
| 61 | @JsonIgnoreProperties(ignoreUnknown = true) |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 62 | public class RnibLink { |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 63 | @JsonIgnore |
| 64 | private static final Logger log = |
| 65 | LoggerFactory.getLogger(RnibLink.class); |
| 66 | |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 67 | @JsonProperty("Link-ID") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 68 | private LinkId linkId; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 69 | @JsonProperty("RRMConfiguration") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 70 | private RRMConfig rrmParameters; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 71 | @JsonProperty("TrafficPercent") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 72 | private TrafficSplitPercentage trafficPercent; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 73 | @JsonProperty("BearerParameters") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 74 | private ERABParams bearerParameters; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 75 | @JsonProperty("Quality") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 76 | private LinkQuality quality; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 77 | @JsonProperty("PDCP-Throughput") |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 78 | private PdcpThroughput pdcpThroughput; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 79 | @JsonProperty("PDCP-Packet-Delay") |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 80 | private PdcpPacketdelay pdcpPackDelay; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 81 | @JsonProperty("Resource-Usage") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 82 | private ResourceUsage resourceUsage; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 83 | @JsonProperty("Type") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 84 | private Type type; |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 85 | @JsonIgnore |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 86 | private Timer timer; |
| 87 | |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 88 | public RnibLink(RnibCell cell, RnibUe ue) { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 89 | trafficPercent = new TrafficSplitPercentage(); |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 90 | trafficPercent.setEcgi(cell.getEcgi()); |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 91 | trafficPercent.setTrafficPercentDl(new BerInteger(100)); |
| 92 | trafficPercent.setTrafficPercentUl(new BerInteger(100)); |
| 93 | |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 94 | timer = new Timer(); |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 95 | |
| 96 | type = Type.NON_SERVING; |
| 97 | |
| 98 | linkId = LinkId.valueOf(cell, ue); |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 99 | |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 100 | quality = new LinkQuality(); |
| 101 | |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 102 | rrmParameters = new RRMConfig(); |
| 103 | RRMConfig.Crnti crnti = new RRMConfig.Crnti(); |
slowr | c86750e | 2017-08-22 17:26:47 -0700 | [diff] [blame] | 104 | crnti.addCRNTI(linkId.getUe().getCrnti()); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 105 | rrmParameters.setCrnti(crnti); |
| 106 | rrmParameters.setEcgi(linkId.getEcgi()); |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 107 | } |
| 108 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 109 | /** |
| 110 | * Get timer. |
| 111 | * |
| 112 | * @return Timer |
| 113 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 114 | public Timer getTimer() { |
| 115 | return timer; |
| 116 | } |
| 117 | |
| 118 | public void setTimer(Timer timer) { |
| 119 | this.timer.cancel(); |
| 120 | this.timer.purge(); |
| 121 | this.timer = timer; |
| 122 | } |
| 123 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 124 | /** |
| 125 | * Get Link ID. |
| 126 | * @return LinkID |
| 127 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 128 | @JsonProperty("Link-ID") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 129 | public LinkId getLinkId() { |
| 130 | return linkId; |
| 131 | } |
| 132 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 133 | /** |
| 134 | * Set the Link ID. |
| 135 | * @param linkId Link ID |
| 136 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 137 | @JsonProperty("Link-ID") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 138 | public void setLinkId(LinkId linkId) { |
| 139 | this.linkId = linkId; |
| 140 | } |
| 141 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 142 | /** |
| 143 | * Set the LINK ID with cell and ue. |
| 144 | * @param cell Rnib CELL |
| 145 | * @param ue Rnib UE |
| 146 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 147 | public void setLinkId(RnibCell cell, RnibUe ue) { |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 148 | this.linkId = LinkId.valueOf(cell, ue); |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 149 | trafficPercent.setEcgi(cell.getEcgi()); |
| 150 | } |
| 151 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 152 | /** |
| 153 | * Get the link type. |
| 154 | * |
| 155 | * @return Link-type |
| 156 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 157 | @JsonProperty("Type") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 158 | public Type getType() { |
| 159 | return type; |
| 160 | } |
| 161 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 162 | /** |
| 163 | * Set the link type. |
| 164 | * @param type Link-type |
| 165 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 166 | @JsonProperty("Type") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 167 | public void setType(Type type) { |
| 168 | this.type = type; |
| 169 | } |
| 170 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 171 | /** |
| 172 | * Get traffic percent. |
| 173 | * @return TrafficSplitPercentage |
| 174 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 175 | @JsonProperty("TrafficPercent") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 176 | public TrafficSplitPercentage getTrafficPercent() { |
| 177 | return trafficPercent; |
| 178 | } |
| 179 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 180 | /** |
| 181 | * Set traffic percent. |
| 182 | * @param trafficPercent TrafficSplitPercentage |
| 183 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 184 | @JsonProperty("TrafficPercent") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 185 | public void setTrafficPercent(TrafficSplitPercentage trafficPercent) { |
| 186 | this.trafficPercent = trafficPercent; |
| 187 | } |
| 188 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 189 | /** |
| 190 | * Get the Bearer Parameters. |
| 191 | * @return ERABParams |
| 192 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 193 | @JsonProperty("BearerParameters") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 194 | public ERABParams getBearerParameters() { |
| 195 | return bearerParameters; |
| 196 | } |
| 197 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 198 | /** |
| 199 | * Set the Bearer Parameters. |
| 200 | * @param bearerParameters ERABParams |
| 201 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 202 | @JsonProperty("BearerParameters") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 203 | public void setBearerParameters(ERABParams bearerParameters) { |
| 204 | this.bearerParameters = bearerParameters; |
| 205 | } |
| 206 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 207 | /** |
| 208 | * Get Quality. |
| 209 | * @return LinkQuality |
| 210 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 211 | @JsonProperty("Quality") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 212 | public LinkQuality getQuality() { |
| 213 | return quality; |
| 214 | } |
| 215 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 216 | /** |
| 217 | * Set Quality. |
| 218 | * @param quality LinkQuality |
| 219 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 220 | @JsonProperty("Quality") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 221 | public void setQuality(LinkQuality quality) { |
| 222 | this.quality = quality; |
| 223 | } |
| 224 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 225 | /** |
| 226 | * Get RRM Configuration. |
| 227 | * @return RRMConfig |
| 228 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 229 | @JsonProperty("RRMConfiguration") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 230 | public RRMConfig getRrmParameters() { |
| 231 | return rrmParameters; |
| 232 | } |
| 233 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 234 | /** |
| 235 | * Set RRM Configuration. |
| 236 | * @param rrmParameters RRMConfig |
| 237 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 238 | @JsonProperty("RRMConfiguration") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 239 | public void setRrmParameters(RRMConfig rrmParameters) { |
| 240 | this.rrmParameters = rrmParameters; |
| 241 | } |
| 242 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 243 | /** |
| 244 | * Modify the RRM Config parameters of link. |
| 245 | * |
| 246 | * @param rrmConfigNode RRMConfig parameters to modify obtained from REST call |
| 247 | */ |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 248 | public void modifyRrmParameters(JsonNode rrmConfigNode) { |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 249 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 250 | JsonNode pA = rrmConfigNode.path("p_a"); |
| 251 | if (!pA.isMissingNode()) { |
| 252 | RRMConfig.Pa pa = new RRMConfig.Pa(); |
| 253 | |
| 254 | List<XICICPA> collect = Lists.newArrayList(); |
| 255 | collect.add(new XICICPA(pA.asInt())); |
| 256 | pa.setXICICPA(collect); |
| 257 | rrmParameters.setPa(pa); |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 258 | } |
| 259 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 260 | JsonNode startPrbDl1 = rrmConfigNode.path("start_prb_dl"); |
| 261 | if (!startPrbDl1.isMissingNode()) { |
| 262 | RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl(); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 263 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 264 | List<BerInteger> collect = Lists.newArrayList(); |
| 265 | collect.add(new BerInteger(startPrbDl1.asInt())); |
| 266 | startPrbDl.setSeqOf(collect); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 267 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 268 | rrmParameters.setStartPrbDl(startPrbDl); |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 269 | } |
| 270 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 271 | JsonNode endPrbDl1 = rrmConfigNode.path("end_prb_dl"); |
| 272 | if (!endPrbDl1.isMissingNode()) { |
| 273 | RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl(); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 274 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 275 | List<BerInteger> collect = Lists.newArrayList(); |
| 276 | collect.add(new BerInteger(endPrbDl1.asInt())); |
| 277 | endPrbDl.setSeqOf(collect); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 278 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 279 | rrmParameters.setEndPrbDl(endPrbDl); |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 280 | } |
| 281 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 282 | JsonNode subFrameBitmaskDl = rrmConfigNode.path("sub_frame_bitmask_dl"); |
| 283 | if (!subFrameBitmaskDl.isMissingNode()) { |
| 284 | RRMConfig.SubframeBitmaskDl subframeBitmaskDl = new RRMConfig.SubframeBitmaskDl(); |
| 285 | List<BerBitString> collect = Lists.newArrayList(); |
| 286 | |
| 287 | byte[] hexString = DatatypeConverter.parseHexBinary(subFrameBitmaskDl.asText()); |
| 288 | collect.add(new BerBitString(hexString, 10)); |
| 289 | subframeBitmaskDl.setSeqOf(collect); |
| 290 | rrmParameters.setSubframeBitmaskDl(subframeBitmaskDl); |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 291 | } |
| 292 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 293 | JsonNode startPrbUl1 = rrmConfigNode.path("start_prb_ul"); |
| 294 | if (!startPrbUl1.isMissingNode()) { |
| 295 | RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl(); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 296 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 297 | List<BerInteger> collect = Lists.newArrayList(); |
| 298 | collect.add(new BerInteger(startPrbUl1.asInt())); |
| 299 | startPrbUl.setSeqOf(collect); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 300 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 301 | rrmParameters.setStartPrbUl(startPrbUl); |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 302 | } |
| 303 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 304 | JsonNode endPrbUl1 = rrmConfigNode.path("end_prb_ul"); |
| 305 | if (!endPrbUl1.isMissingNode()) { |
| 306 | RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl(); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 307 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 308 | List<BerInteger> collect = Lists.newArrayList(); |
| 309 | collect.add(new BerInteger(endPrbUl1.asInt())); |
| 310 | endPrbUl.setSeqOf(collect); |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 311 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 312 | rrmParameters.setEndPrbUl(endPrbUl); |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 313 | } |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 314 | |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 315 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 316 | JsonNode p0UePusch1 = rrmConfigNode.path("p0_ue_pusch"); |
| 317 | if (!p0UePusch1.isMissingNode()) { |
| 318 | RRMConfig.P0UePusch p0UePusch = new RRMConfig.P0UePusch(); |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 319 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 320 | List<BerInteger> collect = Lists.newArrayList(); |
| 321 | collect.add(new BerInteger(p0UePusch1.asInt())); |
| 322 | p0UePusch.setSeqOf(collect); |
| 323 | |
| 324 | rrmParameters.setP0UePusch(p0UePusch); |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 325 | } |
| 326 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 327 | JsonNode subFrameBitmaskUl = rrmConfigNode.path("sub_frame_bitmask_ul"); |
| 328 | if (!subFrameBitmaskUl.isMissingNode()) { |
| 329 | RRMConfig.SubframeBitmaskUl subframeBitmaskUl = new RRMConfig.SubframeBitmaskUl(); |
| 330 | List<BerBitString> collect = Lists.newArrayList(); |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 331 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 332 | byte[] hexString = DatatypeConverter.parseHexBinary(subFrameBitmaskUl.asText()); |
| 333 | collect.add(new BerBitString(hexString, 10)); |
| 334 | subframeBitmaskUl.setSeqOf(collect); |
| 335 | rrmParameters.setSubframeBitmaskUl(subframeBitmaskUl); |
slowr | 73b4eae | 2017-08-17 16:09:09 -0700 | [diff] [blame] | 336 | } |
slowr | 8ddc2b1 | 2017-08-14 14:13:38 -0700 | [diff] [blame] | 337 | } |
| 338 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 339 | /** |
| 340 | * Get PDCP Throughput. |
| 341 | * @return PdcpThroughput |
| 342 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 343 | @JsonProperty("PDCP-Throughput") |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 344 | public PdcpThroughput getPdcpThroughput() { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 345 | return pdcpThroughput; |
| 346 | } |
| 347 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 348 | /** |
| 349 | * Set PDCP Throughput. |
| 350 | * @param pdcpThroughput PdcpThroughput |
| 351 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 352 | @JsonProperty("PDCP-Throughput") |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 353 | public void setPdcpThroughput(PdcpThroughput pdcpThroughput) { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 354 | this.pdcpThroughput = pdcpThroughput; |
| 355 | } |
| 356 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 357 | /** |
| 358 | * Get PdcpPackDelay. |
| 359 | * @return PdcpPacketdelay |
| 360 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 361 | @JsonProperty("PDCP-Packet-Delay") |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 362 | public PdcpPacketdelay getPdcpPackDelay() { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 363 | return pdcpPackDelay; |
| 364 | } |
| 365 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 366 | /** |
| 367 | * Set PdcpPackDelay. |
| 368 | * @param pdcpPackDelay PdcpPacketdelay |
| 369 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 370 | @JsonProperty("PDCP-Packet-Delay") |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 371 | public void setPdcpPackDelay(PdcpPacketdelay pdcpPackDelay) { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 372 | this.pdcpPackDelay = pdcpPackDelay; |
| 373 | } |
| 374 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 375 | /** |
| 376 | * Get ResourceUsage. |
| 377 | * @return ResourceUsage |
| 378 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 379 | @JsonProperty("Resource-Usage") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 380 | public ResourceUsage getResourceUsage() { |
| 381 | return resourceUsage; |
| 382 | } |
| 383 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 384 | /** |
| 385 | * Set ResourceUsage. |
| 386 | * @param resourceUsage ResourceUsage |
| 387 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 388 | @JsonProperty("Resource-Usage") |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 389 | public void setResourceUsage(ResourceUsage resourceUsage) { |
| 390 | this.resourceUsage = resourceUsage; |
| 391 | } |
| 392 | |
| 393 | @Override |
| 394 | public String toString() { |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 395 | return "RnibLink{" + |
| 396 | "linkId=" + linkId + |
| 397 | ", rrmParameters=" + rrmParameters + |
| 398 | ", trafficPercent=" + trafficPercent + |
| 399 | ", bearerParameters=" + bearerParameters + |
| 400 | ", quality=" + quality + |
| 401 | ", pdcpThroughput=" + pdcpThroughput + |
| 402 | ", pdcpPackDelay=" + pdcpPackDelay + |
| 403 | ", resourceUsage=" + resourceUsage + |
| 404 | ", type=" + type + |
| 405 | ", timer=" + timer + |
| 406 | '}'; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 407 | } |
| 408 | |
| 409 | @Override |
| 410 | public boolean equals(Object o) { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 411 | if (this == o) { |
| 412 | return true; |
| 413 | } |
| 414 | if (o == null || getClass() != o.getClass()) { |
| 415 | return false; |
| 416 | } |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 417 | |
| 418 | RnibLink link = (RnibLink) o; |
| 419 | |
| 420 | return linkId.equals(link.linkId); |
| 421 | } |
| 422 | |
| 423 | @Override |
| 424 | public int hashCode() { |
| 425 | return linkId.hashCode(); |
| 426 | } |
| 427 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 428 | /** |
| 429 | * Enum of Link-Type. |
| 430 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 431 | public enum Type { |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 432 | SERVING_PRIMARY("serving/primary") { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 433 | @Override |
| 434 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 435 | return "serving/primary"; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 436 | } |
| 437 | }, |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 438 | SERVING_SECONDARY_CA("serving/secondary/ca") { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 439 | @Override |
| 440 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 441 | return "serving/secondary/ca"; |
slowr | 89c2ac1 | 2017-08-15 16:20:06 -0700 | [diff] [blame] | 442 | } |
| 443 | }, |
| 444 | SERVING_SECONDARY_DC("serving/secondary/dc") { |
| 445 | @Override |
| 446 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 447 | return "serving/secondary/dc"; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 448 | } |
| 449 | }, |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 450 | NON_SERVING("non-serving") { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 451 | @Override |
| 452 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 453 | return "non-serving"; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 454 | } |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 455 | }; |
| 456 | |
| 457 | private String name; |
| 458 | |
| 459 | Type(String name) { |
| 460 | this.name = name; |
| 461 | } |
| 462 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 463 | /** |
| 464 | * Get enum value of link-type. |
| 465 | * @param name String representation of Enum Type |
| 466 | * @return Type |
| 467 | */ |
slowr | 67d05e4 | 2017-08-11 20:37:22 -0700 | [diff] [blame] | 468 | public static Type getEnum(String name) { |
| 469 | Optional<Type> any = Arrays.stream(Type.values()).filter(typeStr -> typeStr.name.equals(name)).findAny(); |
| 470 | if (any.isPresent()) { |
| 471 | return any.get(); |
| 472 | } |
| 473 | throw new IllegalArgumentException("No enum defined for string: " + name); |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 474 | } |
| 475 | } |
| 476 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 477 | /** |
| 478 | * Quality of Link. |
| 479 | */ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 480 | @JsonPropertyOrder({ |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 481 | "rx", |
| 482 | "cqi", |
| 483 | "mcs" |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 484 | }) |
| 485 | @JsonIgnoreProperties(ignoreUnknown = true) |
| 486 | public static class LinkQuality { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 487 | Rx rx = null; |
| 488 | Cqi cqi = null; |
| 489 | Mcs mcs = null; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 490 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 491 | /** |
| 492 | * Get rx. |
| 493 | * @return rx |
| 494 | */ |
| 495 | public Rx getRx() { |
| 496 | return rx; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 497 | } |
| 498 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 499 | /** |
| 500 | * Set rx. |
| 501 | * @param rx rx |
| 502 | */ |
| 503 | public void setRx(Rx rx) { |
| 504 | this.rx = rx; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 505 | } |
| 506 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 507 | /** |
| 508 | * Get cqi. |
| 509 | * @return cqi |
| 510 | */ |
| 511 | public Cqi getCqi() { |
| 512 | return cqi; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 513 | } |
| 514 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 515 | /** |
| 516 | * Set cqi. |
| 517 | * @param cqi cqi |
| 518 | */ |
| 519 | public void setCqi(Cqi cqi) { |
| 520 | this.cqi = cqi; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 521 | } |
| 522 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 523 | /** |
| 524 | * Get mcs. |
| 525 | * @return mcs |
| 526 | */ |
| 527 | public Mcs getMcs() { |
| 528 | return mcs; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 529 | } |
| 530 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 531 | /** |
| 532 | * Set mcs. |
| 533 | * @param mcs mcs |
| 534 | */ |
| 535 | public void setMcs(Mcs mcs) { |
| 536 | this.mcs = mcs; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 537 | } |
| 538 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 539 | /** |
| 540 | * Class to represent rx. |
| 541 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 542 | @JsonPropertyOrder({ |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 543 | "rsrp", |
| 544 | "rsrq", |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 545 | "timesincelastupdate" |
| 546 | }) |
| 547 | @JsonIgnoreProperties(ignoreUnknown = true) |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 548 | public static class Rx { |
| 549 | double rsrp; |
| 550 | double rsrq; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 551 | WallClockTimestamp timesincelastupdate; |
| 552 | |
| 553 | @JsonCreator |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 554 | public Rx(@JsonProperty("rsrp") double rsrp, @JsonProperty("rsrq") double rsrq) { |
| 555 | this.rsrp = rsrp; |
| 556 | this.rsrq = rsrq; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 557 | this.timesincelastupdate = new WallClockTimestamp(); |
| 558 | } |
| 559 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 560 | /** |
| 561 | * Get rsrp. |
| 562 | * @return double rsrp |
| 563 | */ |
| 564 | public double getRsrp() { |
| 565 | return rsrp; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 566 | } |
| 567 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 568 | /** |
| 569 | * Set rsrp. |
| 570 | * @param rsrp rsrp |
| 571 | */ |
| 572 | public void setRsrp(double rsrp) { |
| 573 | this.rsrp = rsrp; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 574 | } |
| 575 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 576 | /** |
| 577 | * Get rsrq. |
| 578 | * @return double rsrq |
| 579 | */ |
| 580 | public double getRsrq() { |
| 581 | return rsrq; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 582 | } |
| 583 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 584 | /** |
| 585 | * Set rsrq. |
| 586 | * @param rsrq rsrq |
| 587 | */ |
| 588 | public void setRsrq(double rsrq) { |
| 589 | this.rsrq = rsrq; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 590 | } |
| 591 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 592 | /** |
| 593 | * Get time since last update. |
| 594 | * |
| 595 | * @return long Time |
| 596 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 597 | public long getTimesincelastupdate() { |
slowr | 7bebd7b | 2017-08-17 11:46:11 -0700 | [diff] [blame] | 598 | return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp(); |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 599 | } |
| 600 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 601 | /** |
| 602 | * Set time since last update. |
| 603 | * |
| 604 | * @param timesincelastupdate time since last update |
| 605 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 606 | public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) { |
| 607 | this.timesincelastupdate = timesincelastupdate; |
| 608 | } |
| 609 | |
| 610 | @Override |
| 611 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 612 | return "rx{" + |
| 613 | "rsrp=" + rsrp + |
| 614 | ", rsrq=" + rsrq + |
| 615 | ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - |
| 616 | timesincelastupdate.unixTimestamp()) + |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 617 | '}'; |
| 618 | } |
| 619 | } |
| 620 | |
| 621 | @JsonPropertyOrder({ |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 622 | "hist", |
| 623 | "mode", |
| 624 | "mean", |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 625 | "timesincelastupdate" |
| 626 | }) |
| 627 | @JsonIgnoreProperties(ignoreUnknown = true) |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 628 | public static class Cqi { |
| 629 | RadioRepPerServCell.CqiHist hist; |
| 630 | double mode; |
| 631 | double mean; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 632 | WallClockTimestamp timesincelastupdate; |
| 633 | |
| 634 | @JsonCreator |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 635 | public Cqi(@JsonProperty("hist") RadioRepPerServCell.CqiHist hist, @JsonProperty("mode") double mode, |
| 636 | @JsonProperty("mean") double mean) { |
| 637 | this.hist = hist; |
| 638 | this.mode = mode; |
| 639 | this.mean = mean; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 640 | this.timesincelastupdate = new WallClockTimestamp(); |
| 641 | } |
| 642 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 643 | |
| 644 | /** |
| 645 | * Get CQIHist. |
| 646 | * @return CqiHist |
| 647 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 648 | public RadioRepPerServCell.CqiHist getHist() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 649 | return hist; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 650 | } |
| 651 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 652 | /** |
| 653 | * Get CQIHist. |
| 654 | * @param hist CqiHist |
| 655 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 656 | public void setHist(RadioRepPerServCell.CqiHist hist) { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 657 | this.hist = hist; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 658 | } |
| 659 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 660 | /** |
| 661 | * Get mode. |
| 662 | * @return double mode |
| 663 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 664 | public double getMode() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 665 | return mode; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 666 | } |
| 667 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 668 | /** |
| 669 | * Set mode. |
| 670 | * @param mode mode |
| 671 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 672 | public void setMode(double mode) { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 673 | this.mode = mode; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 674 | } |
| 675 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 676 | /** |
| 677 | * Get mean. |
| 678 | * @return double mean |
| 679 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 680 | public double getMean() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 681 | return mean; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 682 | } |
| 683 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 684 | /** |
| 685 | * Set mean. |
| 686 | * @param mean mean |
| 687 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 688 | public void setMean(double mean) { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 689 | this.mean = mean; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 690 | } |
| 691 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 692 | /** |
| 693 | * Get time since last update. |
| 694 | * |
| 695 | * @return long Time |
| 696 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 697 | public long getTimesincelastupdate() { |
slowr | 7bebd7b | 2017-08-17 11:46:11 -0700 | [diff] [blame] | 698 | return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp(); |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 699 | } |
| 700 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 701 | /** |
| 702 | * Set time since last update. |
| 703 | * |
| 704 | * @param timesincelastupdate time since last update |
| 705 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 706 | public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) { |
| 707 | this.timesincelastupdate = timesincelastupdate; |
| 708 | } |
| 709 | |
| 710 | @Override |
| 711 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 712 | return "cqi{" + |
| 713 | "hist=" + hist + |
| 714 | ", mode=" + mode + |
| 715 | ", mean=" + mean + |
| 716 | ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - |
| 717 | timesincelastupdate.unixTimestamp()) + |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 718 | '}'; |
| 719 | } |
| 720 | } |
| 721 | |
| 722 | @JsonPropertyOrder({ |
| 723 | "dl", |
| 724 | "ul", |
| 725 | "timesincelastupdate" |
| 726 | }) |
| 727 | @JsonIgnoreProperties(ignoreUnknown = true) |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 728 | public static class Mcs { |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 729 | SchedMeasRepPerServCell.McsDl dl; |
| 730 | SchedMeasRepPerServCell.McsUl ul; |
| 731 | WallClockTimestamp timesincelastupdate; |
| 732 | |
| 733 | @JsonCreator |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 734 | public Mcs(@JsonProperty("dl") SchedMeasRepPerServCell.McsDl dl, |
| 735 | @JsonProperty("ul") SchedMeasRepPerServCell.McsUl ul) { |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 736 | this.dl = dl; |
| 737 | this.ul = ul; |
| 738 | this.timesincelastupdate = new WallClockTimestamp(); |
| 739 | } |
| 740 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 741 | /** |
| 742 | * Get DL. |
| 743 | * @return Dl |
| 744 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 745 | public SchedMeasRepPerServCell.McsDl getDl() { |
| 746 | return dl; |
| 747 | } |
| 748 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 749 | /** |
| 750 | * Set DL. |
| 751 | * @param dl DL |
| 752 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 753 | public void setDl(SchedMeasRepPerServCell.McsDl dl) { |
| 754 | this.dl = dl; |
| 755 | } |
| 756 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 757 | /** |
| 758 | * Get UL. |
| 759 | * @return Ul |
| 760 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 761 | public SchedMeasRepPerServCell.McsUl getUl() { |
| 762 | return ul; |
| 763 | } |
| 764 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 765 | /** |
| 766 | * Set UL. |
| 767 | * @param ul Ul |
| 768 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 769 | public void setUl(SchedMeasRepPerServCell.McsUl ul) { |
| 770 | this.ul = ul; |
| 771 | } |
| 772 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 773 | /** |
| 774 | * Get time since last update. |
| 775 | * |
| 776 | * @return long Time |
| 777 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 778 | public long getTimesincelastupdate() { |
slowr | 7bebd7b | 2017-08-17 11:46:11 -0700 | [diff] [blame] | 779 | return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp(); |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 780 | } |
| 781 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 782 | /** |
| 783 | * Set time since last update. |
| 784 | * |
| 785 | * @param timesincelastupdate time since last update |
| 786 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 787 | public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) { |
| 788 | this.timesincelastupdate = timesincelastupdate; |
| 789 | } |
| 790 | |
| 791 | @Override |
| 792 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 793 | return "mcs{" + |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 794 | "dl=" + dl + |
| 795 | ", ul=" + ul + |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 796 | ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - |
| 797 | timesincelastupdate.unixTimestamp()) + |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 798 | '}'; |
| 799 | } |
| 800 | } |
| 801 | |
| 802 | } |
| 803 | |
| 804 | @JsonPropertyOrder({ |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 805 | "dl", |
| 806 | "ul" |
| 807 | }) |
| 808 | @JsonIgnoreProperties(ignoreUnknown = true) |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 809 | public static class PdcpThroughput { |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 810 | WallClockTimestamp timesincelastupdate; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 811 | private PDCPMeasReportPerUe.ThroughputDl dl; |
| 812 | private PDCPMeasReportPerUe.ThroughputUl ul; |
| 813 | |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 814 | @JsonCreator |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 815 | public PdcpThroughput(@JsonProperty("dl") PDCPMeasReportPerUe.ThroughputDl dl, |
| 816 | @JsonProperty("ul") PDCPMeasReportPerUe.ThroughputUl ul) { |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 817 | this.dl = dl; |
| 818 | this.ul = ul; |
| 819 | this.timesincelastupdate = new WallClockTimestamp(); |
| 820 | } |
| 821 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 822 | /** |
| 823 | * Get DL. |
| 824 | * @return Dl |
| 825 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 826 | public PDCPMeasReportPerUe.ThroughputDl getDl() { |
| 827 | return dl; |
| 828 | } |
| 829 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 830 | /** |
| 831 | * Set DL. |
| 832 | * @param dl DL |
| 833 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 834 | public void setDl(PDCPMeasReportPerUe.ThroughputDl dl) { |
| 835 | this.dl = dl; |
| 836 | } |
| 837 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 838 | /** |
| 839 | * Get UL. |
| 840 | * @return Ul |
| 841 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 842 | public PDCPMeasReportPerUe.ThroughputUl getUl() { |
| 843 | return ul; |
| 844 | } |
| 845 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 846 | /** |
| 847 | * Set UL. |
| 848 | * @param ul Ul |
| 849 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 850 | public void setUl(PDCPMeasReportPerUe.ThroughputUl ul) { |
| 851 | this.ul = ul; |
| 852 | } |
| 853 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 854 | /** |
| 855 | * Get time since last update. |
| 856 | * |
| 857 | * @return long Time |
| 858 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 859 | public long getTimesincelastupdate() { |
slowr | 7bebd7b | 2017-08-17 11:46:11 -0700 | [diff] [blame] | 860 | return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp(); |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 861 | } |
| 862 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 863 | /** |
| 864 | * Set time since last update. |
| 865 | * |
| 866 | * @param timesincelastupdate time since last update |
| 867 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 868 | public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) { |
| 869 | this.timesincelastupdate = timesincelastupdate; |
| 870 | } |
| 871 | |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 872 | @Override |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 873 | public String |
| 874 | toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 875 | return "PdcpThroughput{" + |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 876 | "dl=" + dl + |
| 877 | ", ul=" + ul + |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 878 | ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - |
| 879 | timesincelastupdate.unixTimestamp()) + |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 880 | '}'; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 881 | } |
| 882 | } |
| 883 | |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 884 | @JsonPropertyOrder({ |
| 885 | "dl", |
| 886 | "ul" |
| 887 | }) |
| 888 | @JsonIgnoreProperties(ignoreUnknown = true) |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 889 | public static class PdcpPacketdelay { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 890 | PDCPMeasReportPerUe.PktDelayDl dl; |
| 891 | PDCPMeasReportPerUe.PktDelayUl ul; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 892 | WallClockTimestamp timesincelastupdate; |
| 893 | |
| 894 | @JsonCreator |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 895 | public PdcpPacketdelay(@JsonProperty("dl") PDCPMeasReportPerUe.PktDelayDl dl, |
| 896 | @JsonProperty("ul") PDCPMeasReportPerUe.PktDelayUl ul) { |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 897 | this.dl = dl; |
| 898 | this.ul = ul; |
| 899 | this.timesincelastupdate = new WallClockTimestamp(); |
| 900 | } |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 901 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 902 | /** |
| 903 | * Get DL. |
| 904 | * @return Dl |
| 905 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 906 | public PDCPMeasReportPerUe.PktDelayDl getDl() { |
| 907 | return dl; |
| 908 | } |
| 909 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 910 | /** |
| 911 | * Set DL. |
| 912 | * @param dl DL |
| 913 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 914 | public void setDl(PDCPMeasReportPerUe.PktDelayDl dl) { |
| 915 | this.dl = dl; |
| 916 | } |
| 917 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 918 | /** |
| 919 | * Get UL. |
| 920 | * @return Ul |
| 921 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 922 | public PDCPMeasReportPerUe.PktDelayUl getUl() { |
| 923 | return ul; |
| 924 | } |
| 925 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 926 | /** |
| 927 | * Set UL. |
| 928 | * @param ul Ul |
| 929 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 930 | public void setUl(PDCPMeasReportPerUe.PktDelayUl ul) { |
| 931 | this.ul = ul; |
| 932 | } |
| 933 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 934 | /** |
| 935 | * Get time since last update. |
| 936 | * |
| 937 | * @return long Time |
| 938 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 939 | public long getTimesincelastupdate() { |
slowr | 7bebd7b | 2017-08-17 11:46:11 -0700 | [diff] [blame] | 940 | return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp(); |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 941 | } |
| 942 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 943 | /** |
| 944 | * Set time since last update. |
| 945 | * |
| 946 | * @param timesincelastupdate time since last update |
| 947 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 948 | public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) { |
| 949 | this.timesincelastupdate = timesincelastupdate; |
| 950 | } |
| 951 | |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 952 | @Override |
| 953 | public String toString() { |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 954 | return "PdcpPacketdelay{" + |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 955 | "dl=" + dl + |
| 956 | ", ul=" + ul + |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 957 | ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - |
| 958 | timesincelastupdate.unixTimestamp()) + |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 959 | '}'; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 960 | } |
| 961 | } |
| 962 | |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 963 | @JsonPropertyOrder({ |
| 964 | "dl", |
| 965 | "ul" |
| 966 | }) |
| 967 | @JsonIgnoreProperties(ignoreUnknown = true) |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 968 | public static class ResourceUsage { |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 969 | PRBUsage.PrbUsageDl dl; |
| 970 | PRBUsage.PrbUsageUl ul; |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 971 | WallClockTimestamp timesincelastupdate; |
| 972 | |
| 973 | @JsonCreator |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 974 | public ResourceUsage(@JsonProperty("dl") PRBUsage.PrbUsageDl dl, |
| 975 | @JsonProperty("ul") PRBUsage.PrbUsageUl ul) { |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 976 | this.dl = dl; |
| 977 | this.ul = ul; |
| 978 | this.timesincelastupdate = new WallClockTimestamp(); |
| 979 | } |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 980 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 981 | /** |
| 982 | * Get DL. |
| 983 | * @return Dl |
| 984 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 985 | public PRBUsage.PrbUsageDl getDl() { |
| 986 | return dl; |
| 987 | } |
| 988 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 989 | /** |
| 990 | * Set DL. |
| 991 | * @param dl DL |
| 992 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 993 | public void setDl(PRBUsage.PrbUsageDl dl) { |
| 994 | this.dl = dl; |
| 995 | } |
| 996 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 997 | /** |
| 998 | * Get UL. |
| 999 | * @return Ul |
| 1000 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 1001 | public PRBUsage.PrbUsageUl getUl() { |
| 1002 | return ul; |
| 1003 | } |
| 1004 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 1005 | /** |
| 1006 | * Set UL. |
| 1007 | * @param ul Ul |
| 1008 | */ |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 1009 | public void setUl(PRBUsage.PrbUsageUl ul) { |
| 1010 | this.ul = ul; |
| 1011 | } |
| 1012 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 1013 | /** |
| 1014 | * Get time since last update. |
| 1015 | * |
| 1016 | * @return long Time |
| 1017 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 1018 | public long getTimesincelastupdate() { |
slowr | 7bebd7b | 2017-08-17 11:46:11 -0700 | [diff] [blame] | 1019 | return new WallClockTimestamp().unixTimestamp() - timesincelastupdate.unixTimestamp(); |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 1020 | } |
| 1021 | |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 1022 | /** |
| 1023 | * Set time since last update. |
| 1024 | * |
| 1025 | * @param timesincelastupdate time since last update |
| 1026 | */ |
slowr | c153ad9 | 2017-08-16 19:47:52 -0700 | [diff] [blame] | 1027 | public void setTimesincelastupdate(WallClockTimestamp timesincelastupdate) { |
| 1028 | this.timesincelastupdate = timesincelastupdate; |
| 1029 | } |
| 1030 | |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 1031 | @Override |
| 1032 | public String toString() { |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 1033 | return "ResourceUsage{" + |
| 1034 | "dl=" + dl + |
| 1035 | ", ul=" + ul + |
slowr | 577f322 | 2017-08-28 10:49:08 -0700 | [diff] [blame] | 1036 | ", timesincelastupdate=" + (new WallClockTimestamp().unixTimestamp() - |
| 1037 | timesincelastupdate.unixTimestamp()) + |
slowr | 60d4d10 | 2017-08-16 18:33:58 -0700 | [diff] [blame] | 1038 | '}'; |
slowr | 13fa5b0 | 2017-08-08 16:32:31 -0700 | [diff] [blame] | 1039 | } |
| 1040 | } |
| 1041 | } |