changed API ID order, added xICIC support, added config fields for adm and bearer requests
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/BearerAdmissionResponse.java b/src/main/java/org.onosproject.xran/codecs/pdu/BearerAdmissionResponse.java
index 8f6ad01..15c84e6 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/BearerAdmissionResponse.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/BearerAdmissionResponse.java
@@ -4,17 +4,17 @@
 
 package org.onosproject.xran.codecs.pdu;
 
+import org.onosproject.xran.codecs.api.*;
 import org.openmuc.jasn1.ber.BerByteArrayOutputStream;
 import org.openmuc.jasn1.ber.BerLength;
 import org.openmuc.jasn1.ber.BerTag;
 import org.openmuc.jasn1.ber.types.BerInteger;
-import org.onosproject.xran.codecs.api.CRNTI;
-import org.onosproject.xran.codecs.api.ECGI;
-import org.onosproject.xran.codecs.api.ERABResponse;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 
 public class BearerAdmissionResponse implements Serializable {
 
@@ -229,5 +229,48 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(ECGI ecgi, CRNTI crnti, ERABParams erabParams, BerInteger numParams, boolean b) {
+		ERABResponse erabResponse = new ERABResponse();
+
+		for (int i = 0; i < numParams.intValue(); i++) {
+			ERABParamsItem erabParamsItem = erabParams.getERABParamsItem().get(i);
+
+			ERABResponseItem responseItem = new ERABResponseItem();
+			responseItem.setId(erabParamsItem.getId());
+
+			// FIXME: add logic
+			responseItem.setDecision(new ERABDecision(b ? 0 : 1));
+
+			erabResponse.setERABResponse(responseItem);
+		}
+
+
+		BearerAdmissionResponse bearerAdmissionResponse = new BearerAdmissionResponse();
+		bearerAdmissionResponse.setCrnti(crnti);
+		bearerAdmissionResponse.setEcgi(ecgi);
+		bearerAdmissionResponse.setErabResponse(erabResponse);
+		bearerAdmissionResponse.setNumErabList(numParams);
+
+		XrancPduBody body = new XrancPduBody();
+		body.setBearerAdmissionResponse(bearerAdmissionResponse);
+
+		BerUTF8String ver = null;
+		try {
+			ver = new BerUTF8String("3");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		XrancApiID apiID = new XrancApiID(9);
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setHdr(hdr);
+		pdu.setBody(body);
+
+		return pdu;
+	}
+
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/CellConfigRequest.java b/src/main/java/org.onosproject.xran/codecs/pdu/CellConfigRequest.java
index 9aa3254..d2a8b69 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/CellConfigRequest.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/CellConfigRequest.java
@@ -8,10 +8,12 @@
 import org.openmuc.jasn1.ber.BerLength;
 import org.openmuc.jasn1.ber.BerTag;
 import org.onosproject.xran.codecs.api.ECGI;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 
 public class CellConfigRequest implements Serializable {
 
@@ -132,5 +134,26 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(ECGI ecgi) throws UnsupportedEncodingException {
+		CellConfigRequest cellConfigRequest = new CellConfigRequest();
+		cellConfigRequest.setEcgi(ecgi);
+
+		BerUTF8String ver = new BerUTF8String("3");
+
+		XrancApiID apiID = new XrancApiID(0);
+		XrancPduBody body = new XrancPduBody();
+		body.setCellConfigRequest(cellConfigRequest);
+
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setBody(body);
+		pdu.setHdr(hdr);
+
+		return pdu;
+	}
+
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/HORequest.java b/src/main/java/org.onosproject.xran/codecs/pdu/HORequest.java
index 7079944..f6a3076 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/HORequest.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/HORequest.java
@@ -9,10 +9,12 @@
 import org.openmuc.jasn1.ber.BerByteArrayOutputStream;
 import org.openmuc.jasn1.ber.BerLength;
 import org.openmuc.jasn1.ber.BerTag;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 
 public class HORequest implements Serializable {
 
@@ -196,5 +198,29 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(CRNTI crnti, ECGI ecgis, ECGI ecgit) throws UnsupportedEncodingException {
+		HORequest hoRequest = new HORequest();
+
+		hoRequest.setCrnti(crnti);
+		hoRequest.setEcgiS(ecgis);
+		hoRequest.setEcgiT(ecgit);
+
+		BerUTF8String ver = new BerUTF8String("3");
+
+		XrancApiID apiID = new XrancApiID(12);
+		XrancPduBody body = new XrancPduBody();
+		body.setHORequest(hoRequest);
+
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setBody(body);
+		pdu.setHdr(hdr);
+
+		return pdu;
+	}
+
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/L2MeasConfig.java b/src/main/java/org.onosproject.xran/codecs/pdu/L2MeasConfig.java
index a474ec3..f0de6d1 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/L2MeasConfig.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/L2MeasConfig.java
@@ -9,10 +9,12 @@
 import org.openmuc.jasn1.ber.BerLength;
 import org.openmuc.jasn1.ber.BerTag;
 import org.openmuc.jasn1.ber.types.BerInteger;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 
 public class L2MeasConfig implements Serializable {
 
@@ -164,5 +166,35 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(ECGI ecgi, int l2MeasInterval) {
+
+		BerInteger reportIntervalMS = new BerInteger(l2MeasInterval);
+		L2MeasConfig measConfig = new L2MeasConfig();
+		measConfig.setEcgi(ecgi);
+		measConfig.setReportIntervalMs(reportIntervalMS);
+
+		BerUTF8String ver = null;
+		try {
+			ver = new BerUTF8String("3");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+
+		XrancApiID apiID = new XrancApiID(17);
+		XrancPduBody body = new XrancPduBody();
+		body.setL2MeasConfig(measConfig);
+
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setBody(body);
+		pdu.setHdr(hdr);
+
+		return pdu;
+
+	}
+
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/RRMConfig.java b/src/main/java/org.onosproject.xran/codecs/pdu/RRMConfig.java
index e7ff333..4c9bae7 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/RRMConfig.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/RRMConfig.java
@@ -7,7 +7,6 @@
 import org.onosproject.xran.codecs.api.CRNTI;
 import org.onosproject.xran.codecs.api.ECGI;
 import org.onosproject.xran.codecs.api.XICICPA;
-import org.onosproject.xran.entities.RnibCell;
 import org.openmuc.jasn1.ber.BerByteArrayOutputStream;
 import org.openmuc.jasn1.ber.BerLength;
 import org.openmuc.jasn1.ber.BerTag;
@@ -1347,6 +1346,14 @@
         public void addBerInteger(BerInteger berInteger) {
             seqOf.add(berInteger);
         }
+
+        public List<BerInteger> getSeqOf() {
+            return seqOf;
+        }
+
+        public void setSeqOf(List<BerInteger> seqOf) {
+            this.seqOf = seqOf;
+        }
     }
 
     public static class EndPrbUl implements Serializable {
@@ -1474,6 +1481,14 @@
         public void addBerInteger(BerInteger berInteger) {
             seqOf.add(berInteger);
         }
+
+        public List<BerInteger> getSeqOf() {
+            return seqOf;
+        }
+
+        public void setSeqOf(List<BerInteger> seqOf) {
+            this.seqOf = seqOf;
+        }
     }
 
     public static class SubframeBitmaskUl implements Serializable {
@@ -1600,18 +1615,18 @@
 
     }
 
-    public static XrancPdu constructPacket(RnibCell cell) {
+    public static XrancPdu constructPacket(RRMConfig config) {
         XrancPduBody body = new XrancPduBody();
-        body.setRRMConfig(cell.getRrmConfig());
+        body.setRRMConfig(config);
 
         BerUTF8String ver = null;
         try {
-            ver = new BerUTF8String("4");
+            ver = new BerUTF8String("3");
         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         }
 
-        XrancApiID apiID = new XrancApiID(26);
+        XrancApiID apiID = new XrancApiID(29);
         XrancPduHdr hdr = new XrancPduHdr();
         hdr.setVer(ver);
         hdr.setApiId(apiID);
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/RXSigMeasConfig.java b/src/main/java/org.onosproject.xran/codecs/pdu/RXSigMeasConfig.java
index c6704ce..f8b5403 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/RXSigMeasConfig.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/RXSigMeasConfig.java
@@ -8,10 +8,12 @@
 import org.openmuc.jasn1.ber.BerByteArrayOutputStream;
 import org.openmuc.jasn1.ber.BerLength;
 import org.openmuc.jasn1.ber.BerTag;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -389,5 +391,37 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(ECGI ecgi, CRNTI crnti, RXSigMeasConfig.MeasCells measCells, int interval) {
+		RXSigRepQty rxSigRepQty = new RXSigRepQty(2);
+		RXSigMeasRepInterval repInterval = new RXSigMeasRepInterval(interval);
+
+		RXSigMeasConfig sigMeasConfig = new RXSigMeasConfig();
+		sigMeasConfig.setCrnti(crnti);
+		sigMeasConfig.setEcgi(ecgi);
+		sigMeasConfig.setReportQty(rxSigRepQty);
+		sigMeasConfig.setMeasCells(measCells);
+		sigMeasConfig.setReportInterval(repInterval);
+
+		XrancPduBody body = new XrancPduBody();
+		body.setRXSigMeasConfig(sigMeasConfig);
+
+		BerUTF8String ver = null;
+		try {
+			ver = new BerUTF8String("3");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		XrancApiID apiID = new XrancApiID(15);
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setHdr(hdr);
+		pdu.setBody(body);
+
+		return pdu;
+	}
+
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/UEAdmissionResponse.java b/src/main/java/org.onosproject.xran/codecs/pdu/UEAdmissionResponse.java
index db6ed32..5d323b7 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/UEAdmissionResponse.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/UEAdmissionResponse.java
@@ -10,10 +10,12 @@
 import org.onosproject.xran.codecs.api.AdmEstResponse;
 import org.onosproject.xran.codecs.api.CRNTI;
 import org.onosproject.xran.codecs.api.ECGI;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 
 public class UEAdmissionResponse implements Serializable {
 
@@ -196,5 +198,33 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(ECGI ecgi, CRNTI crnti, boolean b) {
+		AdmEstResponse response = new AdmEstResponse(b ? 0 : 1);
+
+		UEAdmissionResponse ueAdmissionResponse = new UEAdmissionResponse();
+		ueAdmissionResponse.setCrnti(crnti);
+		ueAdmissionResponse.setEcgi(ecgi);
+		ueAdmissionResponse.setAdmEstResponse(response);
+
+		XrancPduBody body = new XrancPduBody();
+		body.setUEAdmissionResponse(ueAdmissionResponse);
+
+		BerUTF8String ver = null;
+		try {
+			ver = new BerUTF8String("3");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		XrancApiID apiID = new XrancApiID(3);
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setHdr(hdr);
+		pdu.setBody(body);
+		return pdu;
+	}
+
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/UECapabilityEnquiry.java b/src/main/java/org.onosproject.xran/codecs/pdu/UECapabilityEnquiry.java
index 84758d1..db212e5 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/UECapabilityEnquiry.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/UECapabilityEnquiry.java
@@ -9,10 +9,12 @@
 import org.openmuc.jasn1.ber.BerByteArrayOutputStream;
 import org.openmuc.jasn1.ber.BerLength;
 import org.openmuc.jasn1.ber.BerTag;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 
 
 public class UECapabilityEnquiry implements Serializable {
@@ -165,5 +167,31 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(ECGI ecgi, CRNTI crnti) {
+		UECapabilityEnquiry capabilityEnquiry = new UECapabilityEnquiry();
+		capabilityEnquiry.setCrnti(crnti);
+		capabilityEnquiry.setEcgi(ecgi);
+
+		XrancPduBody body = new XrancPduBody();
+		body.setUECapabilityEnquiry(capabilityEnquiry);
+
+		BerUTF8String ver = null;
+		try {
+			ver = new BerUTF8String("3");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		XrancApiID apiID = new XrancApiID(25);
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setHdr(hdr);
+		pdu.setBody(body);
+
+		return pdu;
+	}
+
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/UEAttachComplete.java b/src/main/java/org.onosproject.xran/codecs/pdu/UEContextUpdate.java
similarity index 97%
rename from src/main/java/org.onosproject.xran/codecs/pdu/UEAttachComplete.java
rename to src/main/java/org.onosproject.xran/codecs/pdu/UEContextUpdate.java
index 74050d7..d9d6066 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/UEAttachComplete.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/UEContextUpdate.java
@@ -16,7 +16,7 @@
 import java.io.InputStream;
 import java.io.Serializable;
 
-public class UEAttachComplete implements Serializable {
+public class UEContextUpdate implements Serializable {
 
 	private static final long serialVersionUID = 1L;
 
@@ -28,10 +28,10 @@
 	private MMEUES1APID mMEUES1APID = null;
 	private ENBUES1APID eNBUES1APID = null;
 	
-	public UEAttachComplete() {
+	public UEContextUpdate() {
 	}
 
-	public UEAttachComplete(byte[] code) {
+	public UEContextUpdate(byte[] code) {
 		this.code = code;
 	}
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/XICICConfig.java b/src/main/java/org.onosproject.xran/codecs/pdu/XICICConfig.java
index f02d36a..6efe465 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/XICICConfig.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/XICICConfig.java
@@ -12,9 +12,12 @@
 import org.openmuc.jasn1.ber.BerTag;
 import org.openmuc.jasn1.ber.types.BerBitString;
 import org.openmuc.jasn1.ber.types.BerInteger;
+import org.openmuc.jasn1.ber.types.string.BerUTF8String;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
 
 public class XICICConfig implements Serializable {
 
@@ -446,5 +449,26 @@
 		sb.append("}");
 	}
 
+	public static XrancPdu constructPacket(RRMConfig config) {
+		XrancPduBody body = new XrancPduBody();
+		body.setRRMConfig(config);
+
+		BerUTF8String ver = null;
+		try {
+			ver = new BerUTF8String("3");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+
+		XrancApiID apiID = new XrancApiID(23);
+		XrancPduHdr hdr = new XrancPduHdr();
+		hdr.setVer(ver);
+		hdr.setApiId(apiID);
+
+		XrancPdu pdu = new XrancPdu();
+		pdu.setHdr(hdr);
+		pdu.setBody(body);
+		return pdu;
+	}
 }
 
diff --git a/src/main/java/org.onosproject.xran/codecs/pdu/XrancPduBody.java b/src/main/java/org.onosproject.xran/codecs/pdu/XrancPduBody.java
index c0a38fc..2770211 100644
--- a/src/main/java/org.onosproject.xran/codecs/pdu/XrancPduBody.java
+++ b/src/main/java/org.onosproject.xran/codecs/pdu/XrancPduBody.java
@@ -20,16 +20,14 @@
 	private CellConfigReport cellConfigReport = null;
 	private UEAdmissionRequest uEAdmissionRequest = null;
 	private UEAdmissionResponse uEAdmissionResponse = null;
-	private UEAttachComplete uEAttachComplete = null;
 	private UEAdmissionStatus uEAdmissionStatus = null;
+	private UEContextUpdate uEContextUpdate = null;
 	private UEReconfigInd uEReconfigInd = null;
 	private UEReleaseInd uEReleaseInd = null;
 	private BearerAdmissionRequest bearerAdmissionRequest = null;
 	private BearerAdmissionResponse bearerAdmissionResponse = null;
 	private BearerAdmissionStatus bearerAdmissionStatus = null;
 	private BearerReleaseInd bearerReleaseInd = null;
-	private UECapabilityEnquiry uECapabilityEnquiry = null;
-	private UECapabilityInfo uECapabilityInfo = null;
 	private HORequest hORequest = null;
 	private HOFailure hOFailure = null;
 	private HOComplete hOComplete = null;
@@ -42,16 +40,18 @@
 	private SchedMeasReportPerCell schedMeasReportPerCell = null;
 	private PDCPMeasReportPerUe pDCPMeasReportPerUe = null;
 	private XICICConfig xICICConfig = null;
-	private RRMConfig rRMConfig = null;
-	private RRMConfigStatus rRMConfigStatus = null;
+	private UECapabilityInfo uECapabilityInfo = null;
+	private UECapabilityEnquiry uECapabilityEnquiry = null;
 	private ScellAdd scellAdd = null;
 	private ScellAddStatus scellAddStatus = null;
 	private ScellDelete scellDelete = null;
+	private RRMConfig rRMConfig = null;
+	private RRMConfigStatus rRMConfigStatus = null;
 	private SeNBAdd seNBAdd = null;
 	private SeNBAddStatus seNBAddStatus = null;
 	private SeNBDelete seNBDelete = null;
 	private TrafficSplitConfig trafficSplitConfig = null;
-	
+
 	public XrancPduBody() {
 	}
 
@@ -91,14 +91,6 @@
 		return uEAdmissionResponse;
 	}
 
-	public void setUEAttachComplete(UEAttachComplete uEAttachComplete) {
-		this.uEAttachComplete = uEAttachComplete;
-	}
-
-	public UEAttachComplete getUEAttachComplete() {
-		return uEAttachComplete;
-	}
-
 	public void setUEAdmissionStatus(UEAdmissionStatus uEAdmissionStatus) {
 		this.uEAdmissionStatus = uEAdmissionStatus;
 	}
@@ -107,6 +99,14 @@
 		return uEAdmissionStatus;
 	}
 
+	public void setUEContextUpdate(UEContextUpdate uEContextUpdate) {
+		this.uEContextUpdate = uEContextUpdate;
+	}
+
+	public UEContextUpdate getUEContextUpdate() {
+		return uEContextUpdate;
+	}
+
 	public void setUEReconfigInd(UEReconfigInd uEReconfigInd) {
 		this.uEReconfigInd = uEReconfigInd;
 	}
@@ -155,22 +155,6 @@
 		return bearerReleaseInd;
 	}
 
-	public void setUECapabilityEnquiry(UECapabilityEnquiry uECapabilityEnquiry) {
-		this.uECapabilityEnquiry = uECapabilityEnquiry;
-	}
-
-	public UECapabilityEnquiry getUECapabilityEnquiry() {
-		return uECapabilityEnquiry;
-	}
-
-	public void setUECapabilityInfo(UECapabilityInfo uECapabilityInfo) {
-		this.uECapabilityInfo = uECapabilityInfo;
-	}
-
-	public UECapabilityInfo getUECapabilityInfo() {
-		return uECapabilityInfo;
-	}
-
 	public void setHORequest(HORequest hORequest) {
 		this.hORequest = hORequest;
 	}
@@ -267,20 +251,20 @@
 		return xICICConfig;
 	}
 
-	public void setRRMConfig(RRMConfig rRMConfig) {
-		this.rRMConfig = rRMConfig;
+	public void setUECapabilityInfo(UECapabilityInfo uECapabilityInfo) {
+		this.uECapabilityInfo = uECapabilityInfo;
 	}
 
-	public RRMConfig getRRMConfig() {
-		return rRMConfig;
+	public UECapabilityInfo getUECapabilityInfo() {
+		return uECapabilityInfo;
 	}
 
-	public void setRRMConfigStatus(RRMConfigStatus rRMConfigStatus) {
-		this.rRMConfigStatus = rRMConfigStatus;
+	public void setUECapabilityEnquiry(UECapabilityEnquiry uECapabilityEnquiry) {
+		this.uECapabilityEnquiry = uECapabilityEnquiry;
 	}
 
-	public RRMConfigStatus getRRMConfigStatus() {
-		return rRMConfigStatus;
+	public UECapabilityEnquiry getUECapabilityEnquiry() {
+		return uECapabilityEnquiry;
 	}
 
 	public void setScellAdd(ScellAdd scellAdd) {
@@ -307,6 +291,22 @@
 		return scellDelete;
 	}
 
+	public void setRRMConfig(RRMConfig rRMConfig) {
+		this.rRMConfig = rRMConfig;
+	}
+
+	public RRMConfig getRRMConfig() {
+		return rRMConfig;
+	}
+
+	public void setRRMConfigStatus(RRMConfigStatus rRMConfigStatus) {
+		this.rRMConfigStatus = rRMConfigStatus;
+	}
+
+	public RRMConfigStatus getRRMConfigStatus() {
+		return rRMConfigStatus;
+	}
+
 	public void setSeNBAdd(SeNBAdd seNBAdd) {
 		this.seNBAdd = seNBAdd;
 	}
@@ -357,7 +357,7 @@
 			codeLength += 2;
 			return codeLength;
 		}
-		
+
 		if (seNBDelete != null) {
 			codeLength += seNBDelete.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 33
@@ -366,7 +366,7 @@
 			codeLength += 2;
 			return codeLength;
 		}
-		
+
 		if (seNBAddStatus != null) {
 			codeLength += seNBAddStatus.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 32
@@ -375,7 +375,7 @@
 			codeLength += 2;
 			return codeLength;
 		}
-		
+
 		if (seNBAdd != null) {
 			codeLength += seNBAdd.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 31
@@ -384,159 +384,159 @@
 			codeLength += 2;
 			return codeLength;
 		}
-		
-		if (scellDelete != null) {
-			codeLength += scellDelete.encode(os, false);
+
+		if (rRMConfigStatus != null) {
+			codeLength += rRMConfigStatus.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 30
 			os.write(0xBE);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (scellAddStatus != null) {
-			codeLength += scellAddStatus.encode(os, false);
+
+		if (rRMConfig != null) {
+			codeLength += rRMConfig.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 29
 			os.write(0xBD);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (scellAdd != null) {
-			codeLength += scellAdd.encode(os, false);
+
+		if (scellDelete != null) {
+			codeLength += scellDelete.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 28
 			os.write(0xBC);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (rRMConfigStatus != null) {
-			codeLength += rRMConfigStatus.encode(os, false);
+
+		if (scellAddStatus != null) {
+			codeLength += scellAddStatus.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 27
 			os.write(0xBB);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (rRMConfig != null) {
-			codeLength += rRMConfig.encode(os, false);
+
+		if (scellAdd != null) {
+			codeLength += scellAdd.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 26
 			os.write(0xBA);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (xICICConfig != null) {
-			codeLength += xICICConfig.encode(os, false);
+
+		if (uECapabilityEnquiry != null) {
+			codeLength += uECapabilityEnquiry.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 25
 			os.write(0xB9);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (pDCPMeasReportPerUe != null) {
-			codeLength += pDCPMeasReportPerUe.encode(os, false);
+
+		if (uECapabilityInfo != null) {
+			codeLength += uECapabilityInfo.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 24
 			os.write(0xB8);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (schedMeasReportPerCell != null) {
-			codeLength += schedMeasReportPerCell.encode(os, false);
+
+		if (xICICConfig != null) {
+			codeLength += xICICConfig.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 23
 			os.write(0xB7);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (schedMeasReportPerUE != null) {
-			codeLength += schedMeasReportPerUE.encode(os, false);
+
+		if (pDCPMeasReportPerUe != null) {
+			codeLength += pDCPMeasReportPerUe.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 22
 			os.write(0xB6);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (radioMeasReportPerCell != null) {
-			codeLength += radioMeasReportPerCell.encode(os, false);
+
+		if (schedMeasReportPerCell != null) {
+			codeLength += schedMeasReportPerCell.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 21
 			os.write(0xB5);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (radioMeasReportPerUE != null) {
-			codeLength += radioMeasReportPerUE.encode(os, false);
+
+		if (schedMeasReportPerUE != null) {
+			codeLength += schedMeasReportPerUE.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 20
 			os.write(0xB4);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (l2MeasConfig != null) {
-			codeLength += l2MeasConfig.encode(os, false);
+
+		if (radioMeasReportPerCell != null) {
+			codeLength += radioMeasReportPerCell.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 19
 			os.write(0xB3);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (rXSigMeasReport != null) {
-			codeLength += rXSigMeasReport.encode(os, false);
+
+		if (radioMeasReportPerUE != null) {
+			codeLength += radioMeasReportPerUE.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 18
 			os.write(0xB2);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (rXSigMeasConfig != null) {
-			codeLength += rXSigMeasConfig.encode(os, false);
+
+		if (l2MeasConfig != null) {
+			codeLength += l2MeasConfig.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 17
 			os.write(0xB1);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (hOComplete != null) {
-			codeLength += hOComplete.encode(os, false);
+
+		if (rXSigMeasReport != null) {
+			codeLength += rXSigMeasReport.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 16
 			os.write(0xB0);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (hOFailure != null) {
-			codeLength += hOFailure.encode(os, false);
+
+		if (rXSigMeasConfig != null) {
+			codeLength += rXSigMeasConfig.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 15
 			os.write(0xAF);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (hORequest != null) {
-			codeLength += hORequest.encode(os, false);
+
+		if (hOComplete != null) {
+			codeLength += hOComplete.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 14
 			os.write(0xAE);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (uECapabilityInfo != null) {
-			codeLength += uECapabilityInfo.encode(os, false);
+
+		if (hOFailure != null) {
+			codeLength += hOFailure.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 13
 			os.write(0xAD);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (uECapabilityEnquiry != null) {
-			codeLength += uECapabilityEnquiry.encode(os, false);
+
+		if (hORequest != null) {
+			codeLength += hORequest.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 12
 			os.write(0xAC);
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (bearerReleaseInd != null) {
 			codeLength += bearerReleaseInd.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 11
@@ -544,7 +544,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (bearerAdmissionStatus != null) {
 			codeLength += bearerAdmissionStatus.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 10
@@ -552,7 +552,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (bearerAdmissionResponse != null) {
 			codeLength += bearerAdmissionResponse.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 9
@@ -560,7 +560,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (bearerAdmissionRequest != null) {
 			codeLength += bearerAdmissionRequest.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 8
@@ -568,7 +568,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (uEReleaseInd != null) {
 			codeLength += uEReleaseInd.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 7
@@ -576,7 +576,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (uEReconfigInd != null) {
 			codeLength += uEReconfigInd.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 6
@@ -584,23 +584,23 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (uEAdmissionStatus != null) {
-			codeLength += uEAdmissionStatus.encode(os, false);
+
+		if (uEContextUpdate != null) {
+			codeLength += uEContextUpdate.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 5
 			os.write(0xA5);
 			codeLength += 1;
 			return codeLength;
 		}
-		
-		if (uEAttachComplete != null) {
-			codeLength += uEAttachComplete.encode(os, false);
+
+		if (uEAdmissionStatus != null) {
+			codeLength += uEAdmissionStatus.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 4
 			os.write(0xA4);
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (uEAdmissionResponse != null) {
 			codeLength += uEAdmissionResponse.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 3
@@ -608,7 +608,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (uEAdmissionRequest != null) {
 			codeLength += uEAdmissionRequest.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 2
@@ -616,7 +616,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (cellConfigReport != null) {
 			codeLength += cellConfigReport.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 1
@@ -624,7 +624,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		if (cellConfigRequest != null) {
 			codeLength += cellConfigRequest.encode(os, false);
 			// write tag: CONTEXT_CLASS, CONSTRUCTED, 0
@@ -632,7 +632,7 @@
 			codeLength += 1;
 			return codeLength;
 		}
-		
+
 		throw new IOException("Error encoding CHOICE: No element of CHOICE was selected.");
 	}
 
@@ -675,14 +675,14 @@
 		}
 
 		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 4)) {
-			uEAttachComplete = new UEAttachComplete();
-			codeLength += uEAttachComplete.decode(is, false);
+			uEAdmissionStatus = new UEAdmissionStatus();
+			codeLength += uEAdmissionStatus.decode(is, false);
 			return codeLength;
 		}
 
 		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 5)) {
-			uEAdmissionStatus = new UEAdmissionStatus();
-			codeLength += uEAdmissionStatus.decode(is, false);
+			uEContextUpdate = new UEContextUpdate();
+			codeLength += uEContextUpdate.decode(is, false);
 			return codeLength;
 		}
 
@@ -723,119 +723,119 @@
 		}
 
 		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 12)) {
-			uECapabilityEnquiry = new UECapabilityEnquiry();
-			codeLength += uECapabilityEnquiry.decode(is, false);
-			return codeLength;
-		}
-
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 13)) {
-			uECapabilityInfo = new UECapabilityInfo();
-			codeLength += uECapabilityInfo.decode(is, false);
-			return codeLength;
-		}
-
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 14)) {
 			hORequest = new HORequest();
 			codeLength += hORequest.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 15)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 13)) {
 			hOFailure = new HOFailure();
 			codeLength += hOFailure.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 16)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 14)) {
 			hOComplete = new HOComplete();
 			codeLength += hOComplete.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 17)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 15)) {
 			rXSigMeasConfig = new RXSigMeasConfig();
 			codeLength += rXSigMeasConfig.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 18)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 16)) {
 			rXSigMeasReport = new RXSigMeasReport();
 			codeLength += rXSigMeasReport.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 19)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 17)) {
 			l2MeasConfig = new L2MeasConfig();
 			codeLength += l2MeasConfig.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 20)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 18)) {
 			radioMeasReportPerUE = new RadioMeasReportPerUE();
 			codeLength += radioMeasReportPerUE.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 21)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 19)) {
 			radioMeasReportPerCell = new RadioMeasReportPerCell();
 			codeLength += radioMeasReportPerCell.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 22)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 20)) {
 			schedMeasReportPerUE = new SchedMeasReportPerUE();
 			codeLength += schedMeasReportPerUE.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 23)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 21)) {
 			schedMeasReportPerCell = new SchedMeasReportPerCell();
 			codeLength += schedMeasReportPerCell.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 24)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 22)) {
 			pDCPMeasReportPerUe = new PDCPMeasReportPerUe();
 			codeLength += pDCPMeasReportPerUe.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 25)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 23)) {
 			xICICConfig = new XICICConfig();
 			codeLength += xICICConfig.decode(is, false);
 			return codeLength;
 		}
 
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 24)) {
+			uECapabilityInfo = new UECapabilityInfo();
+			codeLength += uECapabilityInfo.decode(is, false);
+			return codeLength;
+		}
+
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 25)) {
+			uECapabilityEnquiry = new UECapabilityEnquiry();
+			codeLength += uECapabilityEnquiry.decode(is, false);
+			return codeLength;
+		}
+
 		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 26)) {
-			rRMConfig = new RRMConfig();
-			codeLength += rRMConfig.decode(is, false);
-			return codeLength;
-		}
-
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 27)) {
-			rRMConfigStatus = new RRMConfigStatus();
-			codeLength += rRMConfigStatus.decode(is, false);
-			return codeLength;
-		}
-
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 28)) {
 			scellAdd = new ScellAdd();
 			codeLength += scellAdd.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 29)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 27)) {
 			scellAddStatus = new ScellAddStatus();
 			codeLength += scellAddStatus.decode(is, false);
 			return codeLength;
 		}
 
-		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 30)) {
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 28)) {
 			scellDelete = new ScellDelete();
 			codeLength += scellDelete.decode(is, false);
 			return codeLength;
 		}
 
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 29)) {
+			rRMConfig = new RRMConfig();
+			codeLength += rRMConfig.decode(is, false);
+			return codeLength;
+		}
+
+		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 30)) {
+			rRMConfigStatus = new RRMConfigStatus();
+			codeLength += rRMConfigStatus.decode(is, false);
+			return codeLength;
+		}
+
 		if (berTag.equals(BerTag.CONTEXT_CLASS, BerTag.CONSTRUCTED, 31)) {
 			seNBAdd = new SeNBAdd();
 			codeLength += seNBAdd.decode(is, false);
@@ -905,9 +905,9 @@
 			return;
 		}
 
-		if (uEAttachComplete != null) {
-			sb.append("\"uEAttachComplete\": ");
-			uEAttachComplete.appendAsString(sb, indentLevel + 1);
+		if (uEContextUpdate != null) {
+			sb.append("\"uEContextUpdate\": ");
+			uEContextUpdate.appendAsString(sb, indentLevel + 1);
 			return;
 		}