X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2FE2AP-c%2Fe2ap_indication.cc;h=d0b262e215b8dd3a2a9b2eda5d6d5cd6fdba6bc8;hb=refs%2Fchanges%2F72%2F2072%2F1;hp=237c80cfde720c1d02202da32b74cfda0afc528b;hpb=dc68642f5676cdd49f3ef92f983b319e21f16afa;p=ric-app%2Fadmin.git diff --git a/src/E2AP-c/e2ap_indication.cc b/src/E2AP-c/e2ap_indication.cc index 237c80c..d0b262e 100644 --- a/src/E2AP-c/e2ap_indication.cc +++ b/src/E2AP-c/e2ap_indication.cc @@ -25,11 +25,11 @@ #include -// Set up the initiating message and also allocate protocolIEs in container -// Note : this bypasses requirement to use ASN_SEQUENCE_ADD. We can directly -// assign pointers to the array in ProtocolIE. However, this also leaves us on the -// hook to manually clear the memory - +// Set up memory allocations for each IE for encoding +// We are responsible for memory management for each IE for encoding +// Hence destructor should clear out memory +// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called +// for releasing memory by external calling function) ric_indication::ric_indication(void){ e2ap_pdu_obj = 0; @@ -199,6 +199,20 @@ bool ric_indication::set_fields(E2N_InitiatingMessage_t *initMsg, ric_indication ricmsg_ie->size = dinput.indication_msg_size; ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + // optional call process id .. + if (dinput.call_process_id_size > 0){ + ie_index = 7; + E2N_RICindication_IEs_t *ies_ind_callprocessid = &IE_array[ie_index]; + ies_ind_callprocessid->criticality = E2N_Criticality_reject; + ies_ind_callprocessid->id = E2N_ProtocolIE_ID_id_RICcallProcessID; + ies_ind_callprocessid->value.present = E2N_RICindication_IEs__value_PR_RICcallProcessID; + E2N_RICcallProcessID_t *riccallprocessid_ie = &ies_ind_callprocessid->value.choice.RICcallProcessID; + riccallprocessid_ie->buf = dinput.indication_msg; + riccallprocessid_ie->size = dinput.indication_msg_size; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + } + return true; }; @@ -249,6 +263,10 @@ bool ric_indication:: get_fields(E2N_InitiatingMessage_t * init_msg, ric_indica case (E2N_ProtocolIE_ID_id_RICactionID): dout.action_id = memb_ptr->value.choice.RICactionID; break; + + case (E2N_ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; default: break;