| package org.onosproject.xran.samplemessages; |
| |
| import org.onosproject.xran.codecs.api.*; |
| import org.onosproject.xran.codecs.pdu.*; |
| import org.openmuc.jasn1.ber.types.BerInteger; |
| import org.openmuc.jasn1.ber.types.string.BerUTF8String; |
| |
| import java.io.UnsupportedEncodingException; |
| |
| public class BearerEncoderDecoder { |
| |
| public static XrancPdu constructPacket(ECGI ecgi, CRNTI crnti, ERABParams erabParams, BerInteger numParams) { |
| 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(0)); |
| |
| 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("2.0"); |
| } 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; |
| } |
| |
| public XrancPdu setPacketProperties(XrancPdu mainDecoder) { |
| CRNTI crnti = mainDecoder.getBody().getBearerAdmissionRequest().getCrnti(); |
| ECGI ecgi = mainDecoder.getBody().getBearerAdmissionRequest().getEcgi(); |
| |
| //TODO: Verify mainDecoder.getBody().getBearerAdmissionRequest().getNumErabs() or |
| BerInteger numErabs = new BerInteger(5); |
| |
| ERABResponseItem responseItem = new ERABResponseItem(); |
| responseItem.setId(new ERABID(1)); |
| responseItem.setDecision(new ERABDecision(0)); |
| |
| ERABResponseItem responseItem1 = new ERABResponseItem(); |
| responseItem1.setId(new ERABID(2)); |
| responseItem1.setDecision(new ERABDecision(0)); |
| |
| ERABResponse erabResponse = new ERABResponse(); |
| erabResponse.setERABResponse(responseItem); |
| erabResponse.setERABResponse(responseItem1); |
| |
| BearerAdmissionResponse bearerAdmissionResponse = new BearerAdmissionResponse(); |
| bearerAdmissionResponse.setCrnti(crnti); |
| bearerAdmissionResponse.setEcgi(ecgi); |
| bearerAdmissionResponse.setErabResponse(erabResponse); |
| bearerAdmissionResponse.setNumErabList(numErabs); |
| |
| XrancPduBody body = new XrancPduBody(); |
| body.setBearerAdmissionResponse(bearerAdmissionResponse); |
| |
| BerUTF8String ver = null; |
| try { |
| ver = new BerUTF8String("2.0"); |
| } 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; |
| } |
| } |