#include <e2ap_indication.hpp>
-// 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;
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;
};
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;